在一个窗口中声明实例变量:
transaction itrans_source,itrans_destination
u_user_pipe_object pipe
窗口中的open事件代码如下:
dw_destination.settransobject(sqlca)
dw_pipe_error.settransobject(sqlca)
itrans_source=create transaction
itrans_destination=create transaction
itrans_source.dbms=profilestring("xtexam.ini","profile pb90","dbms","")
itrans_source.database=profilestring("xtexam.ini","profile pb90","database","")
itrans_source.logid=profilestring("xtexam.ini","profile pb90","logid","")
itrans_source.logpass=profilestring("xtexam.ini","profile pb90","logpass","")
itrans_source.servername=profilestring("xtexam.ini","profile pb90","servername","")
itrans_source.lock=profilestring("xtexam.ini","profile pb90","lock","")
itrans_source.userid=profilestring("xtexam.ini","profile pb90","userid","")
itrans_source.dbpass=profilestring("xtexam.ini","profile pb90","databasepassword","")
itrans_source.dbparm=profilestring("xtexam.ini","profile pb90","dbparm","")
connect using itrans_source;
itrans_destination.dbms=profilestring("pb.ini","Profile EAS Demo DB V9","dbms","")
itrans_destination.database=profilestring("pb.ini","Profile EAS Demo DB V9","database","")
itrans_destination.logid=profilestring("pb.ini","Profile EAS Demo DB V9","logid","")
itrans_destination.logpass=profilestring("pb.ini","Profile EAS Demo DB V9","logpass","")
itrans_destination.servername=profilestring("pb.ini","Profile EAS Demo DB V9","servername","")
itrans_destination.lock=profilestring("pb.ini","Profile EAS Demo DB V9","lock","")
itrans_destination.userid=profilestring("pb.ini","Profile EAS Demo DB V9","userid","")
itrans_destination.dbpass=profilestring("pb.ini","Profile EAS Demo DB V9","databasepassword","")
itrans_destination.dbparm=profilestring("pb.ini","Profile EAS Demo DB V9","dbparm","")
connect using itrans_destination;
//建立管道对象
pipe=create u_user_pipe_object
pipe.pipe_status_read=status_read
pipe.pipe_status_written=status_written
pipe.pipe_status_error=status_error
dw_destination.settransobject(itrans_destination)
dw_destination.retrieve()
(其中dw_destination和dw_pipe_error是窗口中的两个数据窗口,dw_destination用来显示要进行数据灌入操作的源表数据,dw_pipe_error用来显示传输过程中出错的记录的区域,u_user_pipe_object是创建的pipeline用户对象---》选standard class-->再选择pipeline。。。。)
然后执行如下代码:
integer result
pipe.dataobject="p_sql_anywhere"
result=pipe.start(itrans_source,itrans_destination,dw_pipe_error)
messagebox("ts",result)
不知道为何result=1,这样的话就是打开失败呀,问题会在哪里呢?请前辈赐教,非常感谢呀!
(p_sql_anywhere是创建好的pipeline对象,经过测试没有问题)
------解决方案--------------------
管道很久没用过了。不过你的写法好像有问题result=pipe.start(itrans_source,itrans_destination,dw_pipe_error),itrans_source是数据源,itrans_destination是目标
但是按照你的说明你是把itrans_destination当成数据源来用了。这好像写反了吧。呵呵F1看看管道的用法吧
还有就是connect using itrans_destination;connect using itrans_source; 连接事务一定要判断一下返回值。以便确认是不是真的连上了数据库。
------解决方案--------------------
result=1是成功啊
Returns 1 if it succeeds and a negative number if an error occurs. Error values are: