服务端的ado存储过程参数TParameters和客户端TClientDataSet的 TParam类型不匹配!!(31分)

  • 主题发起人 主题发起人 dulao5
  • 开始时间 开始时间
D

dulao5

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大侠,事情是这样的:
我在服务器的远程数据模块添加一个TADOStoredProc控件,关联一个数据库中的存储过程,
然后为他加上DataSetProvider1,做好连接后该ADOStoredProc控件的Parameters属性也就在设计阶段就有了所需要的参数列表
然后我在客户端做好DCOMConnection或者ScoketConnection,添加TClientDataSet后和服务端的DataSetProvider1关联,到这一步没有错误,
但是在我用这个TClientDataSet的时候,需要为存储过程参数赋值,并在执行后得到服务器返回的存储过程返回值(return)和输出参数(OutPut)
程序运行到:
if(0=TClientDataSet1.Params.ParamValues['@RETURNVALUE']) then
......
时发生EOleException异常,说“不正常的定义了参数对象,提供了不一致或者不完整信息”
请问大侠,我该怎么办??我只有31的积分了,全部奉献[:(]

 
经过我分析发现,在服务端设计阶段,能够看到ADOStoredProc控件Parameters属性的正确成员,但是在客户端表单设计阶段,相映的TClientDataSet的Params属性值都是空的,在第一次运行时报错,因为里面什么参数都没有,所以我手工把服务器端ADOStoredProc控件Parameters属性内的参数挨个添加到客户端相映的TClientDataSet的Params属性内了。
但是他们控件的Param不太一样,比如参数类型,ADO中用的是Direction,但是TClientDataSet的param参数类型属性名是‘Param type’;
更不安的是,两者参数类型枚举名也不一样,比如描述该值是返回值的时候,一个是“ptResult ”一个是“pdReturnValue”
我个人猜测,Delphi 中表示ADO参数的数据结构定义和TClientDataSet中参数数据结构的定义不一样,一个是
TParameter Unit ADODB
一个是 TParam Unit DB
 
后退
顶部