1、powerScript的語法數據庫
1.0變量的命名及使用express
powerscript的標識符(變量名稱)必須以字母或下劃線開頭,其它的字符能夠是下劃線(_)、短橫線(-)、美圓符號($)、號碼符號(#) 、百分號(%)。windows
1.1.最長40個字符(實際能夠更長),中間不能有空格數組
1.2.保留字不能用做標識符(變量名稱)。ide
1.3 標識符不區分大小寫,如:PART、part、Part表示同一個標識符函數
1.4 特殊符號表示oop
換行符 ~npost
回車 ~r測試
製表 ~tui
豎直製表符 ~v
換行 ~f
退格 ~b
波浪號 ~~
單引號 ~'
雙引號 ~""
2.Null(空值)
null是powerbuild與數據庫交換數據時使用的一種特殊值,表示數據未定義、不肯定,它與空字符串、數值零、以及日期00-00-00的意義徹底不一樣。
powerscript的全部數據類型都支持null,將變量賦null的方法有兩個,
2.1.從數據庫中讀到空值
2.2.使用SetNull函數賦值,例:String person="";
SetNull(person);將person變量的值設置爲 null
測試變量是否爲null時,使用函數IsNull(),例:IF IsNull(a) THEN,不能使用 IF a=NULL THEN,由於空值不等於任何值,也不等於另外一個空值。
3.powerScript中斷行、續行與多條語句
3.0 powerScript中的續行符號"&",它放在一行的末尾指示下一行是當前行的繼續,例如:
把語句MessageBox("SQL語句出錯","出錯號="+String(SQLCA.SQLCode))寫成兩行
MessageBox("SQL語句出錯","出錯號="+&
String(SQLCA.SQLCode))
可是不能在保留字或標識符(變量名)的中間續行,例如:
MessageBox("SQL語句出錯","出錯號="+String(SQL&
CA.SQLCode))
若是想一行中寫多條語句能夠用分號進行分隔例:
a=b+c;g=q-m;
4.powerScript中的註釋
4.0 單行註釋"//",多行註釋"/* */",例: // 這是一條註釋
/* 我是註釋多行的*/
5.對象、屬性、函數和事件的引用方法
5.0對象屬性的使用
對象名.屬性名,例如:UserEnter=sle_name.Text,sle_name單行文本編輯框的名稱,Text是其屬性
5.1函數和事件的訪問方式
[objectname.][type][calltype][when]functionname([argumentlist))
objectname對象名稱
type 類型的取值爲Function或Event,用於指明訪問的是函數仍是事件,默認是Function
calltype 用於指明powerbuilder查找函數的時機,有效取值爲:static(默認值)編譯時查找函數,若是不存在,則產生編譯錯誤
dynamic程序運行時查找函數,若是不存在,則產生編譯錯誤。
when用於指明函數或事件是當即執行仍是當前程序段執行完以後執行,取值爲trigger(默認值)當即執行,post當前程序段執行完以後再執行
functionname是指調用的函數或事件的名稱,argumentlist是調用函數或事件的參數
例如:把焦點移到單行編輯框中 sle_name.SetFocus()
給按鈕添cb_name加單擊事件,cb_name.EVENT Trigger Clicked()
6.代詞的使用(This、Parent、ParentWindow、Super)
6.0 This表示正在爲之編寫事件處理程序的對象
6.1 Parent表示當前控件所在的窗口,例如:窗口w_win中有個按鈕cb_close,其做用是單擊該按鈕關閉窗口w_win,咱們能夠在按鈕的Clicked事件處理中寫上close(w_win),或close(Parent)
6.2 ParentWindow表示運行時菜單所在的窗口,該代詞只能在菜單的事件中使用,例如,關閉菜單的Clicked事件中寫上 close(ParentWindow)
6.3 Super調用父對象的Clicked事件處理程序
CALL Super ::Clicked
調用在子類重載的父的函數f_func()
Super:: f_func()
7.powerScript中的數據類型
Blod 表示二進制對象,用於存儲大量數據,例如圖象、大文本等。
Boolean 布爾開型,取值爲true或false
Character或Char 單個ASCII字符
Date 表示日期,包括年(1000-3000)、月(01-12)、日(01-31)
Datetime 表示日期及時間,僅用於訪問數據的Datetime類型數據
Decimal或Dec 表示帶符號十進制數,最大18位精度
Double 表示帶符號的浮點數,15位有效數字
Integer或Int 表示16位帶符號整數
Long 表示32位帶符號整數
Real 表示帶符號浮點數,精度6位
String 表示字符串類型,用於存儲字符,長度爲0-60000
Time 表示小時,24小時制的時間,小時(00-23)、分(00-59)、秒(00-59)
UnsignedInteger或UnsignedInt或Uint 表示16位無符號整數
UnsignedLong或Ulong 表示32位無符號整數
7.0.any數據類型
any是一種可變的數據類型,程序中給它什麼類型的值,它將變成什麼類型,any類型能夠接受標準數據類型,結構數據類型、對象及數組等各類類型
判斷any保存的是什麼數據類型,可使用ClassName函數
8.變量的聲明
數據類型 變量名稱,例如:Integer i,a,b
Blob類型的變量聲明,Blob[{大小}] 變量名,Blob的默認長度爲0,系統會根據實際數據的長度自動調整其長度。例如:blob{100} temp_pic //表示長度爲100的 blob類型變量
blob ib_picture表示一個默認長度爲0的blob變量
Decimal類型的變量聲明
Dec|Decimal [{精度}] 變量名,精度是指小數點以後的位數,若是沒有指定,則以賦值時的精度爲準.
數組的聲明
數據類型 數組名稱 [大小]
Integer person[30],real lr_array[10,10]聲明一個二維數組,real lr_array1[3]={1.2,3.2,3.5}
常量的聲明
CONSTANT 數據類型 常量名=常量值,constant能夠聲明除blob以外的任意標準數據類型
9.變量的做用域
變量的做用域有如下四種:
1. 全局變量
能夠在整個程序內訪問。
2.共享變量
在一個對象內定義,能夠在對象內部的任何地方使用,同一個類的全部實例共享一個共享變量。
3.實例變量
在一個對象內定義,只能在這個對象內部使用
4.局部變量
就是在腳本層定義的變量,只能用於腳本層,且在腳本層的末尾被刪除
變量的優先級:局部變量、實例變量、全局變量、共享變量
10.存儲過程的聲明及使用
10.0 存儲過程按返回值分爲兩類,一類 有返回值,咱們把它當作函數;另外一類沒有返回值,咱們稱做過程。函數型存儲過程使用function關鍵字,過程型存儲過程使用subroutine關鍵字。
函數型存儲過程的聲明語法爲:
function rtndatatype functionname ({{ref} datatype1 arg1,...{ref} datatypen argn }) rpcfunc{ alias for "spname" }
rtndatatype返回值類型
functionname函數名稱
ref關鍵字指明函數是傳引用,省略該關鍵字則表示傳值
datatype arg 表示參數的數據類型和參數名稱
rpcfunc 關鍵字說明是數據庫的存儲過程說明,而不是動態鏈接庫中外部函數的說明
alias for 關鍵字是給存儲過程起別名,"spname"是別名的名稱
例:
function double give_raise(ref double salary) rpcfunc alias for "give_raise_proc"
調用存儲過程,double val=2000,double rv
rv=SQLCA.give_raise_proc(val)
11.變量的默認值
blob 默認爲0
char 或character 默認值爲0
boolean 默認值爲 false
Date 默認值是1900-01-01
DateTime 默認值是 1900-01-01 00:00:00
數值類型(int,long,decimal,real,double,unsignedinteger,unsignedLong) 默認值爲0
String 默認值是 空字符串("")
Time 默認值 00:00:00
12.條件語句
12.0 if語句
12.1 單行 if ...then 格式爲
if cond then action1
else action2
當cond爲true時 執行action1,不然執行action2
12.2 多行 if ...then 格式爲
if condition1 then action1
elseif condition2 then action2
else action3
end if
例:if parentCorrect>=90 then
grade="a"
elseif parentCorrect>=80 then
grade="b"
elseif parentCorrect>=70 then
grade="c"
elseif parentCorrect>=60 then
grade="d"
else
grade="d"
end if
13. choose case 語句
choose case testexpression
case expressionlist
statementblock
case expressionlist
statementblock
case else
statementblock
end choose
testexpression 是測試表達式,expressionlist是判斷表達式,statementblock是執行語句塊
判斷表達式可使用以下的形式:
是用逗號分隔的數據,例如:2,4,7
用To 表示一個區間範圍,例如:2 To 15
用IS 表明測試值,後跟關係運算符和比較值,例如:IS>30
例:
choose case parentCorrect
case IS >=90
grade="A"
case 80 To 89
grade="B"
case 70 To 79
grade="C"
case 60 To 69
grade="D"
case else
grade="E"
end choose
14. 循環語句
14.1 do...loop循環
do... loop 循環提供了四種形式,分別爲:
do until codition...loop
do while condition...loop
do ... loop until condition
do ... loop while condition
do 表示循環的開始,loop 表示循環的結束,condition表示循環條件,是邏輯表達式,其值爲true或false
do until condition ... loop的語法格式爲:
do until condition
statements
loop
condition條件爲false則執行 statemets語句,接着檢查條件,直到爲true時退出循環
do while condition ... loop的語法格式爲:
do while condition
statements
loop
condition執行條件爲true時則執行statements語句,接着檢查條件,直到爲false時退出循環
do... loop until condition的語法格式爲:
do
statements
loop until condition
do ... loop while condition的語法格式爲:
do
statements
loop while condition
14.2 for ...next循環
for ...next是循環次數肯定的循環結構,使循環體的語句執行規定的次數
for varname=start to end [step increment]
statements
next
varname是循環變量,能夠爲任意的數值,start,end分別爲循環變量的初始值和終止值,increment是每次循環後循環變量的步長增量,默認是1
例:
int ii_aar[50]
int sum
int i
for i=1 to 50
sum+=ii_aar[i]
next
15.Call語句的使用
call語句用來調用祖先對象的事件或祖先對象的控件上的事件
Call語句的語法爲:
call ancestorobject {controlname} ::event {(argumentlist)}
ancestorobject是祖先對象的名稱
controlname 事件名稱
event 指定要調用的事件名稱
argumentlist 指定事件參數,參數類型、個數由具體事件肯定。若是事件要求參數,調用時沒有提供參數,系統將默認設置參數值爲NULL
例:調用祖先窗口的Open事件
Call w_emp::open
調用祖先窗口上命令按鈕cb_close的click事件處理
Call w_emp cb_close :: Clicked
16. MessageBox函數的使用
MessageBox 函數經常使用於顯示出錯、警告及其它重要的信息,其語法格式爲:
MessageBox(title,text{,Icon{,Button{,Default}}})
大括號中的部分能夠省略,title表示標題,text是指顯示在窗口的文本。
Icon指定在窗口中顯示的圖標,是枚舉類型,取值爲:
Information!、StopSign!、Exclamation!、Quetion!、None!
Information是Icon的默認值
Button參數指定在窗口中顯示哪些按鈕,有效取值爲:
OK! "肯定"按鈕
OKCance! "肯定"、"取消"按鈕
YesNo! "是"、"否"按鈕
YesNoCancel "是"、"否"、"取消"按鈕
RetryCancel! "重試"、"取消" 按鈕
AbortRetryIgnore! 「終止"、"重試"、"忽略" 按鈕
Default 參數指定哪一個按鈕是默認按鈕,即用戶按下鍵盤上的Enter鍵時,執行哪一個按鈕的
clicked事件,用戶數字一、二、3表示,默認是1
MessageBox的返回值是用戶按下的 按鈕序號,經過判斷返回值可以知道用戶按了哪一個按鈕
例:li_rc=MessageBox('保存修改','你修改了數據窗口的數據,如今是否保存?',&
Quetion!,YesNoCancel!)
17. 數據類型轉換
17.1字符串轉換成數值類型
Integer(String),將字符串轉換成Integer
Long(String),將String轉換成Long
Real(String),將String轉換成Real
Double(String),將String轉換成Double
Dec(String),將String轉換成Dec
17.2 數值類型轉換成字符串
String(number,format),number是任意一種數值類型, format是轉換後的格式
例:amount=12345678,String(amount,'$###,##0.00') 轉換後爲$123,456.78
18.運行其它應用程序的Run
其語法格式爲:Run(String{,windowstate})
windowstate的取值爲Maximized、Minimized、Normal
Run執行成功返回一、不然返回-1
1八、設置焦點函數SetFocus
19. SQL語句介紹
1.創建和斷開數據庫的鏈接,使用connect
語法格式爲:
connect {using transactionobject}
transactionobject表示事務對象,若是省略則默認使用SQLCA
斷開數據庫鏈接語法爲:
disconnect {using transactionobject}
2.提交與回滾事務
提交事務的語法爲:
commit {using transactionObject}
回滾事務的語法爲:
rollback {using transactionObject}
3.單行查詢語句select
語法格式:
select fieldlist into varlist from tableList
where criteria {using transactionObject}
例:int emp_num
select employee.Emp_Lname,employee.Emp_name
into :sle_Lname.Text, :sle_Fname.Text
from Employee
where employee.Emp_nbr= :emp_num