PowerBuilder第16講 數(shù)據(jù)管道_第1頁
PowerBuilder第16講 數(shù)據(jù)管道_第2頁
PowerBuilder第16講 數(shù)據(jù)管道_第3頁
PowerBuilder第16講 數(shù)據(jù)管道_第4頁
PowerBuilder第16講 數(shù)據(jù)管道_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第16講數(shù)據(jù)管道本章首先介紹數(shù)據(jù)管道的基本概念,說明數(shù)據(jù)管道對象的定義方法以及如何在數(shù)據(jù)管道畫板中運(yùn)行和修改管道,然后介紹數(shù)據(jù)管道的屬性、事件、函數(shù),并說明程序中使用數(shù)據(jù)管道的基本步驟,最后介紹一個完整的數(shù)據(jù)管道應(yīng)用示例,并給出一個可重用的數(shù)據(jù)管道用戶對象。

通過數(shù)據(jù)管道(DataPipeline),應(yīng)用程序能夠在不同的數(shù)據(jù)庫表之間移動數(shù)據(jù),也就是說,可以把一個或多個源表中的數(shù)據(jù)復(fù)制到新表或已存在的目的表中,復(fù)制的方式根據(jù)應(yīng)用程序的需要而定,可以刪除目的表及其數(shù)據(jù)后重建目的表,也可以只把最新數(shù)據(jù)傳送到目的表中。而且,上述的數(shù)據(jù)遷移可以在同一個數(shù)據(jù)庫不同表之間進(jìn)行,也能夠在同一個數(shù)據(jù)庫管理系統(tǒng)的不同數(shù)據(jù)庫之間進(jìn)行,當(dāng)然,需要時也完全可以在不同數(shù)據(jù)庫管理系統(tǒng)的不同數(shù)據(jù)庫之間進(jìn)行。除了遷移常規(guī)數(shù)據(jù)(比如數(shù)值型、字符型等)外,數(shù)據(jù)管道還可以在數(shù)據(jù)庫之間遷移圖像、聲音之類的大二進(jìn)制對象(Blob型數(shù)據(jù))。16.1數(shù)據(jù)管道的概念數(shù)據(jù)管道提供了在數(shù)據(jù)庫內(nèi)部、數(shù)據(jù)庫之間,甚至不同的數(shù)據(jù)庫管理系統(tǒng)之間快速復(fù)制數(shù)據(jù)的簡便途徑。利用數(shù)據(jù)管道復(fù)制數(shù)據(jù)的過程稱之為灌入數(shù)據(jù)(PipingData)。一、數(shù)據(jù)管道可以完成普通方法難以完成的任務(wù),比如:把一個或多個表中的數(shù)據(jù)灌入到相同DBMS或不同DBMS的一個表中。例如,它可以把Oracle數(shù)據(jù)庫實(shí)例OO的一個或多個表中的數(shù)據(jù)復(fù)制到Oracle數(shù)據(jù)庫另一個實(shí)例OR的一個表中,也能夠?qū)⑦@些數(shù)據(jù)灌入到Sybase數(shù)據(jù)庫中。而且,在復(fù)制數(shù)據(jù)時,數(shù)據(jù)管道可以把表的屬性一起復(fù)制。把整個表一次性地復(fù)制到另一個數(shù)據(jù)庫中,當(dāng)然,需要時也可以把PowerBuilder的資源庫(RepositoryTable)復(fù)制到另一個數(shù)據(jù)庫中,這在部署使用動態(tài)數(shù)據(jù)窗口的應(yīng)用程序時特別有用,它使開發(fā)環(huán)境和應(yīng)用環(huán)境達(dá)到高度的一致。

