PB程式設計通俗快速入手
程式的開始,application的open事件。
退出程式例程:halt為退出函式
int SureQuit
SureQuit = 2
SureQuit=Messagebox("退出系統","退出前請確認已儲存好資料",Question!,OKCancel!, 2)
if SureQuit = 1 then halt
2、 變數定義有效範圍:
◎ declare-globe 全域性變數,整個程式均有效
◎ declare-instance 區域性變數,可在一個物件中有效(如:窗體,APP等)
◎ 模組中定義的變數,可在當前模組中有效
定義:(PB中大小寫不敏感)
constant string LS_HOMECITY = "Boston" 常量
int a 整型
char c 字元型
Boolean b 布林型
String a 字串型
String a[1000] 1000的陣列,0~1000
String a[3 to 30] 陣列元素為3到30,最初一個為a[3],最後一個為a[30]
String a [100,3to 30] 二維陣列,一維為0~100,二維為3 到30
String a[] 變長陣列,賦值時(如a[30]=333)自動分配記憶體。
得到上界UPPERBOUND,下界LOWERBOUND。
操作:
a=”aaaa”+”vvvbb”+b+c
string(b) 將B轉換成字串型
integer(“333333333333”) 將“333333333333”字串轉換成數333333333333
a=a+b*c^d/ef%g
◎注意:減號前後要空格,用於避免PB7.0之前版本的BUG。
3、 函式定義:
第一行是返回型別和函式名,第二行是變數型別和變數名,tab鍵加形參。
Return 是函式的返回,同時如C語言一樣,return則函式執行結束
4、 開啟視窗
open(視窗名)
openwithparm(視窗名,引數,父視窗)
5、 MDI窗體中開啟子窗體
層疊樣式開啟 opensheet(子窗體,父窗體名,1,layered!)
平鋪樣式開啟 opensheet(子窗體,父窗體名,1, Original!)
如果在父窗體的窗體級函式下編寫,可用 opensheet(子窗體,this,1, Original!)
第三個參數列示新開窗體在父窗體選單中的位置。
6、 控制元件基本屬性
控制元件名.x x座標
控制元件名.y Y座標
控制元件名.width 寬
控制元件名.height 高…… (其他可參見編輯器中的屬性視窗)
7、 調整窗體模式
this.windowstate=maximized!
窗體.windowstate=maximized! 窗體最大化(其他可參見編輯器中的屬性視窗)
8、 INI檔案讀取及寫入
【舉例】有名為“MNR.INI”的ini檔案,(路徑在程式所在目錄)有資料如下:
[ACTION]
PRELOAD=YES
可以用如下語句讀取:
a=ProfileString("MNR.INI","ACTION","PRELOAD","aaa")
a為變數,”aaa”為無此資料項時預設資料
可以用如下語句寫入(寫入值為yes):
setprofilestring("MNR.INI","ACTION","PRELOAD","YES")
9、 對於整個程式中都要用到的變數
可以先定義一個結構,再在globe declare中定義該結構型別變數,管理起來方便些
10、 主要語法單元
條件判斷
if 怎樣 then
怎樣做
else if 怎樣 then
怎樣做
end if
choose case 變數
case is <3
…
case 4 to 7
…
case else
…
end choose
迴圈到A大於5
DO
A=a+1
LOOP UNTIL A > 5
DO WHILE A <= 5
A = A + 1
LOOP
DO
A=a+1
LOOP UNTIL A > 5
DO UNTIL A > 5
A = A + 1
LOOP
跳出迴圈EXIT,繼續下一輪迴圈CONTINUE
11、 訊息框
messagebox(標題,資訊) 其他看幫助,查索引messagebox
12、取得當前時間now()
sle_begintime.text=string(now(),"yyyy-mm-dd 10:00:00")
如現在是 2002-7-14 17:22:21秒,則輸出為 2002-7-14 10:00:00
13、列表框應用
DDLB_BSC.RESET() 清空列表框內容
I=1
DO WHILE I<=UpperBound(WINBSC)
IF WINBSC[I]="" THEN EXIT;
DDLB_BSC.ADDITEM(WINBSC[I]) 增加內容項到列表框
I=I+1
LOOP
第二章 應用資料庫
1、 datawindow控制元件的使用
先建立一個datawindow物件dw_hwtj,再在窗體中新增一個datawindow控制元件dw_rep,最後將datawindow的dataobject屬性設定成dw_hwtj。
a)我寫的選行函式,datawindow控制元件的click事件上用
if row=0 then return
if nowrow<>row and nowrow>=0 then
THIS.SELECTROW(nowROW,false)
end if
THIS.SELECTROW(ROW,TRUE)
nowrow=row
b)我寫的排序函式,在datawindow控制元件的雙擊事件上用
IF dwo.Type = "column" THEN
ls_columnname = dwo.Name
END IF
if nowstate='A' then
THIS.SETSORT(ls_columnname+" D")
NOWSTATE='D'
ELSE
THIS.SETSORT(ls_columnname+" A")
NOWSTATE='A'
END IF
THIS.SORT()
(效果,在某一列上雙擊一次,正向排序,再一次,反向排序)
c)規定排序
dw_rep.setsort("BSCMC A,XQH A,xqmc A")
dw_rep.sort()
(先按BSCMC,再按XQH,再按xqmc正向排序)
d)儲存到xls檔案
dw_rep.saveas('',Excel5!,true)
e)讀寫:
寫w_netrep_cell.dw_rep.object.tchpzzs[I] =a
讀a=w_netrep_cell.dw_rep.object.tchpzzs[I]
2、 建立與資料庫的連線
1)定義
transaction localdb
2)設定
MyTrans.DBMS=”as”
MyTrans.Database=”sda”
MyTrans.LogPass=”def”
MyTrans.ServerName=”dbo”
MyTrans.LogID=”abc”
MyTrans.DBParm=””
MyTrans.Lock=””
MyTrans.UserID=”abc”
MyTrans.AutoCommit =true
3)連線
連線 connect using localdb;
斷開 disconnect using localdb;
4)從庫中查詢多行資料:(查詢語句被固化)
connect using localdb; //連線
if localdb.SQLCODE<0 then
Messagebox("連線本地資料庫失敗...",localdb.sqlerrtext)
return 1
end if
DECLARE MY_CURSOR CURSOR FOR //定義遊標
SELECT BSC from BSC ORDER BY BSC USING LOCALDB; //執行查詢
I=1;
OPEN MY_CURSOR; //開啟遊標
DO WHILE NOT LOCALDB.SQLCODE = 100 //直到結束
IF I>UpperBound(WINBSC) THEN EXIT
FETCH MY_CURSOR INTO :WINBSC[I]; //提取資料項
I=I+1
LOOP
CLOSE MY_CURSOR; //關閉遊標
disconnect using localdb; //斷開
5)從庫中查詢一行資料:(查詢語句被固化)HELP中例程,“:“後加一個字串是指標誌為該字串的變數
SELECT employee.Emp_LName, employee.Emp_FName
INTO :Emp_lname, :Emp_fname
FROM Employee
WHERE Employee.Emp_nbr = :Emp_num
USING Emp_tran ;
6)在資料更新,刪除,增加,建表等操作中使用的:
注意查閱:Dynamic SQL Format 1 statement ……Dynamic SQL Format 4 statement,其中講得很清楚(看sample)
直接執行一條語句:
EXECUTE IMMEDIATE SQLStatement {USING TransactionObject} ;
HELP中講得很清楚,這裡就不多講了。
7)非固化的查詢語句:這個對提高軟體靈活性很重要,但很簡單,只貼上HELP中的SAMPLE一個:
DECLARE my_cursor DYNAMIC CURSOR FOR SQLSA
string sql1, sql2
sql1 = "SELECT emp_id FROM department WHERE salary > 90000"
sql2 = "SELECT emp_id FROM department &
WHERE salary > 20000"
IF deptId = 200 then
PREPARE SQLSA FROM :sql1 USING SQLCA ;
ELSE
PREPARE SQLSA FROM :sql2 USING SQLCA ;
END IF
OPEN DYNAMIC my_cursor ;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10957369/viewspace-965853/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【PB】PB程式設計通俗快速入手程式設計
- 少兒程式設計如何入手?程式設計
- 從碼農到設計者,從單例模式入手設計程式碼單例模式
- JUC併發程式設計詳解(通俗易懂)程式設計
- 通俗 Python 設計模式——原型設計模式Python設計模式原型
- 通俗解釋什麼是響應式程式設計?程式設計
- DB|Redis快速入手,NET起跑Redis
- Spring(3)-AOP快速入手Spring
- Delphi之快速設計(程式設計篇) (轉)程式設計
- 通俗易懂的設計模式設計模式
- 快速學會 shell 程式設計程式設計
- 最通俗易懂的 Swift 函數語言程式設計Swift函數程式設計
- 零基礎想學IT程式設計從哪入手效果好?程式設計
- 好程式設計師Java分享JVM從哪方面入手學習程式設計師JavaJVM
- 深圳Javaweb學習:程式設計師對程式設計名詞的通俗理解:假設你是個妹子JavaWeb程式設計師
- PB程式設計:鍵盤enter預設觸發和介面開啟預設輸入程式設計
- 程式設計師快速睡眠攻略 失眠程式設計師的福音程式設計師
- 通俗 Python 設計模式——代理模式Python設計模式
- 如何通俗理解設計模式及其思想?設計模式
- 通俗 Python 設計模式——工廠模式Python設計模式
- 通俗 Python 設計模式——外觀模式Python設計模式
- 通俗 Python 設計模式——建造者模式Python設計模式
- 通俗 Python 設計模式——享元模式Python設計模式
- 快速瞭解非同步程式設計 RxJava非同步程式設計RxJava
- Go語言程式設計快速入門Go程式設計
- 程式設計師的晉級之路:程式設計師如何快速工資翻倍?程式設計師
- 好程式設計師Java培訓分享如何快速入門Java程式設計程式設計師Java
- <<快速入手Rust>>14.HashMap和其他集合RustHashMap
- 教你如何打好根基快速入手react,vue,nodeReactVue
- 通俗解釋什麼函式程式設計中的函子Functors? - iRi函式程式設計
- 通俗 Python 設計模式——介面卡模式Python設計模式
- 可以從哪裡入手Python程式設計 怎麼專業學習PythonPython程式設計
- Python快速程式設計入門課後程式題答案Python程式設計
- 教你不程式設計快速解析 JSON 資料程式設計JSON
- Java網路程式設計快速上手(SE基礎)Java程式設計
- 快速使用 vscode 進行 Java 程式設計VSCodeJava程式設計
- 程式設計師快速適應新工作的方法程式設計師
- 小程式新手 教你如何入手