J
jeeh
Unregistered / Unconfirmed
GUEST, unregistred user!
请问:
我在应用服务器上定义了一个function(也是对应一个接口),用来调用dsp控制更新数据。方法如下:
function TCOAppSrv.UpdateData(const SQL: WideString;
const TableName:
WideString;
var Delta: OleVariant): Integer;
begin
if VarIsEmpty(Delta) then
Exit;
try
//取得更新目的表的结构
qryCheckdata.Close;
qryCheckdata.SQL.Text := 'select * from '+TableName+' where 1=0 ';
qryCheckdata.Open;
qryUpdateData.Close;
qryUpdateData.SQL.Text := SQL;
dspUpdateData.ApplyUpdates(Delta, 0, Result);
except
raise Exception.Create('更新数据出错!');
end;
end;
end;
dspUpdateData的DataSet属性连接到qryUpdateData(adoQuery),其Option属性为[poAllowMultiRecordUpdates,poAllowCommandText],UpdateMode属性为upWhereChanged;
客户端调用语句是:
DCOMConn.AppServer.UpdateData(SQL, ADataSet.Delta);
出现的问题是:只要我在客户端更新一笔数据,保存时应用服务器会把所有与被更新数据一样的,都更新了。如表中有3笔记录,其中editFlag字段都是'10101'。但我只要改第一笔记录的editFlag为'10105'。可结果是所有的'10101',都变成'10105'了。?????
其中的SQL语句一般是这:select * from TableName.'TableName即为目的表。
我的开发环境是:Win2K Server + D7.没有使用第三方控件。
我在应用服务器上定义了一个function(也是对应一个接口),用来调用dsp控制更新数据。方法如下:
function TCOAppSrv.UpdateData(const SQL: WideString;
const TableName:
WideString;
var Delta: OleVariant): Integer;
begin
if VarIsEmpty(Delta) then
Exit;
try
//取得更新目的表的结构
qryCheckdata.Close;
qryCheckdata.SQL.Text := 'select * from '+TableName+' where 1=0 ';
qryCheckdata.Open;
qryUpdateData.Close;
qryUpdateData.SQL.Text := SQL;
dspUpdateData.ApplyUpdates(Delta, 0, Result);
except
raise Exception.Create('更新数据出错!');
end;
end;
end;
dspUpdateData的DataSet属性连接到qryUpdateData(adoQuery),其Option属性为[poAllowMultiRecordUpdates,poAllowCommandText],UpdateMode属性为upWhereChanged;
客户端调用语句是:
DCOMConn.AppServer.UpdateData(SQL, ADataSet.Delta);
出现的问题是:只要我在客户端更新一笔数据,保存时应用服务器会把所有与被更新数据一样的,都更新了。如表中有3笔记录,其中editFlag字段都是'10101'。但我只要改第一笔记录的editFlag为'10105'。可结果是所有的'10101',都变成'10105'了。?????
其中的SQL语句一般是这:select * from TableName.'TableName即为目的表。
我的开发环境是:Win2K Server + D7.没有使用第三方控件。