一个关于分布式应用系统中,动态更新commandtext的问题(50分)

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

dontal

Unregistered / Unconfirmed
GUEST, unregistred user!
我在远程数据模块中放入一个AdoDataSet1,设了它的commandtext,又设了一个
datasetprovider,连接到adodataset1,它的options设成了[poAllowCommandText],
在客房端添加了一个clientdataset,连接到datasetprovider,我在程序中动态改变
clientdataset的commandtext,然后open,点击按钮提交时提示错误如下:
“Project XXXX.exe”raised exception class EOLeException with message
'adodataset1:Cannot perform this operation on an open dataset.'”
是什么原因。在ClientDataSet的AfterOpen中要不要写一些代码。
 
改变 commandtext 前 Close 没有?
 
dontal 兄弟:
我在 http://www.delphibbs.com/delphibbs/dispq.asp?lid=1246167 中写了一段话,
你可以看看。 我这里也是很多问题,一起学习吧。
 
建议:如果查询的话!用 Query 做!
...
 
同意jsxjd
 
同意楼上几层的观点
 
to 楼上:Query怎么链接DataSetProvider??

一般 将datasetprovider的options设成了[poAllowCommandText] 就可以了。

这是我的部分代码:
DMForm.TEXT_ClientDataSet.Close;
DMForm.TEXT_ClientDataSet.CommandText:=
' select TAB_BLOCK.BLOCK_NAME as 栏目名称,Tab_RESTYPE.TYPE_MC as 栏目类别名称,'+
' TAB_BLOCK.BLOCK_TYPE as 栏目类别编号,TAB_BLOCK.BLOCK_ID as 栏目编号'+
' from TAB_BLOCK,TAB_USERCOMMISION,TAB_RESTYPE'+
' where TAB_USERCOMMISION.BLOCK_ID = TAB_BLOCK.BLOCK_ID'+
' and TAB_BLOCK.BLOCK_OVER=1'+
' and TAB_BLOCK.BLOCK_TYPE=TAB_RESTYPE.TYPE_ID'+
' and TAB_USERCOMMISION.USER_ID =:USER_ID_X'; //
DMForm.TEXT_ClientDataSet.Params.ParamByName('USER_ID_X').AsString:=trim(user_Edit.Text);
try
DMForm.TEXT_ClientDataSet.Open;
except
MessageBox(Handle,'出现查询错误!','提示信息',MB_OK+MB_ICONWARNING);
exit;
end;
 
后退
顶部