創(chuàng)建一個與原表有相同結(jié)構(gòu),但不包含數(shù)據(jù)的表,即復(fù)制表結(jié)構(gòu)。將網(wǎng)絡(luò)數(shù)據(jù)庫服務(wù)器上的數(shù)據(jù)復(fù)制到本地的SQLAnywhere數(shù)據(jù)庫中,這樣用戶就可以使用客戶機(jī)本地的數(shù)據(jù)庫而無須每次都使用網(wǎng)絡(luò),減輕了網(wǎng)絡(luò)的通訊壓力。提供了在修改表結(jié)構(gòu)的同時保留表中數(shù)據(jù)的另一種手段。用數(shù)據(jù)庫畫板或表畫板修改表時,有些選項不能修改,比如,大多數(shù)數(shù)據(jù)庫不允許把空列(NULL)修改為非空列(NONULL)。此時,我們可以用數(shù)據(jù)管道創(chuàng)建一個新表,新表與原表的結(jié)構(gòu)相同,但屬性按我們的需要設(shè)置。用數(shù)據(jù)管道復(fù)制數(shù)據(jù)時,可以復(fù)制表中所有數(shù)據(jù),也可以復(fù)制部分?jǐn)?shù)據(jù),甚至還可以復(fù)制出加工了的數(shù)據(jù)。二、數(shù)據(jù)管道是PowerBuilder的一個對象,它的使用方法有兩種:用數(shù)據(jù)管道畫板創(chuàng)建數(shù)據(jù)管道對象,然后在數(shù)據(jù)管道畫板中運(yùn)行數(shù)據(jù)管道對象;在應(yīng)用程序中通過編寫代碼使用數(shù)據(jù)管道。用數(shù)據(jù)管道畫板創(chuàng)建并保存數(shù)據(jù)管道對象,用用戶對象畫板定義出基于數(shù)據(jù)管道對象的用戶對象,編寫需要的事件處理程序,在代碼中運(yùn)行管道。無論哪種方法,使用之前都需要首先創(chuàng)建數(shù)據(jù)管道對象。16.2創(chuàng)建數(shù)據(jù)管道對象一、創(chuàng)建數(shù)據(jù)管道對象創(chuàng)建數(shù)據(jù)管道對象時,需要確定下述選項:①源數(shù)據(jù)庫;②目的數(shù)據(jù)庫;③要從中復(fù)制數(shù)據(jù)的源表;④要存放數(shù)據(jù)的目的表;⑤要執(zhí)行的數(shù)據(jù)管道操作類型;⑥運(yùn)行數(shù)據(jù)管道時事務(wù)提交的頻率;⑦容許出現(xiàn)的最多錯誤數(shù);⑧是否要把表的擴(kuò)展屬性一起傳送到目的數(shù)據(jù)庫中。實(shí)際上,上述選項的結(jié)果都將包含到數(shù)據(jù)管道對象中。那么怎樣創(chuàng)建數(shù)據(jù)管道對象呢?答案是用數(shù)據(jù)管道畫板(DataPipelinePainter)。蔣新卉二、創(chuàng)建數(shù)據(jù)管道對象可以像創(chuàng)建窗口Window、數(shù)據(jù)窗口對象Datawindow那樣創(chuàng)建數(shù)據(jù)管道對象。在PowerBuilder主窗口的工具欄選擇New,單擊Database頁,如圖15.6所示。選擇DataPipeline,將出現(xiàn)標(biāo)題為NewDataPipeline的窗口,如圖15.7所示,選擇數(shù)據(jù)源DataSource、源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫。數(shù)據(jù)源DataSource的含義同創(chuàng)建數(shù)據(jù)窗口對象Datawindow一樣。圖15.6創(chuàng)建數(shù)據(jù)管道對象圖15.7選擇源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫⑶在NewDataPipeline對話框中,全部選項分為了兩個組框:DataSource組框用于選擇數(shù)據(jù)源,這些數(shù)據(jù)源的作用與創(chuàng)建數(shù)據(jù)窗口時的數(shù)據(jù)源完全相同,它們生成指定的SQLSELECT語句;DataConnection組框用于指定提取數(shù)據(jù)的源表所在數(shù)據(jù)庫所對應(yīng)的數(shù)據(jù)庫描述文件和目的表所在數(shù)據(jù)庫所對應(yīng)的數(shù)據(jù)庫描述文件,如果所需的數(shù)據(jù)庫描述文件沒有在列表框中列出,那么必須使用數(shù)據(jù)庫畫板創(chuàng)建相應(yīng)的數(shù)據(jù)庫描述文件。⑷分別在SourceConnection(源連接)列表和DestinationConnection(目的連接)列表中選擇源數(shù)據(jù)庫、目的數(shù)據(jù)庫,在DataSource中選擇數(shù)據(jù)源,然后單擊OK按鈕,系統(tǒng)根據(jù)所選數(shù)據(jù)源的不同,出現(xiàn)不同的畫面,按照與定義數(shù)據(jù)窗口數(shù)據(jù)源相似的方法定義數(shù)據(jù)源,定義了數(shù)據(jù)源之后,系統(tǒng)打開數(shù)據(jù)管道畫板。若數(shù)據(jù)源DataSource選QuickSelect,則源表只能選擇一個,如圖15.8所示,選擇要復(fù)制的列。然后單擊OK按鈕,將出現(xiàn)前面已講的圖15.3。圖15.8選擇列三、數(shù)據(jù)管道的保存和使用如果想把數(shù)據(jù)管道保存起來一邊今后使用,可以單擊Painter工具條的Save按鈕;使用一個已有的數(shù)據(jù)管道的步驟:⑴單擊PowerBar的Pipelin按鈕;⑵在隨后出現(xiàn)的對話框種選擇所需要的管道;⑶修改管道的定義;⑷運(yùn)行管道。四、打開和修改數(shù)據(jù)管道

