



下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
動態(tài)創(chuàng)建數(shù)據(jù)窗口在實際應(yīng)用中,經(jīng)常需要根據(jù)用戶需求來動態(tài)創(chuàng)建數(shù)據(jù)窗,一般方法是這樣的。在一個window中加入一個數(shù)據(jù)窗控件,如dw_new但是該數(shù)據(jù)窗沒有dataobject,(空白的)就可以用以下語法來創(chuàng)建:dw_new.create(ls_syntax,ls_error)//創(chuàng)建語法,錯誤信息ls_syntax可以用以下三種方法來形成:一、 動態(tài)由sql語法創(chuàng)建://連接到pb的example數(shù)據(jù)庫stringls_sql,ls_syntax,ls_errorls_syntax='select*fromdepartment'ls_syntax=sqlca.SyntaxFromSQL(ls_sql,'style(type=grid)',ls_error)iflen(ls_error)>0thenmessagebox('Error','SyntaxFromSQLError:~r'+ls_error)elsedw_new.create(ls_syntax,ls_error)iflen(ls_error)>0thenMessageBox("Error","Createhavetheseerrors:~r"+ls_error)elsedw_new.settransobject(sqlca)dw_new.retrieve()endifendif二、 由另一個數(shù)據(jù)窗的syntax來創(chuàng)建stringls_syntax,ls_errorls_syntax=dw_test.describe('datawindow.syntax')dw_new.create(ls_syntax,ls_error)ifls_error''thenmessagebox('CreateError',ls_error)elsedw_new.settransobject(sqlca)dw_new.retrieve()endif三、 讀取psr文件來創(chuàng)建stringls_syntax,ls_error,ls_retls_ret=char(13)+char(10)//回車鍵intli_fileNumlongli_lengthli_FileNum=FileOpen("efef.psr",Streammode!,read!,shared!,Replace!)ifli_filenum>0thenFileSeek(li_FileNum,158,FromBeginning!)li_length=fileRead(li_filenum,ls_syntax)endiffileclose(li_filenum)ifli_length=0thenreturnls_syntax="release5;"+ls_ret+ls_syntax〃截掉ls_syntax中的數(shù)據(jù)部分,5.0以"sparse(names="dept_name?)"作為參考位置〃6.0以html(作為參考位置longpos1,pos2pos1=pos(ls_syntax,'sparse(names="',1)pos2=pos(ls_syntax,'"',pos1+16)ls_syntax=left(ls_syntax,pos1)+mid(ls_syntax,pos1+1,pos2-pos1+1)dw_New.create(ls_syntax,ls_error)ifls_error''thenmessagebox('CreateError',ls_error)elsedw_new.settransobject(sqlca)dw_new.retrieve()endif//pb6,pb7的代碼可以參照pb5自己寫,只是文件頭和數(shù)據(jù)窗結(jié)束標記不同而已。PowerBuilder用Create()函數(shù)創(chuàng)建動態(tài)數(shù)據(jù)窗口,其語法格式為:dw.Create(Syntax[,ErrString])其中:dw為需創(chuàng)建的動態(tài)數(shù)據(jù)窗口名;Syntax為創(chuàng)建動態(tài)數(shù)據(jù)窗口的語法字符串;ErrString為可選參數(shù),用來存放發(fā)生錯誤時的錯誤信息,若忽略,發(fā)生錯誤時系統(tǒng)自動顯示消息框,一般不符我們需要,所以需定義該參數(shù)。顯然重點在Syntax,PowerBuilder提供LibraryExport()與SyntaxFromSQL()二個函數(shù)來達到這個目的:一、 LibraryExport()函數(shù)功能:從PowerBuilder庫中輸出一個對象,返回該對象的語法。語法格式:LibraryExport(LibName,ObjName,ObjType)其中:LibName為帶路徑的PowerBuilder庫名,若未指定路徑,則按系統(tǒng)標準搜索路徑搜索;ObjName為導(dǎo)出對象名,現(xiàn)為LibName中的數(shù)據(jù)窗口對象名;ObjType為該對象的類型,現(xiàn)為數(shù)據(jù)窗口,值為ExportDataWindow!。示例如下:Stringls_DwSyntax,ls_Errorls_DwSyntax=LibraryExport("C:\PBExam\dy_dw.pbl","d_tbl1",ExportDataWindow!)//數(shù)據(jù)窗口dw_1的產(chǎn)生下面將詳細討論,現(xiàn)暫略dw_1.Create(ls_DwSyntax,ls_Error)//以下語句與下面示例中的相同,故此處略。LibraryExport()函數(shù)是利用已有的數(shù)據(jù)窗口對象創(chuàng)建動態(tài)數(shù)據(jù)窗口,有一定的使用價值,但不多見。二、 SyntaxFromSQL()函數(shù)功能:基于SQL的SELECT語句產(chǎn)生創(chuàng)建數(shù)據(jù)窗口的語法。語法格式:Transaction.SyntaxFromSQL(SqlString,StyleString,ErrorString)其中:Transaction.為已連接的事務(wù)對象,一般即為SQLCA;SqlString為SQL--SELECT語句;Stylestring為數(shù)據(jù)窗口的顯示風(fēng)格字符串,比較復(fù)雜,一般常用"Style(Type=Grid)";ErrorString用來存放發(fā)生錯誤時的錯誤信息。一般來說,SyntaxFromSQL()函數(shù)靈活性高、功能強,因此創(chuàng)建動態(tài)數(shù)據(jù)窗口大都使用該函數(shù),下面的示例也是使用該函數(shù)。三、創(chuàng)建動態(tài)數(shù)據(jù)窗口的一般步驟創(chuàng)建動態(tài)數(shù)據(jù)窗口的一般步驟如下:1、 在某窗口(如w_main)上用鼠標點建一個數(shù)據(jù)窗口控件(如dw_l),其DataObject為空。2、 構(gòu)造SyntaxFromSQL()函數(shù)的語法字符串。這是PowerBuilder動態(tài)數(shù)據(jù)窗口的關(guān)鍵,稍為復(fù)雜一些,具體做法請見下面實例。3、 用Create()函數(shù)創(chuàng)建動態(tài)數(shù)據(jù)窗口dw_1,并用SetTransObject()函數(shù)為其分配事務(wù)對象,具體做法請見下面實例。這種方法的主要缺點是必須在設(shè)計階段先建數(shù)據(jù)窗口控件,運行時無法增減,這對于一些較為特殊的應(yīng)用(如設(shè)計階段尚不知需幾個數(shù)據(jù)窗口)就不太適合了。那如何解決這個問題呢?經(jīng)過一番摸索并查閱了一些資料,終于找到了二種解決方法,現(xiàn)分別介紹如下: 1、創(chuàng)建一個標準可視數(shù)據(jù)窗口用戶對象u_d_samplePowerBuilder6.0/6.5中步驟為:點擊工具欄上的UserObject圖標,在彈出的SelectUserObject窗口中點擊New按鈕,出現(xiàn)NewUserObject窗口,雙擊其中Visual下的Standard圖標,在彈出的SelectStandardVisualType窗口中雙擊datawindow選項,即出現(xiàn)UserObject(Untitled)窗口,點擊工具欄上的Save圖標,彈出的SaveUserObject窗口,在UserObjects:中輸入u_d_sample回車即進入UserObject---u_d_sample窗口,關(guān)閉該窗口,標準可視數(shù)據(jù)窗口用戶對象u_d_sample即告建成。PowerBuilder7.0中步驟為:點擊工具欄上的New圖標,在彈出的New窗口中選擇Object頁面,雙擊其中的StandardVisual圖標,在彈出的SelectStandardVisualType窗口中雙擊datawindow選項,出現(xiàn)UserObject(Untitled)inheritedfromdatawindow窗口,將其右邊的Title欄中的none刪除,再點擊左邊空白區(qū),然后點擊工具欄上的Save圖標,以后的操作步驟與PowerBuilder6.0/6.5大致相同。至于PowerBuilder8.0則與PowerBuilder7.0大體相同,不再贅述。2、直接定義DataWindow型變量dw_1如下:DataWindowdw_1dw_1=CreateDataWindow其實第1種方法還須定義dw_1,形式如下:u_d_sampledw_1dw_1=Createu_d_sample//此句可省略這二種方法的關(guān)鍵都是使用OpenUserObject()函數(shù),其功能即為打開一個用戶對象,語法格式:w_name.OpenUserObject(ObjName[,x,y])其中ObjName為需打開的用戶對象名;x、y為用戶對象的打開位置,省略時值均為0。下面請見具體實例,該實例在Win98、PowerBuilder8.0/PowerBuilder7.0/PowerBuilder6.5下通過,ODBC數(shù)據(jù)源已配置,為FoxPro25(可根據(jù)需要使用其他數(shù)據(jù)庫),數(shù)據(jù)表為bb.dbf。請先建窗口w_main,在其Open事件中寫入以下代碼:(注意:PowerBuilder8.0中先須創(chuàng)建WorkSpace(*.pbw),其他操作基本同PowerBuilder7.0)//動態(tài)數(shù)據(jù)窗口dw_1創(chuàng)建實例stringlserr,lsSQLstr,lsDWsyntax,lserrCSQLCA.DBMS="ODBC"SQLCA.DBParm="ConnectString='DSN=FoxPro25'"http://本例使用FoxPro25數(shù)據(jù)庫,可根據(jù)需要用其他數(shù)據(jù)庫Connect;〃下面3條語句即為關(guān)鍵,若dw_l為鼠標點建請刪除這3條語句,否則會出錯。DataWindowdw_1//若采用數(shù)據(jù)窗口用戶對象u_d_sample,則可改為:u_d_sampledw_1dw_1=CreateDataWindow//若采用數(shù)據(jù)窗口用戶對象u_d_sample,此句應(yīng)去除。OpenUserObject(dw_1)//Select*…As…的As可將列標題顯示為As之后的字符,較為靈活方便。〃可根據(jù)實際情況設(shè)計生成Select語句及Where子句的可視化界面lsSQLstr="SelectA12As主管部門,A01As法人代碼,mcAs企業(yè)名稱,A06FrombbWhereA120Then〃如果構(gòu)造SyntaxFromSQL()函數(shù)失敗,則顯示錯誤信息并退出messagebox("錯誤信息!",lserr)Returnendifdw_1.Create(lsDwsyntax,lserrC)//創(chuàng)建動態(tài)數(shù)據(jù)窗口dw_1IfLen(lserrC)>0Then//如果創(chuàng)建動態(tài)數(shù)據(jù)窗口dw_1失敗,則顯示錯誤信息并退出messagebox("錯誤信息!",lserrC)Returnendif//以下設(shè)置dw_1的一
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 自動駕駛技術(shù)測試合作協(xié)議
- 《創(chuàng)新課程設(shè)計:物理游戲化教學(xué)法教案》
- 八年級英語語法知識總結(jié)與提升教學(xué)教案
- 鋼筋綁扎承包合同
- 阿甘正傳節(jié)選與人生哲學(xué)的思考:英語文學(xué)賞析教學(xué)教案
- 網(wǎng)絡(luò)安全風(fēng)險評估及防御合作協(xié)議
- 裝修工程區(qū)域消防安全協(xié)議書
- 航空航天材料科技知識重點梳理
- 數(shù)據(jù)空間發(fā)展戰(zhàn)略藍皮書內(nèi)容
- 知識產(chǎn)權(quán)授權(quán)轉(zhuǎn)讓與使用協(xié)議
- 無人機駕駛培訓(xùn)
- 2024年中煤電力有限公司所屬企業(yè)招聘29人筆試參考題庫附帶答案詳解
- DeepSeek介紹及其典型使用案例
- 2025年貴陽市貴安新區(qū)產(chǎn)業(yè)發(fā)展控股集團有限公司招聘筆試參考題庫附帶答案詳解
- 積極心理學(xué)視角下高職院校學(xué)生心理健康教育路徑研究
- 2025年內(nèi)蒙古建筑職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年??及鎱⒖碱}庫含答案解析
- 人教版五年級數(shù)學(xué)下冊全套試卷附完整答案
- 2025年春新人教版數(shù)學(xué)一年級下冊課件 第一單元 2.拼一拼
- 2024年網(wǎng)絡(luò)建設(shè)與運維選擇題理論試題題庫
- 四年級下冊勞動《小小快遞站》課件
- 終止供應(yīng)商協(xié)議書
評論
0/150
提交評論