1、Server.exe是DataSanp服务器。 用了一个 TADOConnection 名称为 ADOConnection1 连接Sql Server。
用了一个 TADOQuery 名称为 ADOQuery1 连接ADOConnection1。
用了一个 TDataSetProvider 名称为 RemoteDataSetProvider1 连接ADOQuery1。2、aaa.exe是中间层。
创建了一个TRemoteDataMoudle。
type
TSqlHelper = class(TRemoteDataModule, ISqlHelper)
用了一个 TSQLConnection 名称为 _SQLConnection 连接Server.exe。
用了一个 TDSProviderConnection 名称为 DSProviderConnection1 连接_SQLConnection。
用了一个 TClientDataSet1 连接 DSProviderConnection1。
用了一个 TDataSetProvider 名称为 DataSetProvider1 连接ClientDataSet1。3、test.exe是客户端测试程序。
用了一个TDCOMConnection 名称为 DCOMConnection 来连接中间层(中间层是远程数据模块)。
用了一个 TClientDataSet 名称为 cdsTest 来连接 DCOMConnection。 现在情况如下:
如下代码能正确执行,并返回数据。
cdsTest.Active := False;
cdsTest.DataRequest('select * from table');
cdsTest.Open; 如下代码能不能正确执行。
cdsTest.Active := False;
cdsTest.DataRequest('update table set somefield = 0 where .....');
cdsTest.Execute;
报错如下:cdsTest:Execute not Supportted. 请问为什么不能执行Delele,Update,Insert。只能查询数据。 如果我用独立的exe直接连接Server.exe,那么上面的
cdsTest.Active := False;
cdsTest.DataRequest('update table set somefield = 0 where .....');
cdsTest.Execute;
是可以正确执行的。我的判断是DataSnap服务没有问题。问题应该出在TRemoteDataMoudle这个中间层。
用了一个 TADOQuery 名称为 ADOQuery1 连接ADOConnection1。
用了一个 TDataSetProvider 名称为 RemoteDataSetProvider1 连接ADOQuery1。2、aaa.exe是中间层。
创建了一个TRemoteDataMoudle。
type
TSqlHelper = class(TRemoteDataModule, ISqlHelper)
用了一个 TSQLConnection 名称为 _SQLConnection 连接Server.exe。
用了一个 TDSProviderConnection 名称为 DSProviderConnection1 连接_SQLConnection。
用了一个 TClientDataSet1 连接 DSProviderConnection1。
用了一个 TDataSetProvider 名称为 DataSetProvider1 连接ClientDataSet1。3、test.exe是客户端测试程序。
用了一个TDCOMConnection 名称为 DCOMConnection 来连接中间层(中间层是远程数据模块)。
用了一个 TClientDataSet 名称为 cdsTest 来连接 DCOMConnection。 现在情况如下:
如下代码能正确执行,并返回数据。
cdsTest.Active := False;
cdsTest.DataRequest('select * from table');
cdsTest.Open; 如下代码能不能正确执行。
cdsTest.Active := False;
cdsTest.DataRequest('update table set somefield = 0 where .....');
cdsTest.Execute;
报错如下:cdsTest:Execute not Supportted. 请问为什么不能执行Delele,Update,Insert。只能查询数据。 如果我用独立的exe直接连接Server.exe,那么上面的
cdsTest.Active := False;
cdsTest.DataRequest('update table set somefield = 0 where .....');
cdsTest.Execute;
是可以正确执行的。我的判断是DataSnap服务没有问题。问题应该出在TRemoteDataMoudle这个中间层。
解决方案 »
- 按钮动态赋值问题
- 如何把jpeg还原成bmp?
- 程序运行中线程线程的奇怪问题
- 在线等待,clientdataset与dbgrid迷惑的问题
- 直接用sql语句将数据转为xml的问题?
- 不想让用户直接操作数据库/可以怎么办,用户需用在DBGRID输入数据
- 在DELPHI+EXCEL中,怎样设置某一列的度?
- 在哪下载个控件呢
- 高手支招:delphi 5+win98编译的系统在win2000下运行会产生某些字体的变化(变大),有什么办法能够解决?谢谢赐教!
- ODBC的API?
- 如何使程序不等待SocketConnection.AppServer执行完毕!
- [苏州] 找个DELPHI学徒的工作 工资看着给
这个结构是畸形的.