delphi xe7 datasnap客户端更新数据之后重新读取显示的行数不对
各位高手大佬,请教如下问题
delphi xe7, datasnap 远程服务器端是fdcquery, mysql,
客户端用cliendataset 刚开始联合查询两个表 (一个是orderlist, 一个是类似结构的purchaselist表格),显示到stringgrid中,
在stringgrid中修改之后,分别用cdslist, cdspurchase applyupdate到数据库,更新之后,要重新读取最新的数据显示出来,但是问题就在于重新联合查询出来的数据行数不正确,比如4行数据,刷新后有时候是1行,也有可能是6,8行。
实际mysql里面的两个表的数据都是对的。
请各位看看什么原因?是不是cds刚刚applyupdate之后,datasetprovider中还没有刷新?
delphi xe7, datasnap 远程服务器端是fdcquery, mysql,
客户端用cliendataset 刚开始联合查询两个表 (一个是orderlist, 一个是类似结构的purchaselist表格),显示到stringgrid中,
在stringgrid中修改之后,分别用cdslist, cdspurchase applyupdate到数据库,更新之后,要重新读取最新的数据显示出来,但是问题就在于重新联合查询出来的数据行数不正确,比如4行数据,刷新后有时候是1行,也有可能是6,8行。
实际mysql里面的两个表的数据都是对的。
请各位看看什么原因?是不是cds刚刚applyupdate之后,datasetprovider中还没有刷新?
if (self.cdsHead.Active=false) or (self.cdsList.Active=false) then
begin
showmessage('数据集没有开启不能提交更新。');
exit;
end;
try
if self.cdsHead.ApplyUpdates(0)=0 then
if self.cdsList.ApplyUpdates(0)=0 then
if self.cdsPurchase.ApplyUpdates(0)=0 then
begin
application.MessageBox('提交服务器更新成功。','提示');
end;
except
on E: exception do
showmessage('提交服务器更新出错。'+E.Message);
end;
//更新完成后重新读取数据
cdspurchase.Active:=false;
cdspurchase.CommandText:='UPDATE tbpurchaselist b, tborderlist a '
+'SET b.`autoNumber`=a.`AutoNumber` WHERE '
+'(b.`orderNo`=a.orderno) AND (b.`autono`=a.`AutoNo`)';
cdspurchase.Execute;
self.cdsList.Close;
self.cdsList.CommandText:=
'SELECT a.`AutoNumber`,a.`AutoNo`,a.`GroupMemo`,a.`itemno`,a.`PartNumber`,'
+'a.`CDes`,a.`CQuantity`,a.`CUnit`,a.`Price`,a.`Amount`,a.`CRemark`,'
+'b.`MyCode`,b.`MyDesEN`,b.`MyDesCHN`,b.`MyUnit`,b.`MyQty` ,'
+'b.`autoNumber`,b.`supplycode`,b.`supplyname`,b.`costprice`,'
+'b.`costCurrency`,b.`discount`,b.`costSum`,b.`sremark`,b.`orderno`,'
+'a.`machinetype`,b.`PONo`,b.`Purchased`,b.`Recieved` ,b.`itemno` '
+'FROM tborderlist a LEFT JOIN tbpurchaselist b'
+' ON a.`AutoNumber`=b.`autoNumber` '
+'where a.Orderno="'+ getOrderno + '" order by autono';
self.cdsList.Active := true;
//self.cdslist.indexfieldnames:='autono';
//showmessage('重新读取的记录行数:'+inttostr(self.cdslist.recordcount));
clearrows(sgList);
readDataset(self.cdsList); // 把数据库的记录读取到表格中
...全文
相关推荐
delphi xe7下Datasnap实现手机对服务器上数据库的操作
在Delphi XE7环境下,使用Datasnap技术实现手机应用程序对服务器端数据库的操作是一项涉及到服务器端与客户端协同工作的技术实现。
Delphi XE7开发入门教程之DataSnap三层架构
### Delphi XE7开发入门教程之DataSnap三层架构#### 一、概述本文旨在通过详细介绍Delphi XE7中的DataSnap三层架构,帮助读者理解如何构建支持多客户端访问的企业级应用程序
delphi xe10.1的datasnap 三层结构完整客户端 (可用)
在Delphi XE10.1中,你可以使用VCL或FireMonkey(FMX)组件库来创建用户界面。客户端应用程序通常属于这一层,它负责接收用户输入并显示应用程序的结果。2.
delphi xe10.1的datasnap 三层结构服务器和客户端源码
Delphi XE10.1中的DataSnap技术是一种强大的组件框架,用于构建分布式应用程序,尤其适合创建三层架构的服务器和客户端应用。
delphi xe10的datasnap 三层结构完整服务端+源码 (测试可用)
在DataSnap中,服务端扮演着核心角色,它处理业务逻辑并提供对数据访问层的接口。Delphi XE10为DataSnap提供了一整套工具和组件,使得开发者可以快速地创建和部署这些服务。


数据库相关
