99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁(yè)職業(yè)發(fā)展利用PB動(dòng)態(tài)創(chuàng)建數(shù)據(jù)窗口
利用PB動(dòng)態(tài)創(chuàng)建數(shù)據(jù)窗口
2016-03-05
收藏

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

當(dāng)利用PowerBuilder建立數(shù)據(jù)窗口時(shí),用戶通常不能自己選擇數(shù)據(jù)來(lái)源和顯示類(lèi)型。如何讓用戶在應(yīng)用程序中自己定義數(shù)據(jù)窗口的數(shù)據(jù)來(lái)源和顯示類(lèi)型呢?為了達(dá)到這個(gè)目的,我們必須在運(yùn)行程序階段根據(jù)用戶自己的需求,動(dòng)態(tài)地建立一個(gè)數(shù)據(jù)窗口。筆者將結(jié)合實(shí)際,詳細(xì)介紹動(dòng)態(tài)創(chuàng)建數(shù)據(jù)窗口的步驟。 在建立動(dòng)態(tài)數(shù)據(jù)窗口之前,必須先得到數(shù)據(jù)窗口對(duì)象的語(yǔ)法,PB中為我們提供了SyntaxFromSQL( )函數(shù),利用這個(gè)函數(shù)可以得到建立數(shù)據(jù)窗口的語(yǔ)法。SyntaxFromSQL()函數(shù)的基本格式如下: 事物對(duì)象.SyntaxFromSQL(數(shù)據(jù)來(lái)源字符串,顯示類(lèi)型字符串,錯(cuò)誤字符串) 下面是建立一個(gè)數(shù)據(jù)窗口對(duì)象語(yǔ)法的范例∶

// 聲明變量
string ls_sql, ls_present,ls_err, ls_syntax
// 定義數(shù)據(jù)窗口的數(shù)據(jù)來(lái)源
ls_sql = "select emp_id from employee"
//定義數(shù)據(jù)窗口顯示字符串
ls_present = "style(type=tabular)"
// 得到建立數(shù)據(jù)窗口對(duì)象語(yǔ)法
// 如果錯(cuò)誤發(fā)生,SyntaxFromSQL 返回一個(gè)空字符串
ls_errls_syntax = SQLCA.SyntaxFromSQL(ls_sql, ls_present , ls_err)
利用 SyntaxFromSQL( )所建立的數(shù)據(jù)窗口對(duì)象是在運(yùn)行階段才建立的對(duì)象,并不會(huì)自動(dòng)保存在PB的對(duì)象數(shù)據(jù)庫(kù) Library 中。為了以后可以重復(fù)使用這個(gè)數(shù)據(jù)窗口對(duì)象,可以利用 LibraryImport( )函數(shù)保存數(shù)據(jù)窗口對(duì)象。 在利用 SyntaxFromSQL( )函數(shù)建立一個(gè)數(shù)據(jù)窗口語(yǔ)法后,必須將它與窗口上的數(shù)據(jù)窗口控件結(jié)合,這個(gè)數(shù)據(jù)窗口控件必須已經(jīng)存在于窗口中 。要將數(shù)據(jù)窗口對(duì)象語(yǔ)法和一個(gè)已經(jīng)存在的數(shù)據(jù)窗口控件結(jié)合,必須利用Create( )函數(shù),下面是范例程序∶
// 聲明變量string ls_syntax ,ls_err
ls_errdw_1.Create(ls_syntax, ls_err)
dw_1.SetTransobject(SQLCA)
dw_1.retrieve( )
在上面程序中,ls_syntax是運(yùn)行SyntaxFromSQL( )函數(shù)后所返回的字符串。除此之外,也可以利用LibraryExport( )函數(shù)從PB對(duì)象數(shù)據(jù)庫(kù)中得到已經(jīng)存在于PBL中的數(shù)據(jù)窗口對(duì)象語(yǔ)法。因?yàn)镃reate( )函數(shù)會(huì)破壞先前數(shù)據(jù)窗口與事物對(duì)象的結(jié)合,所以必須利用SetransObject( )函數(shù)重新結(jié)合事物對(duì)象給新的數(shù)據(jù)窗口對(duì)象,最后再運(yùn)行Retrieve( )函數(shù),從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)。 最后,我們需要利用SQL 語(yǔ)句字符串,動(dòng)態(tài)創(chuàng)建一個(gè)新的數(shù)據(jù)窗口對(duì)象到一個(gè)數(shù)據(jù)窗口控件當(dāng)中。雖然,在運(yùn)行階段并不能直接在窗口上建立一個(gè)數(shù)據(jù)窗口控件,但卻可以利用用戶對(duì)象建立一個(gè)與窗口上一樣的數(shù)據(jù)窗口控件,在運(yùn)行階段時(shí)再動(dòng)態(tài)打開(kāi)這個(gè)用戶對(duì)象。下面是動(dòng)態(tài)建立數(shù)據(jù)窗口控件的步驟∶

在用戶對(duì)象畫(huà)板內(nèi),建立一個(gè)標(biāo)準(zhǔn)數(shù)據(jù)窗口的用戶類(lèi)。

可以在這個(gè)控件中增加功能、程序、用戶對(duì)象函數(shù)和用戶自定義事件后,保存用戶對(duì)象到對(duì)象數(shù)據(jù)庫(kù)中。

利用 OpenUserObject( )函數(shù)建立一個(gè)數(shù)據(jù)窗口用戶對(duì)象的復(fù)件,一般格式如下∶OpenUserObject(用戶對(duì)象變量,{x坐標(biāo)值,y坐標(biāo)值})。下面是在窗口上鼠標(biāo)點(diǎn)擊的坐標(biāo)位置建立一個(gè)用戶對(duì)象 u_dw的范例∶ OpenUserObject(u_dw, Pointerx( ),Pointery( ))
以上是建立一個(gè)動(dòng)態(tài)數(shù)據(jù)窗口的基本步驟,感興趣的讀者不妨一試。

SQL

數(shù)據(jù)分析咨詢(xún)請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢(xún)
客服在線
立即咨詢(xún)
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說(shuō)明請(qǐng)參見(jiàn):http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }