亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

PowerBuilder創(chuàng)建動(dòng)態(tài)數(shù)據(jù)窗口

系統(tǒng) 2350 0

  PowerBuilder用Create()函數(shù)創(chuàng)建動(dòng)態(tài)數(shù)據(jù)窗口,其語法格式為:
dw.Create(Syntax[,ErrString])?

  其中:dw為需創(chuàng)建的動(dòng)態(tài)數(shù)據(jù)窗口名;Syntax為創(chuàng)建動(dòng)態(tài)數(shù)據(jù)窗口的語法字符串;ErrString為可選參數(shù),用來存放發(fā)生錯(cuò)誤時(shí)的錯(cuò)誤信息,若忽略,發(fā)生錯(cuò)誤時(shí)系統(tǒng)自動(dòng)顯示消息框,一般不符我們需要,所以需定義該參數(shù)。

  顯然重點(diǎn)在Syntax, PowerBuilder提供LibraryExport()與SyntaxFromSQL()二個(gè)函數(shù)來達(dá)到這個(gè)目的:

  一、 LibraryExport()函數(shù)

  功能:從PowerBuilder庫中輸出一個(gè)對象,返回該對象的語法。

  語法格式:LibraryExport(LibName,ObjName,ObjType)

  其中:LibName 為帶路徑的PowerBuilder庫名,若未指定路徑,則按系統(tǒng)標(biāo)準(zhǔn)搜索路徑搜索;ObjName為導(dǎo)出對象名,現(xiàn)為LibName中的數(shù)據(jù)窗口對象名;ObjType為該對象的類型,現(xiàn)為數(shù)據(jù)窗口,值為ExportDataWindow!。示例如下:

  String ls_DwSyntax,ls_Error
  ls_DwSyntax=LibraryExport("C:\PBExam\dy_dw.pbl","d_tbl1", ExportDataWindow!)
  //數(shù)據(jù)窗口dw_1的產(chǎn)生下面將詳細(xì)討論,現(xiàn)暫略
  dw_1.Create(ls_DwSyntax,ls_Error)
  //以下語句與下面示例中的相同,故此處略。

LibraryExport()函數(shù)是利用已有的數(shù)據(jù)窗口對象創(chuàng)建動(dòng)態(tài)數(shù)據(jù)窗口,有一定的使用價(jià)值,但不多見。

  二、 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ā)生錯(cuò)誤時(shí)的錯(cuò)誤信息。

  一般來說,SyntaxFromSQL()函數(shù)靈活性高、功能強(qiáng),因此創(chuàng)建動(dòng)態(tài)數(shù)據(jù)窗口大都使用該函數(shù),下面的示例也是使用該函數(shù)。

  三、創(chuàng)建動(dòng)態(tài)數(shù)據(jù)窗口的一般步驟

  創(chuàng)建動(dòng)態(tài)數(shù)據(jù)窗口的一般步驟如下:

  1、在某窗口(如w_main)上用鼠標(biāo)點(diǎn)建一個(gè)數(shù)據(jù)窗口控件(如dw_1),其DataObject為空。

  2、構(gòu)造SyntaxFromSQL()函數(shù)的語法字符串。這是PowerBuilder動(dòng)態(tài)數(shù)據(jù)窗口的關(guān)鍵,稍為復(fù)雜一些,具體做法請見下面實(shí)例。

  3、用Create()函數(shù)創(chuàng)建動(dòng)態(tài)數(shù)據(jù)窗口dw_1,并用SetTransObject()函數(shù)為其分配事務(wù)對象,具體做法請見下面實(shí)例。

  這種方法的主要缺點(diǎn)是必須在設(shè)計(jì)階段先建數(shù)據(jù)窗口控件,運(yùn)行時(shí)無法增減,這對于一些較為特殊的應(yīng)用(如設(shè)計(jì)階段尚不知需幾個(gè)數(shù)據(jù)窗口)就不太適合了。那如何解決這個(gè)問題呢?經(jīng)過一番摸索并查閱了一些資料,終于找到了二種解決方法,現(xiàn)分別介紹如下:

  1、創(chuàng)建一個(gè)標(biāo)準(zhǔn)可視數(shù)據(jù)窗口用戶對象u_d_sample

  PowerBuilder6.0/6.5中步驟為:點(diǎn)擊工具欄上的UserObject圖標(biāo),在彈出的Select User Object窗口中點(diǎn)擊New按鈕,出現(xiàn)New User Object窗口,雙擊其中Visual下的Standard圖標(biāo), 在彈出的Select Standard Visual Type窗口中雙擊datawindow選項(xiàng),即出現(xiàn)User Object(Untitled)窗口, 點(diǎn)擊工具欄上的Save圖標(biāo),彈出的Save User Object窗口,在User Objects: 中輸入u_d_sample回車即進(jìn)入U(xiǎn)ser Object---u_d_sample窗口,關(guān)閉該窗口,標(biāo)準(zhǔn)可視數(shù)據(jù)窗口用戶對象u_d_sample即告建成。

  PowerBuilder7.0中步驟為:點(diǎn)擊工具欄上的New圖標(biāo),在彈出的New窗口中選擇Object頁面,雙擊其中的Standard Visual圖標(biāo), 在彈出的Select Standard Visual Type窗口中雙擊datawindow選項(xiàng),出現(xiàn)User Object(Untitled)inherited from datawindow窗口,將其右邊的Title欄中的none刪除,再點(diǎn)擊左邊空白區(qū),然后點(diǎn)擊工具欄上的Save圖標(biāo),以后的操作步驟與PowerBuilder6.0/6.5大致相同。至于PowerBuilder8.0則與PowerBuilder7.0大體相同,不再贅述。

  2、直接定義DataWindow型變量dw_1如下:

  DataWindow dw_1
  dw_1=Create DataWindow

  其實(shí)第1種方法還須定義dw_1,形式如下:

  u_d_sample dw_1
  dw_1=Create u_d_ sample //此句可省略

  這二種方法的關(guān)鍵都是使用OpenUserObject()函數(shù),其功能即為打開一個(gè)用戶對象,語法格式:w_name.OpenUserObject(ObjName[,x,y]) 其中ObjName為需打開的用戶對象名;x、y為用戶對象的打開位置,省略時(shí)值均為0。

  下面請見具體實(shí)例, 該實(shí)例在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)


