| 第三十六讲 数据管道 | ||||
| 这一讲我们继续完成上一讲中有关PIPELINE的编程。
打开cb_pipeline控件的clicked事件。编写程序: long ll_rc string ls_err uo_pipeline l_pipeline transaction ltrn_source transaction ltrn_target ltrn_source=Create Transaction ltrn_source.dbms = sqlca.dbms ltrn_source.database = sqlca.database ltrn_source.userid = sqlca.userid ltrn_source.dbpass = sqlca.dbpass ltrn_source.logid = sqlca.logid ltrn_source.logpass = sqlca.logpass ltrn_source.servername = sqlca.servername ltrn_source.dbparm = sqlca.dbparm ltrn_target=Create Transaction ltrn_target.dbms = sqlca.dbms ltrn_target.database = sqlca.database ltrn_target.userid = sqlca.userid ltrn_target.dbpass = sqlca.dbpass ltrn_target.logid = sqlca.logid ltrn_target.logpass = sqlca.logpass ltrn_target.servername = sqlca.servername ltrn_target.dbparm = sqlca.dbparm l_pipeline=Create uo_pipeline l_pipeline.Dataobject="p_customer" Connect Using ltrn_source; if ltrn_source.sqlcode<0 then MessageBox('Source Database',& 'Could Not Connect'+& '~r~nSQLDBCode:'+& String (ltrn_source.SQLDBCode)+& '~r~nSQLErrText:'+& ltrn_source.SQLErrText) else Connect Using ltrn_target; if ltrn_target.sqlcode<0 then MessageBox('Target Database',& 'Could Not Connect'+& '~r~nSQLDBCode:'+& String (ltrn_target.SQLDBCode)+& '~r~nSQLErrText:'+& ltrn_target.SQLErrText) else ll_rc=l_pipeline.start (ltrn_source,ltrn_target,dw_1) if ll_rc<0 then CHOOSE CASE ll_rc CASE -1 ls_err='Pipe open failed' CASE -2 ls_err='Too many columns' CASE -3 ls_err='Table already exists' CASE -4 ls_err='Table does not exists' CASE -5 ls_err='Missing connection' CASE -6 ls_err='Wrong arguments' CASE -7 ls_err='Column mismatch' CASE -8 ls_err='Fatal SQL error in source' CASE -9 ls_err='Fatal SQL error in destination' CASE -10 ls_err='Maximum number of errors exceeded' CASE -12 ls_err='Bad table syntax' CASE -13 ls_err='Key required but not supplied' CASE -15 ls_err='Pipe already in progress' CASE -16 ls_err='Error in source database' CASE -17 ls_err='Error in destination database' CASE -18 ls_err='Destination database is read-only' END CHOOSE Messagebox('Pipeline',& 'Error Occured:'+string(ll_rc)+& '~r~n'+ls_err) Else MessageBox('Pipeline',& 'Rows Read:'+& String(l_pipeline.RowsRead)+& '~r~nRows Written:'+& String(l_pipeline.RowsWritten)) end if end if end if Destroy l_pipeline Destroy ltrn_source Destroy ltrn_target 第四步:在应用对象中的open事件中最底处加入代码。 open(w_pipeline) 可以运行程序了。 DEBUG 第一步:点击PowerBar上的Debug按钮,出现Debugger对话框。 第二步:在这里可以选择要跟踪的事件,即设置断点。 第三步:选定需要跟踪的语句之后,我们单击Start按钮。这是程序运行。 第四步:选择“Word 单选按钮”,单击“导入按钮”,出现Debug对话框(因为我们在这设置了断点)。 第五步:每走一步,我们可以看到下方变量显示框中各种变量的数值变化,同时,可以看到程序的流程走向。这样,就很容易看到,你所希望的值与实际中的值的区别。这对于编写程序,可以带来很多方便,同时更加快捷。 |
||||