保存數(shù)據(jù)管道后,再次打開和修改。在主窗口的工具欄選擇Open,在對象類型ObjectType中選擇Pipelines,在對象

Object中選擇要打開的數(shù)據(jù)管道。 點(diǎn)擊OK按鈕,出現(xiàn)前面已講的界面。

五、刪除數(shù)據(jù)管道

打開Library庫管理器,打開要刪除的數(shù)據(jù)管道所在的PBL,選擇要刪除的數(shù)據(jù)管道,右擊,出現(xiàn)彈出式菜單,選擇Delete將刪除所選的數(shù)據(jù)管道。

圖15-10刪除數(shù)據(jù)管道16.3數(shù)據(jù)管道對象的屬性、事件和函數(shù)16.3.1數(shù)據(jù)管道屬性數(shù)據(jù)管道對象的屬性共有6個,反映了當(dāng)前使用的數(shù)據(jù)管道對象、語法、數(shù)據(jù)管道運(yùn)行情況等信息:ClassDefinition、DataObject、RowsInError、RowsRead、RowsWritten、Syntax。其中:(1)DataObject屬性的數(shù)據(jù)類型為String,用于保存數(shù)據(jù)管道對象名(在數(shù)據(jù)庫畫板中創(chuàng)建的對象),其作用與數(shù)據(jù)窗口控件的同名屬性的作用十分相似,該屬性指定與數(shù)據(jù)管道對象相關(guān)聯(lián)的數(shù)據(jù)管道對象名,與數(shù)據(jù)窗口控件不同,數(shù)據(jù)管道用戶對象的DataObject屬性只能在代碼中設(shè)置,例如:u_pipeline.DataObject="p_student"中,u_pipeline是數(shù)據(jù)管道對象的實(shí)例,p_student是在數(shù)據(jù)庫畫板中創(chuàng)建的數(shù)據(jù)管道對象的名稱。(2)RowsInError的數(shù)據(jù)類型為Long,它指示數(shù)據(jù)管道運(yùn)行過程中發(fā)現(xiàn)的錯誤個數(shù)(比如存在鍵值重復(fù)的行等)。例如,如果數(shù)據(jù)管道處理了100行數(shù)據(jù),其中發(fā)現(xiàn)了7個錯誤,那么RowsInError的值就是7。(3)RowsRead的數(shù)據(jù)類型為Long,它指示數(shù)據(jù)管道運(yùn)行過程中當(dāng)前已經(jīng)讀取的行數(shù)。對前面的示例來說,RowsRead的值為100。(4)RowsWritten的數(shù)據(jù)類型為Long,它指示數(shù)據(jù)管道運(yùn)行過程中當(dāng)前已經(jīng)寫入的行數(shù)。對前面的示例來說,RowsWritten的值為93。(5)RowsInError、RowsRead和RowsWritten屬性提供數(shù)據(jù)管道運(yùn)行過程中的狀態(tài)信息。這些屬性通常顯示在應(yīng)用程序的窗口中,讓用戶了解數(shù)據(jù)管道的執(zhí)行進(jìn)程。(6)Syntax屬性的數(shù)據(jù)類型為String,保存用于創(chuàng)建數(shù)據(jù)管道對象的語法(在數(shù)據(jù)管道畫板中創(chuàng)建的對象)。利用字符串操作函數(shù)(如Mid()、Pos()、Len()),可以動態(tài)修改數(shù)據(jù)管道對象語法。16.3.2數(shù)據(jù)管道事件數(shù)據(jù)管道有5個預(yù)定義事件,在創(chuàng)建數(shù)據(jù)管道用戶對象時,可以根據(jù)應(yīng)用程序的需要定義自己的用戶事件。預(yù)定義事件的有如下5種。(1)Constructor:在數(shù)據(jù)管道用戶對象創(chuàng)建時觸發(fā)。(2)Destructor:在數(shù)據(jù)管道用戶對象刪除時觸發(fā)。(3)PipeStart:開始執(zhí)行Start()或Repair()函數(shù)時觸發(fā)。(4)PipeMeter:每次讀或?qū)懸粔K數(shù)據(jù)時觸發(fā),設(shè)計數(shù)據(jù)管道對象時定義的Commit參數(shù)的大小決定了塊的大小。也就是說,數(shù)據(jù)管道每執(zhí)行完一個數(shù)據(jù)庫事務(wù)時都會觸發(fā)PipeMeter事件。(5)PipeEnd:Start()或Repair()函數(shù)執(zhí)行結(jié)束時觸發(fā)。16.3.3數(shù)據(jù)管道函數(shù)數(shù)據(jù)管道對象有9個函數(shù),其中ClassName()、GetParent()、GetContextService()、PostEvent()、TriggerEvent()、TypeOf()與其他對象相應(yīng)函數(shù)的意義相同,在此不再重復(fù),下面介紹數(shù)據(jù)管道對象特有的三個函數(shù)Start()、Repair()、Cancel()。1.Start()函數(shù)Start()函數(shù)執(zhí)行數(shù)據(jù)管道對象,將數(shù)據(jù)從源表按SQLSELECT語句指定的要求復(fù)制到目標(biāo)表中。格式:pipelineobject.Start

(sourcetrans,desttrans,errordw[,arg1,arg2,...,argn])其中:(1)pipelineobject是包含要被執(zhí)行數(shù)據(jù)管道對象的數(shù)據(jù)管道用戶對象名稱。(2)sourcetrans是連接到源數(shù)據(jù)庫的事務(wù)對象名,可以是默認(rèn)的事務(wù)對象SQLCA,也可以是應(yīng)用程序創(chuàng)建的事務(wù)對象。(3)desttrans是連接到目標(biāo)數(shù)據(jù)庫的事務(wù)對象名,可以是默認(rèn)的事務(wù)對象SQLCA,也可以是應(yīng)用程序自己創(chuàng)建的事務(wù)對象。(4)errordw是個數(shù)據(jù)窗口控件名,該控件用于顯示數(shù)據(jù)管道運(yùn)行過程中出現(xiàn)的錯誤。程序中無須把某個數(shù)據(jù)窗口對象關(guān)聯(lián)到該控件上,系統(tǒng)會根據(jù)出現(xiàn)的數(shù)據(jù)管道錯誤自動生成所需的數(shù)據(jù)窗口對象。如果程序中已經(jīng)在該控件上關(guān)聯(lián)了某個數(shù)據(jù)窗口對象,運(yùn)行時該對象將被數(shù)據(jù)管道創(chuàng)建的對象取代。(5)arg1,arg2,…,argn是可選參數(shù),對應(yīng)于定義數(shù)據(jù)管道數(shù)據(jù)源時SELECT語句所需的檢索參數(shù)。Start()函數(shù)返回一個Integer值指示數(shù)據(jù)管道的運(yùn)行是否成功,返回值的意義為:1 函數(shù)執(zhí)行成功-1打不開數(shù)據(jù)管道(如數(shù)據(jù)管道對象不存在)-2列數(shù)太多-3要創(chuàng)建的表已經(jīng)存在-4要增加數(shù)據(jù)的表不存在-5未建立與數(shù)據(jù)庫的連接-6參數(shù)錯誤-7列不匹配-8訪問源數(shù)據(jù)庫的SQL語句致命錯誤-9訪問目標(biāo)數(shù)據(jù)庫的SQL語句致命錯誤-10已經(jīng)達(dá)到指定的最大錯誤數(shù)-12不正確的表語法-13需要關(guān)鍵字但未指定關(guān)鍵字-15數(shù)據(jù)管道已經(jīng)在運(yùn)行-16源數(shù)據(jù)庫出錯-17目標(biāo)數(shù)據(jù)庫出錯-18目標(biāo)數(shù)據(jù)庫處于只讀狀態(tài),不能寫入數(shù)據(jù)。例:已知一個數(shù)據(jù)管道用戶對象u_pipe和一個數(shù)據(jù)管道對象p_pipe,請從I_srcI_dst.i_upipe=CREATEu_pipei_upipe.DataObject="p_pipe"i_upipe.Start(i_src,i_dst,dw_1)2.Cancel()函數(shù)在數(shù)據(jù)管道運(yùn)行過程中,執(zhí)行Cancel()函數(shù)后將終止數(shù)據(jù)管道的執(zhí)行。格式:pipelineobject.Cancel()該函數(shù)執(zhí)行成功時返回1,失敗時返回0。

3.Repair()函數(shù)數(shù)據(jù)管道運(yùn)行后,如果某些行不能傳送到目標(biāo)數(shù)據(jù)庫,就產(chǎn)生了錯誤,出錯的行顯示在與數(shù)據(jù)管道對象相關(guān)聯(lián)的數(shù)據(jù)窗口中,用戶在數(shù)據(jù)窗口中修改了數(shù)據(jù)后,使用Repair()函數(shù),將修改結(jié)果傳送到目標(biāo)數(shù)據(jù)庫。格式:pipelineobject.Repair

(desttrans

)其中:pipelineobject是包含要被執(zhí)行數(shù)據(jù)管道對象的數(shù)據(jù)管道用戶對象名稱。desttrans是連接到目標(biāo)數(shù)據(jù)庫的事務(wù)對象名。Repair()函數(shù)的返回值:1 函數(shù)執(zhí)行成功-5未建立與數(shù)據(jù)庫的連接-6參數(shù)錯誤-9訪問目標(biāo)數(shù)據(jù)庫的SQL語句致命錯誤-10已經(jīng)達(dá)到指定的最大錯誤數(shù)-12不正確的表語法-15數(shù)據(jù)管道已經(jīng)在運(yùn)行-17目標(biāo)數(shù)據(jù)庫出錯-18目標(biāo)數(shù)據(jù)庫處于只讀狀態(tài),不能寫入數(shù)據(jù)16.4數(shù)據(jù)管道編程實(shí)例

