【PB】PB程式設計通俗快速入手
第一章 一般使用
1、程式的開始,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/e\f%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、主要語法單元
A、條件判斷
if 怎樣 then 怎樣做 else if 怎樣 then 怎樣做 end if |
choose case 變數 case is <3 … case 4 to 7 … case else … end choose |
B、迴圈到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 ;
小結:
內容不多,但主要的東西都在這裡了,其他的要在實踐中領會,這些知識對上手和標準的MIS系統等開發,知識面及深度已經足夠了。SQL語句幫助中的已夠用,詳細講太多,恕不贅述。
相關文章
- 騰訊終止“黎明計劃”專案PB
- pb呼叫ole異常捕獲
- PB GetRow() 和 GetSelectRow(0) 的區別
- 阿里雲 PB 級 Kubernetes 日誌平臺建設實踐阿里
- 少兒程式設計如何入手?程式設計
- Crust “方舟計劃”播報# 2|儲存總量34PB!Rust
- SQL批量複製命令的六個陷阱PBSQL
- 業界 | 晶片群俠傳:Photobit PB-100晶片
- 【TcaplusDB知識庫】PB表 C++ 示例程式碼-更新資料C++
- 【TcaplusDB知識庫】PB表 C++ 示例程式碼-讀取資料C++
- 【TcaplusDB知識庫】PB表C++示例程式碼-刪除資料C++
- 三個月我遷移了100PB資料
- Mxnet模型檔案轉換為Pb模型檔案模型
- PB級資料持久化快取系統——lest持久化快取
- 有沒有對測試 PB 統計自動化研究的小夥伴
- 【PB案例學習筆記】-04檔案瀏覽器筆記瀏覽器
- 【PB案例學習筆記】-05 圖片瀏覽器筆記瀏覽器
- 【PB案例學習筆記】-02 目錄瀏覽器筆記瀏覽器
- ES(Elasticsearch)支援PB級全文搜尋引擎入門教程Elasticsearch
- [20210113]給PB開發人員的一個建議.txt
- PB 級資料處理挑戰,Kubernetes如何助力基因分析?
- GooglePhotos上線一年照片儲存達13.7PBGo
- 從碼農到設計者,從單例模式入手設計程式碼單例模式
- JUC併發程式設計詳解(通俗易懂)程式設計
- Uber基於Apache Hudi構建PB級資料湖實踐Apache
- Netflix 如何預熱快取?利用EBS移動PB級資料快取
- PB帶引數帶結果集的動態SQL查詢SQL
- 4.5PB!杉巖物件儲存中標天威視訊“中心儲存系統建設”物件
- C++資料結構和pb資料結構的轉換C++資料結構
- PB 級大規模 Elasticsearch 叢集運維與調優實踐Elasticsearch運維
- 如何做PB級大資料線上分析?看阿里實踐大資料阿里
- Spring(3)-AOP快速入手Spring
- 【PB案例學習筆記】-03使用者名稱密碼校驗筆記密碼
- Python 如何連線並操作 AWS 上 PB 級雲資料倉儲 RedshiftPython
- 通俗易懂的設計模式設計模式
- 深圳Javaweb學習:程式設計師對程式設計名詞的通俗理解:假設你是個妹子JavaWeb程式設計師
- 好程式設計師Java分享JVM從哪方面入手學習程式設計師JavaJVM
- 零基礎想學IT程式設計從哪入手效果好?程式設計
- DB|Redis快速入手,NET起跑Redis