数据库
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);
谁哪位能给指点下迷津啊,,,,或者有示例程序..?能不能发我一份..谢谢.
解决方案 »
- Delphi Thread
- 请各位大侠帮帮忙,我最近在看一本Delphi的书,上面有段程序居然是崩溃!!!
- 关于SQL错误提示。救命啦。
- sql做的导入语句老是出错,大家看看.
- 谁有个人ppt展示的例子
- 如何在delphi中,直接调用mathtype输入公式,然后将公式返回到richedit框中?
- 请问在DBGRID中如何显示两行以上的标题栏?(在线等,谢谢谢!)
- 主从表的修改问题?
- 給您送分啦!!!
- 如何在Delphi中实现PING,谢谢各位大侠!
- 数据库中性别列数据类型为为false true 怎么在显示时改为男女
- dbgrideh通过Tclientdataset连接tdatasetprovider,不能排序
1.用计算字段,
2.自己产生sql更新语句
3.自己封装一个clientdataset控件,在其内部维护一个专用于数据更新的内部clientdataset(只select那个要更新的表),再两者之间的数据同步。(我就是这么干的)