在程序中使用數(shù)據(jù)管道的基本步驟為:創(chuàng)建數(shù)據(jù)管道對象,如果不存在的話定義Pipeline的標(biāo)準(zhǔn)類用戶對象(或在代碼中定義Pipeline對象實(shí)例)

創(chuàng)建窗口,在窗口上放置一個數(shù)據(jù)窗口控件

編寫代碼

處理行錯誤結(jié)束管道操作

在該例中,先選擇復(fù)制方向:是從服務(wù)器數(shù)據(jù)庫下載數(shù)據(jù)到本地庫,還是將本地庫數(shù)據(jù)上傳到服務(wù)器數(shù)據(jù)庫以更新數(shù)據(jù);然后選“開始”按鈕,執(zhí)行數(shù)據(jù)復(fù)制操作,在復(fù)制的過程中,可以點(diǎn)“取消”按鈕,將取消正在進(jìn)行的復(fù)制操作。復(fù)制操作的執(zhí)行狀況顯示在數(shù)據(jù)窗口控件中,結(jié)果顯示在三個靜態(tài)文本框中。

圖15-11數(shù)據(jù)管道應(yīng)用實(shí)例步驟如下:

(1)

創(chuàng)建一個mypipe.pbl文件,其ApplicationObject名為pipedb。再創(chuàng)建窗口w_pipe,在w_pipe上,創(chuàng)建一個組框gb_1、兩個單選按鈕rb_down和rb_up、開始命令按鈕cb_ok、取消命令按鈕cb_cancel、返回命令按鈕cb_return、靜態(tài)文本框st_read、靜態(tài)文本框st_written、靜態(tài)文本框st_error、數(shù)據(jù)窗口控件dw_1。

(2)

創(chuàng)建兩個數(shù)據(jù)管道:p_student_ltos將本地數(shù)據(jù)庫中的表student中的部分?jǐn)?shù)據(jù)上傳到服務(wù)器數(shù)據(jù)庫中的表student以更新數(shù)據(jù);p_student_stol將服務(wù)器數(shù)據(jù)庫中的表student中的部分?jǐn)?shù)據(jù)下載到本地數(shù)據(jù)庫中的表student中。這兩個數(shù)據(jù)管道都定義了string類型的檢索參數(shù)str,并在編輯SQL數(shù)據(jù)源中加上條件“wherestudent.class=:str”,表示僅處理指定的班級。

(3)在窗口w_pipe中定義函數(shù)wf_connectlocaldb()表示連接本地數(shù)據(jù)庫、wf_connectserverdb()表示連接服務(wù)器數(shù)據(jù)庫、wf_error(integerret)錯誤處理、wf_startpipe(Transaction

sourcetrans,Transactiondesttrans,stringp_object)開始管道操作。

15.3數(shù)據(jù)管道編程實(shí)例(4)

編寫代碼

l

在ApplicationObject對象pipedb的open事件中編寫以下代碼open(w_pipe)l

在窗口w_pipe中,聲明以下InstanceVariables對象實(shí)例:

//定義兩個事務(wù)處理對象serverdb和localdb //serverdb用來連接服務(wù)器數(shù)據(jù)庫

//localdb用來連接本地庫

transactionserverdb,localdb //定義數(shù)據(jù)管道對象u_pipe pipelineu_pipel

在窗口w_pipe的open事件中編寫代碼:

//定義事務(wù)處理對象實(shí)例變量localdb和serverdbserverdb=createtransactionlocaldb=createtransaction//定義數(shù)據(jù)管道對象實(shí)例變量u_pipe=createpipelinel

在窗口w_pipe的close事件中編寫代碼://釋放數(shù)據(jù)管道對象destroyu_pipe;//釋放事務(wù)處理對象disconnectusinglocaldb;destroylocaldb;disconnectusingserverdb;destroyserverdb;15.3數(shù)據(jù)管道編程實(shí)例l

在“取消”命令按鈕的clicked事件中編寫代碼:intretret=u_pipe.Cancel()//終止管道運(yùn)行ifret=1then

messagebox("取消操作成功 ","終止管道運(yùn)行")else

messagebox("取消操作失敗","未能終止管道運(yùn)行")endifl

在“返回”命令按鈕cb_return的clicked事件中編寫代碼:close(parent) //關(guān)閉當(dāng)前窗口l

在連接本地數(shù)據(jù)庫的函數(shù)wf_connectlocaldb()中編寫代碼:

//該函數(shù)無參數(shù),返回值為sqlcode//連接本地庫localdb.autocommit=truelocaldb.DBMS="odbc"localdb.database="student"localdb.userid="dba"localdb.dbpass="sql"localdb.servername=""localdb.logid=""localdb.logpass=""localdb.dbparm="connectstring= 'dsn=student;uid=dba;pwd=sql'"connectusinglocaldb;returnlocaldb.sqlcode

15.3數(shù)據(jù)管道編程實(shí)例l

在連接服務(wù)器數(shù)據(jù)庫的函數(shù)wf_connectserverdb()中編寫代碼://該函數(shù)無參數(shù),返回值為sqlcode//連接服務(wù)器數(shù)據(jù)庫//這里為方便實(shí)驗(yàn),選用了另一個本地庫mathserverdb.autocommit=trueserverdb.DBMS="odbc"serverdb.database="math"serverdb.userid="dba"serverdb.dbpass="sql"serverdb.servername=""serverdb.logid=""serverdb.logpass=""serverdb.dbparm="connectstring='dsn=math;uid=dba;pwd=sql'"connectusingserverdb;returnserverdb.sqlcode

l

在錯誤處理函數(shù)wf_error(integerret)中編寫代碼://該函數(shù)的入口參數(shù)ret,表示執(zhí)行數(shù)據(jù)管道操作返回的錯誤代碼。//該函數(shù)無返回值。stringmsgChooseCaseret Case-1msg="打不開數(shù)據(jù)管道" Case-2msg="列數(shù)太多" Case–3

msg=“要創(chuàng)建的表已經(jīng)存在”

Case-4

msg="要增加數(shù)據(jù)的表不存在" Case-5

msg="未建立與數(shù)據(jù)庫的連接" Case–6msg="參數(shù)錯誤"Case–7msg="列不匹配" Case-8

msg="訪問源數(shù)據(jù)庫的SQL語句致命錯誤"

Case-9

msg=“訪問目標(biāo)數(shù)據(jù)庫的SQL語 句 致命錯誤" Case-10

msg=“已經(jīng)達(dá)到指定的最大錯誤數(shù)"Case–12msg="不正確的表語法" Case-13

msg=“需要關(guān)鍵字、但未指定關(guān)鍵 字" Case-15

msg="數(shù)據(jù)管道已經(jīng)在運(yùn)行" Case–16msg="源數(shù)據(jù)庫出錯" Case–17msg="目標(biāo)數(shù)據(jù)庫出錯" Case-18

msg=“目標(biāo)數(shù)據(jù)庫處于只讀狀態(tài), 不能寫入數(shù)據(jù)"EndChooseMessageBox("數(shù)據(jù)管道運(yùn)行出錯",msg,StopSign!,ok!)15.3數(shù)據(jù)管道編程實(shí)例l

在執(zhí)行管道操作的函數(shù)wf_startpipe(Transaction

sourcetrans,Transactiondesttrans,stringp_object)中編寫代碼://該函數(shù)有三個入口參數(shù)sourcetrans、desttrans、p_object//該函數(shù)無返回值。//參數(shù)sourcetrans表示源事務(wù)處理對象//參數(shù)desttrans表示目標(biāo)事務(wù)處理對象//參數(shù)p_object表示在數(shù)據(jù)庫畫板中創(chuàng)建的數(shù)據(jù)管

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論