数据库
SqlServer2005
服务端
TDataSetProvider-->TAdoQuery-->TAdoConnection
客户端
TClientDataSet动作:
结果集(服务端)-->TClientDataSet(客户端)-->显示-->新增,修改,删除-->保存.分析:
1,如果 结果集是 Select * From A
新增,修改,删除
保存<(服务端)TDataSetProvider.ApplyUpdates(vDelta,0,vErrorInt)>
一切Ok,没有任何问题.
2,如果 结果集是 Select A.*,B.Name From A,B Where A.ID=B.ID
新增,修改,删除
保存<(服务端)TDataSetProvider.ApplyUpdates(vDelta,0,vErrorInt)>
------------------------------------------我只想保存针对A表的修改.
出错! Why?????
服务端保存函数:
function SaveSqlNote(TempAdoConn:TADOConnection; const vTabName, vSqlStr: WideString; var vDelta:OleVariant):Integer;
var
vErrorInt:Integer;
TempAdoQuery:TADOQuery;
TempDsp:TDataSetProvider;
begin
try
TempAdoQuery:=TADOQuery.Create(nil);
TempDsp:=TDataSetProvider.Create(nil);
TempAdoQuery.Connection:=TempAdoConn;
TempAdoQuery.Close;
TempAdoQuery.SQL.Clear;
TempAdoQuery.SQL.Text:=vSqlStr;
TempDsp.DataSet:=TempAdoQuery;
TempDsp.ApplyUpdates(vDelta,0,vErrorInt);
except
vErrorInt:=-1;
end;
try
TempDsp.Free;
TempAdoQuery.Free;
except
;
end;
Result:=vErrorInt;
end;服务端接口:
function TTempServer.InterfaceSaveNote(const vTableName, vSqlStr: WideString; var vDelta: OleVariant): OleVariant;
begin
Result:=SaveSqlNote(DM.ADOConn,vTableName,vSqlStr,vDelta);
end;客户端调用:
vTableName:='A';
vSqlStr:='Select * From A ';
vDelta:=ClientDataSet1.Delta;
vResult:=SocketConnection1.AppServer.InterfaceSaveNote(vTableName,vSqlStr,vDelta);
谁哪位能给指点下迷津啊,,,,或者有示例程序..?能不能发我一份..谢谢.
SqlServer2005
服务端
TDataSetProvider-->TAdoQuery-->TAdoConnection
客户端
TClientDataSet动作:
结果集(服务端)-->TClientDataSet(客户端)-->显示-->新增,修改,删除-->保存.分析:
1,如果 结果集是 Select * From A
新增,修改,删除
保存<(服务端)TDataSetProvider.ApplyUpdates(vDelta,0,vErrorInt)>
一切Ok,没有任何问题.
2,如果 结果集是 Select A.*,B.Name From A,B Where A.ID=B.ID
新增,修改,删除
保存<(服务端)TDataSetProvider.ApplyUpdates(vDelta,0,vErrorInt)>
------------------------------------------我只想保存针对A表的修改.
出错! Why?????
服务端保存函数:
function SaveSqlNote(TempAdoConn:TADOConnection; const vTabName, vSqlStr: WideString; var vDelta:OleVariant):Integer;
var
vErrorInt:Integer;
TempAdoQuery:TADOQuery;
TempDsp:TDataSetProvider;
begin
try
TempAdoQuery:=TADOQuery.Create(nil);
TempDsp:=TDataSetProvider.Create(nil);
TempAdoQuery.Connection:=TempAdoConn;
TempAdoQuery.Close;
TempAdoQuery.SQL.Clear;
TempAdoQuery.SQL.Text:=vSqlStr;
TempDsp.DataSet:=TempAdoQuery;
TempDsp.ApplyUpdates(vDelta,0,vErrorInt);
except
vErrorInt:=-1;
end;
try
TempDsp.Free;
TempAdoQuery.Free;
except
;
end;
Result:=vErrorInt;
end;服务端接口:
function TTempServer.InterfaceSaveNote(const vTableName, vSqlStr: WideString; var vDelta: OleVariant): OleVariant;
begin
Result:=SaveSqlNote(DM.ADOConn,vTableName,vSqlStr,vDelta);
end;客户端调用:
vTableName:='A';
vSqlStr:='Select * From A ';
vDelta:=ClientDataSet1.Delta;
vResult:=SocketConnection1.AppServer.InterfaceSaveNote(vTableName,vSqlStr,vDelta);
谁哪位能给指点下迷津啊,,,,或者有示例程序..?能不能发我一份..谢谢.
解决方案 »
- 新手问个字符串的问题
- 问大家一个DLL调用的问题
- 跪求:大哥帮忙 treeview 的编辑问题 在线等!
- 请教。。。(急)
- 关于SOCKET传输数据的问题,在线等待,分不够再加!!!
- 难题,没有解决,高手请说几句
- 在WIN2000,XP中,自定义纸张的报表打印不对,请大家帮忙解决,在线等待!
- 如何让DBGrid从数据库读取的数据具有特定的含义
- TWinControl的问题?高手请进!
- 如何不用码表就将Big5->GB / GB->Big5 呢?我是指用代码实现,最好在50行以内,望高手赐教!
- 数据库中性别列数据类型为为false true 怎么在显示时改为男女
- dbgrideh通过Tclientdataset连接tdatasetprovider,不能排序
1.用计算字段,
2.自己产生sql更新语句
3.自己封装一个clientdataset控件,在其内部维护一个专用于数据更新的内部clientdataset(只select那个要更新的表),再两者之间的数据同步。(我就是这么干的)