关于delphi7中provider的诡异问题 高分相送 up有分

sdwtao 2003-04-09 09:45:56
我创建了一个transaction datamodule 在其中的 放入了 adoconnection,两个adoquery,一个datasetprovider

当我直接将adoquery设一个sql然后 河provider联系在一起的时候
我的客户端的clientdataset能够取得上面组件提供的provider(在属性表中)

可是当我将adoquery中新坚一个lookup字段,河adoquery2
联系在一块之后,再重新注册该com+组件。这次客户端的clientdataset就找不到
这个provider了。

真不知道是未什么?

哪位高人指点一下,兄弟我高分相送。实在是急啊~~~
...全文
10 点赞 收藏 24
写回复
24 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
sdwtao 2003-04-12
给分拉
回复
WangPeter 2003-04-11
直接填上ProviderName就行了么。
回复
sdwtao 2003-04-11
不知道是不是盗版原因
反正我的provider注册老是不成功(客户端找不到)
回复
wslashy 2003-04-11
你说的问题我已经测过了,而且连上后程序运行正常,没有你说的问题,
嗯,可能是你操作的时候有失误的地方,
回复
二手夏利 2003-04-11
up
回复
sdwtao 2003-04-11
不过我将objectpooling的所有相关选项全部给去掉了
回复
sdwtao 2003-04-11
呵呵 兄弟们 问题已经不出现了 但是究竟为什么会这样 还有待 弟兄们讨论
回复
sdwtao 2003-04-11
transaction datamodule组件的部分代码
type
TmtsStocks = class(TMtsDataModule, ImtsStocks)
adocKM: TADOConnection;
adoqStocks: TADOQuery;
dspStocks: TDataSetProvider;
procedure MtsDataModuleActivate(Sender: TObject);
procedure MtsDataModuleDeactivate(Sender: TObject);
procedure MtsDataModuleDestroy(Sender: TObject);
procedure dspStocksAfterApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
procedure dspStocksUpdateError(Sender: TObject;
DataSet: TCustomClientDataSet; E: EUpdateError;
UpdateKind: TUpdateKind; var Response: TResolverResponse);
private
{ Private declarations }
protected
class procedure UpdateRegistry(Register: Boolean; const ClassID, ProgID: string); override;
public
{ Public declarations }
end;
impletment
procedure TmtsStocks.MtsDataModuleActivate(Sender: TObject);
var config:IcoEnvConfig;
connectstring :widestring;
begin
config:=CocoEnvConfig.Create;
config.GetConnectString(connectstring);
adocKM.ConnectionString:=connectstring;
adocKM.Connected:=true;

end;

procedure TmtsStocks.MtsDataModuleDeactivate(Sender: TObject);
begin
if IsInTransaction then
SetComplete;
adocKM.Connected:=false;
end;
procedure TmtsStocks.MtsDataModuleDestroy(Sender: TObject);
begin
adocKM.Connected:=false;
end;

procedure TmtsStocks.dspStocksAfterApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
begin
SetComplete;
end;

procedure TmtsStocks.dspStocksUpdateError(Sender: TObject;
DataSet: TCustomClientDataSet; E: EUpdateError; UpdateKind: TUpdateKind;
var Response: TResolverResponse);
begin
Response:=rrAbort;
SetAbort;
end;

重要的属性
object mtsStocks: TmtsStocks
OldCreateOrder = False
OnDestroy = MtsDataModuleDestroy
OnActivate = MtsDataModuleActivate
OnDeactivate = MtsDataModuleDeactivate
Pooled = False
Left = 247
Top = 125
Height = 366
Width = 353
object adocKM: TADOConnection
Connected = True
ConnectionString =
'Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initi' +
'al Catalog=KM;Data Source=.'
LoginPrompt = False
Provider = 'SQLOLEDB.1'
Left = 56
Top = 40
end
object adoqStocks: TADOQuery
Connection = adocKM
CursorType = ctStatic
Parameters = <>
SQL.Strings = (
'select * from stocks')
Left = 192
Top = 48
end
object dspStocks: TDataSetProvider
DataSet = adoqStocks
OnUpdateError = dspStocksUpdateError
AfterApplyUpdates = dspStocksAfterApplyUpdates
Left = 128
Top = 112
end
end
回复
cgh1970 2003-04-11
up
回复
lillin 2003-04-11
请写详细点比如说明SQL
语句还有各个控件的重要属性写出来。
回复
sdwtao 2003-04-11
peter兄
我还是不能把这个问题和缓冲池联系起来

能否给解释一二?
回复
Frend 2003-04-11
up
回复
WangPeter 2003-04-11
我看了http://expert.csdn.net/Expert/topic/1647/1647153.xml?temp=.7055475。
是启用缓冲池的问题,要解决问题请参阅:
http://expert.csdn.net/Expert/topic/1600/1600678.xml?temp=.7698633。

回复
kingecg 2003-04-11
up
回复
dreamonce 2003-04-11
不懂,只能up
回复
WangPeter 2003-04-11
是否ADOQuery2在适当时候应该Active啊。
回复
sdwtao 2003-04-11
peter兄 这种方法我试过
你在
http://expert.csdn.net/Expert/topic/1647/1647153.xml?temp=.7055475
贴上也看到了

关键我不知道究竟是盗版问题 还是我做的不对
究竟provider注册需要什么条件
回复
sdwtao 2003-04-10
可以肯定的是该provider一定注册的有问题
我不知道 provider的注册是怎么整的

似乎通过data属性来传递数据,对自定义的字段好像不太灵 ,不知道诸位平时一般是怎么办的?
回复
mickeyjiang 2003-04-10
不用直接通过属性连接Provide,写一个简单的方法把Provide的Data属性返回就可以
回复
jeremychen001181 2003-04-10
不懂
回复
加载更多回复
相关推荐
发帖
网络通信/分布式开发
创建于2007-08-02

1572

社区成员

Delphi 网络通信/分布式开发
申请成为版主
帖子事件
创建了帖子
2003-04-09 09:45
社区公告
暂无公告