邻家男孩 发表于 2007-1-29 09:20
[求助]打不开数据管道
各位老师,我在某医疗行业信息部门工作,刚接触了一点PB,我想从我院HIS数据库服务器里导出常用的数据到我们本地的数据库,这样既有利于提高报表的运行效率,也可以避免在HIS数据库出现意外的情况下,我科数据的安全。<BR> 于是,就采用了数据管道。首先用数据管道画笔创建数据管道对象,接着创建管道标准类用户对象及其相关函数等,再就是配置数据库、连接数据库等操作都完成了。在PB数据管道画笔界面直接运行数据管道对象,能正常成功传输数据。但是,在程序中运行数据管道却没有成功,显示打不开数据管道。我反反复复检查了多遍程序,没有发现什么异常,数据库能够连接成功,但就是打不开数据管道。<BR> 我上网搜了一下,也没有发现有价值的贴子。恳请各位,帮帮忙。下面是运行管道的程序:<BR>u_sjdr iu_sjdr<BR>iu_sjdr=create u_sjdr<BR>iu_sjdr.dataobject='ghks'<BR>integer lt1,lt2<BR>lt1=iu_sjdr.uf_connect()<BR>if lt1=0 then<BR> lt2=iu_sjdr.uf_start()<BR> iu_sjdr.uf_error(lt2)<BR> iu_sjdr.uf_disconnect()<BR>else<BR> messagebox("连接错误","数据库连接没有成功")<BR>end if<BR>destroy iu_sjdr[em13][em13][em13]<BR>
notbig 发表于 2007-1-29 09:44
u_sjdr 这个对象做好了吗?
邻家男孩 发表于 2007-1-29 09:56
u_sjdr 是创建的管道标准类用户对象,已创建好。
notbig 发表于 2007-1-29 10:33
要不你去跟踪程序,这一段没有问题<BR>
邻家男孩 发表于 2007-1-29 10:45
朋友,能不能详细一点,我刚接触PB,知之甚少,跟踪我不会,但是我改变条件语句试过了,无论源或是目的数据库都能连接成功,iu_sjdr.dataobject='ghks' ,对象赋值后,我测了一下其syntax属性都有内容,但是就在运行管道时,显示无法打开数据管道。另外,我将iu_sjdr.dataobject='ghks' 语句注释后,也是打不开数据管道,好象这一句根本不存在一样。我感到很纳闷。谢谢你的积极回复。
notbig 发表于 2007-1-29 10:47
<P>你要确保你的那个对象对事务(两个)都已连接成功</P>
邻家男孩 发表于 2007-1-29 10:57
当然,这我能保证,它们都能返回连接成功的代码。
notbig 发表于 2007-1-29 11:02
那个对象是你自己写的还是抄别人的,你可以把第一楼的调用的各个函数的代码贴出来<BR>
邻家男孩 发表于 2007-1-29 11:21
格式、套路是沿用他人的,其它代码如下:<BR>[attach]16389[/attach]<BR>
notbig 发表于 2007-1-29 12:04
你做的管道有参数吗?
邻家男孩 发表于 2007-1-29 12:31
没有参数。
notbig 发表于 2007-1-29 12:39
你是编译后不行还是未编译运行不行
邻家男孩 发表于 2007-1-29 14:49
未编译运行就打不开管道,也试过编译来也打不开管道。
notbig 发表于 2007-1-29 15:56
<P>在PB编辑环境下,你打开管道时指定的数据库是不是与运行环境中设定的两个事务的数据库是一样的</P>
邻家男孩 发表于 2007-1-29 16:08
是一样的,程序中数据库的配置参数就是从数据库配置画笔中复制的。
notbig 发表于 2007-1-29 16:32
看不出有什么问题哟。
邻家男孩 发表于 2007-1-30 09:19
我也魄感费解,相关书我也查了不少,有说跟编译方式有关,有说跟管道的标准类用户对象的“syntax”属性有关,也有说跟相关的dll文件有关,前两方面我做了相关尝试,但没有答案,这个问题折磨我有近二十天了,开始我在PB6.5中开发,这个问题没有解决,于是我又改在PB9.0中开发,还是这个问题,谁能给我一个确切的合理的回答啊?
notbig 发表于 2007-1-30 10:30
你可否试下换个表试试<BR>
notbig 发表于 2007-1-30 10:32
<P>数据管道开发有时确实会遇到些麻烦,但有时跟补丁有关。有时又是自己不小心,比如开发环境跟运行环境不同,连的表的结构和类型不同导致。</P>
邻家男孩 发表于 2007-1-30 15:36
<DIV class=quote><B>以下是引用<U>notbig</U>在2007-1-30 10:30:27的发言:</B><BR>你可否试下换个表试试<BR></DIV>
<p> 我觉得换个表没有什么用,因为无论我将语句:iu_sjdr.dataobject='ghks' 注释掉,还是赋成其他值,都只是一个“打不开数据管道”的提示,就好象这一句可有可无,我总觉得在执行数据管道前,似乎少了一步,或者需要将什么激活之类步骤,各位PB的前辈们仔细帮我捉莫一下啊?