D donkey Unregistered / Unconfirmed GUEST, unregistred user! 2002-12-11 #1 比如说在com对象中我创建了一个TADOTable,在外部有一个TADOConnection,我想把ADOTable 的connection属性设置成外部的TAdoConnection,如何作?
O osto Unregistered / Unconfirmed GUEST, unregistred user! 2002-12-11 #2 外部是怎么意思? 在不同的com对象里。。。。。。。。。。?
X xeen Unregistered / Unconfirmed GUEST, unregistred user! 2002-12-11 #3 可以把TAdoConnection的connectionstring属性传进来就行了.
L lccc Unregistered / Unconfirmed GUEST, unregistred user! 2002-12-11 #4 在程序间传递Delphi的对象是不行的。 但可以传递ADOTable的_RecordSet对象, 因为ADOtable其实是对COM对象_RecordSet 的封装而已。
D donkey Unregistered / Unconfirmed GUEST, unregistred user! 2002-12-12 #5 比如说我的每一个com对象中含有一个ADOTable,但是我希望他们共享一个 ADOConnection,这样就必须把connection传递到com对象里面去,怎么作?
J jsxjd Unregistered / Unconfirmed GUEST, unregistred user! 2002-12-12 #6 你可以把 connection 的连接参数传给 com 中的 table.
Y youou Unregistered / Unconfirmed GUEST, unregistred user! 2002-12-12 #7 在COM端直接建立一个文本,记录你的CONNECTION STRING 。 然后直接在读进来设置就好了。 不用传来传去的吧。。 我就是这样子的。。
D donkey Unregistered / Unconfirmed GUEST, unregistred user! 2002-12-12 #8 传一个连接字串当然很简单,但是实际效果有很大差别: 如果有三个com对象,照你们说的传递连接字串的话,相当于数据库上有三个连接; 如果仅仅传递ADOConnection的话,才一个连接!特别是对于有连接数限制的数据库,如SQL server,当对象多的时候,就会导致无法连接.如果是网络的话,同时服务的客户数有很大的 限制!
传一个连接字串当然很简单,但是实际效果有很大差别: 如果有三个com对象,照你们说的传递连接字串的话,相当于数据库上有三个连接; 如果仅仅传递ADOConnection的话,才一个连接!特别是对于有连接数限制的数据库,如SQL server,当对象多的时候,就会导致无法连接.如果是网络的话,同时服务的客户数有很大的 限制!
Y youou Unregistered / Unconfirmed GUEST, unregistred user! 2002-12-12 #9 如果仅仅传递ADOConnection的话,才一个连接! ~~~是这样的吗?
Y youou Unregistered / Unconfirmed GUEST, unregistred user! 2002-12-12 #11 顺便问一下: 我要这么传行不行?如何传。答对了给100.不够还可以加。 var CpkData:TCpkData; ICp:ICpkToDB; Data,Ret_Message:OleVariant; begin with CpkDatado begin LINE:='P12'; STATION:='ICT1'; MODEL:='MODELNAME'; CRT:='CRT'; ITEM_NAME:='BU,BU,'; ITEM_VALUE:='1.2,1.3,'; SERIAL_NUM:='0000'; end; ICp:=CoCpkToDB.CreateRemote('Q'); ICp.WriteToDB(CpkData,Ret_Message); // 如何传这个TCpkData类型的数据?参数类型为:OLEVARIANT end;
顺便问一下: 我要这么传行不行?如何传。答对了给100.不够还可以加。 var CpkData:TCpkData; ICp:ICpkToDB; Data,Ret_Message:OleVariant; begin with CpkDatado begin LINE:='P12'; STATION:='ICT1'; MODEL:='MODELNAME'; CRT:='CRT'; ITEM_NAME:='BU,BU,'; ITEM_VALUE:='1.2,1.3,'; SERIAL_NUM:='0000'; end; ICp:=CoCpkToDB.CreateRemote('Q'); ICp.WriteToDB(CpkData,Ret_Message); // 如何传这个TCpkData类型的数据?参数类型为:OLEVARIANT end;
L lhzzj Unregistered / Unconfirmed GUEST, unregistred user! 2002-12-12 #13 在不同程序间传递对象是不可能的,因为他们根本就不在一个进程空间。如果是一个进程空间的话, 肯定可以的,你就传递指针好了。
Y youou Unregistered / Unconfirmed GUEST, unregistred user! 2002-12-12 #15 todo nkey: http://expert.csdn.net/Expert/topic/1246/1246125.xml?temp=.2468988 看看这个。。 “如果仅仅传递ADOConnection的话,才一个连接!” 好像这么说有点问题。。。
todo nkey: http://expert.csdn.net/Expert/topic/1246/1246125.xml?temp=.2468988 看看这个。。 “如果仅仅传递ADOConnection的话,才一个连接!” 好像这么说有点问题。。。
张 张无忌 Unregistered / Unconfirmed GUEST, unregistred user! 2002-12-12 #16 不同程序之间我想也可以穿对象,呵呵,但是要涉及到什么列集和散剂,而且我想的话2个程序 最好都是用同一种便宜起开发出来的,否则不能识别对象。但是我认为目前还没有能 实现传递对象,如果是COM对象到是可能,因为COM就是用代理和存根对象来实现跨进程 通讯
不同程序之间我想也可以穿对象,呵呵,但是要涉及到什么列集和散剂,而且我想的话2个程序 最好都是用同一种便宜起开发出来的,否则不能识别对象。但是我认为目前还没有能 实现传递对象,如果是COM对象到是可能,因为COM就是用代理和存根对象来实现跨进程 通讯
D donkey Unregistered / Unconfirmed GUEST, unregistred user! 2002-12-12 #17 我看了,支持的是我的结论呀,而且ADOConection控件的目的正在于此.不知老兄说的是哪 一句有问题?
S Sachow Unregistered / Unconfirmed GUEST, unregistred user! 2002-12-12 #18 传递一个对象(如ADOTable)可不是一个好主意,你知道把这个对象传递到远端后它能干什 么吗?比如说你的A机上的一个ADOTable已经打开了一个表,这时想把这个ADOTable传递到 B机上(呕,我说到DCOM上去了,但这样考虑也许更有扩展性一点),但B机上并没有ADOTable 的实例,它该怎么办呢?太复杂了……我们最终需要的实际上不是跨进程(或跨计算机)操纵 另一个对象,而是要获取某个对象所能提供的数据。我们考虑这个修改一下结构好吗,将传递 ADO数据集对象变为传递该数据集所获得的数据,方法定义(MIDL)为: HRESULT _stdcall GetMyData([in] BSTR KeyValue, [out] VARIANT * ReturnData, [out, retval] long * Result ); 客户端通过把KeyValue传给服务器,服务器处理后将数据写到ReturnData里,这样事情就 变得清楚、简单多了。这样的好处是我们的接口不用考虑该采用哪种数据引擎,服务器和客 户在业务逻辑方面也就不会纠缠不清了。
传递一个对象(如ADOTable)可不是一个好主意,你知道把这个对象传递到远端后它能干什 么吗?比如说你的A机上的一个ADOTable已经打开了一个表,这时想把这个ADOTable传递到 B机上(呕,我说到DCOM上去了,但这样考虑也许更有扩展性一点),但B机上并没有ADOTable 的实例,它该怎么办呢?太复杂了……我们最终需要的实际上不是跨进程(或跨计算机)操纵 另一个对象,而是要获取某个对象所能提供的数据。我们考虑这个修改一下结构好吗,将传递 ADO数据集对象变为传递该数据集所获得的数据,方法定义(MIDL)为: HRESULT _stdcall GetMyData([in] BSTR KeyValue, [out] VARIANT * ReturnData, [out, retval] long * Result ); 客户端通过把KeyValue传给服务器,服务器处理后将数据写到ReturnData里,这样事情就 变得清楚、简单多了。这样的好处是我们的接口不用考虑该采用哪种数据引擎,服务器和客 户在业务逻辑方面也就不会纠缠不清了。
1 1Fuyi Unregistered / Unconfirmed GUEST, unregistred user! 2002-12-12 #19 COM+中有数据库接池缓冲功能 A对象对ADOConnection连接断了, B对象新建的ADOConnection,数据库接缓冲池中取一个连接就是了,实际还是用的一个连接, 传递对象本来就不是合理的设计方案 如果这样你可以设计一个C对象,A和B共用C对象, 看看COM的书对你有帮助.
COM+中有数据库接池缓冲功能 A对象对ADOConnection连接断了, B对象新建的ADOConnection,数据库接缓冲池中取一个连接就是了,实际还是用的一个连接, 传递对象本来就不是合理的设计方案 如果这样你可以设计一个C对象,A和B共用C对象, 看看COM的书对你有帮助.
D donkey Unregistered / Unconfirmed GUEST, unregistred user! 2002-12-13 #20 Sachow兄说的有道理,我就是这样干的,用delphi写com对象供调用. 问题在于,returndata怎么定义,是使用variant array吗?