//動(dòng)態(tài)數(shù)據(jù)窗口dw_1創(chuàng)建實(shí)例
  string lserr,lsSQLstr,lsDWsyntax,lserrC
  SQLCA.DBMS="ODBC"
  SQLCA.DBParm="ConnectString='DSN=FoxPro25'" //本例使用FoxPro25數(shù)據(jù)庫,可根據(jù)需要用其他數(shù)據(jù)庫
  Connect;
  //下面3條語句即為關(guān)鍵,若dw_1為鼠標(biāo)點(diǎn)建請刪除這3條語句,否則會(huì)出錯(cuò)。
  DataWindow dw_1 //若采用數(shù)據(jù)窗口用戶對象u_d_sample,則可改為:u_d_sample dw_1
  dw_1=Create DataWindow //若采用數(shù)據(jù)窗口用戶對象u_d_sample,此句應(yīng)去除。
  OpenUserObject(dw_1)
  //Select…As…的As可將列標(biāo)題顯示為As之后的字符,較為靈活方便。
  //可根據(jù)實(shí)際情況設(shè)計(jì)生成Select語句及Where子句的可視化界面
  lsSQLstr="Select A12 As 主管部門,A01 As 法人代碼,mc As 企業(yè)名稱,A06 From bb Where A12<'1'"
  lsDwsyntax=SQLCA.SyntaxFromSQL(lsSQLstr,"style(type=Grid)",lserr) //構(gòu)造SyntaxFromSQL()函數(shù)
  If Len(lserr)>0 Then
  //如果構(gòu)造SyntaxFromSQL()函數(shù)失敗,則顯示錯(cuò)誤信息并退出
  messagebox("錯(cuò)誤信息!",lserr)
  Return
  end if
  dw_1.Create(lsDwsyntax,lserrC) //創(chuàng)建動(dòng)態(tài)數(shù)據(jù)窗口dw_1
  If Len(lserrC)>0 Then
  //如果創(chuàng)建動(dòng)態(tài)數(shù)據(jù)窗口dw_1失敗,則顯示錯(cuò)誤信息并退出
  messagebox("錯(cuò)誤信息!",lserrC)
  Return
  end if
  //以下設(shè)置dw_1的一些屬性,可根據(jù)實(shí)際需要設(shè)置。
  dw_1.X=5
  dw_1.Y=5
  dw_1.width=1500
  dw_1.height=650
  dw_1.Visible=True
  dw_1.Enabled=True
  dw_1.HScrollBar=True
  dw_1.VScrollBar=True
  //為dw_1分配事務(wù)對象SQLCA
  dw_1.SetTransObject(SQLCA)
  //提取數(shù)據(jù)
  dw_1.Retrieve()

  第2種方法的優(yōu)點(diǎn)大家一看即知,不必費(fèi)勁去創(chuàng)建一個(gè)標(biāo)準(zhǔn)可視數(shù)據(jù)窗口用戶對象,但存在不足之處:不能在窗口w_main的其他事件或控件中引用dw_1。解決方法很簡單:將dw_1定義為實(shí)例變量(Instance Variable)。PowerBuilder6.0/6.5中:在窗口畫筆(w_main)的菜單上點(diǎn)擊Declareà Instance Variables…,在彈出窗口Declare Instance Variables中輸入datawindow dw_1, 點(diǎn)擊Ok按鈕即告完成。PowerBuilder7.0/8.0中:打開窗口畫筆,在其下半部的窗口Declare Instance Variables中輸入datawindow dw_1, 點(diǎn)擊工具欄上的Save圖標(biāo)即告完成。

  三點(diǎn)補(bǔ)充說明:

  (一)、ODBC數(shù)據(jù)源設(shè)置

  打開Windows操作系統(tǒng)的"開始"菜單--à設(shè)置--à控制面板--àODBC數(shù)據(jù)源,出現(xiàn)"ODBC數(shù)據(jù)源管理器"窗口,在"系統(tǒng)DSN"頁簽中點(diǎn)擊"添加(D)…"按鈕,出現(xiàn)"創(chuàng)建新數(shù)據(jù)源"窗口,雙擊列表框中"Microsoft FoxPro Driver (*.dbf)"選項(xiàng)(或"Microsoft dBase Driver (*.dbf)"或"Microsoft FoxPro Driver (*.dbf)"或"Microsoft Visual FoxPro Driver"),現(xiàn)以"Microsoft dBase Driver (*.dbf)"為例(其他大同小異),即彈出"ODBC dBase安裝"窗口,在"數(shù)據(jù)源名稱"文本框中輸入FoxPro25,在"版本"下拉框中選擇dBaseⅢ,然后去掉"使用當(dāng)前目錄"前的√,點(diǎn)擊"選定目錄(S)…"按鈕,在彈出的"選定目錄"窗口中選擇您數(shù)據(jù)庫文件所在目錄,然后點(diǎn)擊"確定"按鈕即可。其他數(shù)據(jù)源可參照設(shè)置。

  (二)、PowerBuilder8.0有關(guān)問題

  PowerBuilder8.0正式版是從 http://www.yeswit.com/pb80/index.htm 用NetAnts下載3.5小時(shí)得到的。PowerBuilder8.0中創(chuàng)建應(yīng)用先須創(chuàng)建(或打開)WorkSpace(*.pbw),其他操作基本同PowerBuilder7.0。本示例在PowerBuilder8.0中運(yùn)行需如下三個(gè)文件:dw_dynamic8.pbl, WkSpForPB8.pbw,test.pbt。如圖(-)為PowerBuilder8.0中編輯本示例的主窗口w_main的樣圖。

  (三)、其他說明

  本人傳送的dw_dynamic.zip中包括如下6個(gè)文件:bb.dbf(FoxPro數(shù)據(jù)表)、dw_dynamic6.pbl(PB6.0的程序庫文件)、dw_dynamic7.pbl(PB7.0的程序庫文件)及PB8.0的3個(gè)文件dw_dynamic8.pbl, WkSpForPB8.pbw和test.pbt。請分別在各自對應(yīng)版本的PB中打開、運(yùn)行。

轉(zhuǎn)自: http://www.yesky.com/SoftChannel/72342371928571904/20011127/207107.shtml

PowerBuilder創(chuàng)建動(dòng)態(tài)數(shù)據(jù)窗口


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 人成午夜视频 | 国产一区视频在线免费观看 | 天天干夜夜欢 | 亚洲精品www久久久久久久软件 | 色综合久久中文 | 国产精品你懂的在线播放 | 国产在线一区视频 | 青青久久久国产线免观 | 久久亚洲精品中文字幕二区 | 久久最新精品 | 在线免费观看a视频 | 中国护士一级毛片免费版本 | 91精品91久久久久久 | 欧美日韩视频在线播放 | 香蕉爱爱视频 | 欧美日韩中文国产一区二区三区 | 天天干夜夜 | 国产一级做a爱免费视频 | 色婷婷一区二区三区四区成人 | 99在线观看视频免费精品9 | 亚洲综合激情五月色播 | 亚洲一级毛片欧美一级说乱 | 97在线亚洲 | 四虎精品永久免费 | 九九热视频免费观看 | 99视频精品全部 在线 | 国产又黄又a又潮娇喘视频 国产又色又爽又黄又刺激18 | 日日干夜夜骑 | 国产精品久久视频 | 国产一级片毛片 | 天天干视频网站 | 99久久这里只有精品 | 日本不卡中文字幕一区二区 | 国内精品手机在线观看视频 | 亚洲精品一级一区二区三区 | 香蕉免费看一区二区三区 | 久操免费在线观看 | 精品国产一二三区在线影院 | 精品国产免费久久久久久婷婷 | 在线免费观看毛片 | 久久厕所精品国产精品亚洲 |