多次重绘表格时出错

mmfeng 2012-11-12 10:36:57
我用Indy的IdTCPClient 向 IdTCPServer 发送数据过去,然后想在IdTCPServer所在的机器向数据服务器插入发过来的数据,并刷新一下DBGrid上的数据,用ADOQuery1->Close和Open刷新。发一条二条没有问题,发送多条后,表格的列慢慢变形,最后出现下面这个图:

请问用什么方法可以让它不出错呢?

这个是代码:
String swp;

try
{
AContext->Connection->IOHandler->CheckForDisconnect(True,True);
AContext->Connection->IOHandler->DefStringEncoding=TEncoding::Default;
swp=AContext->Connection->IOHandler->ReadLn();
if(swp!="")
AContext->Connection->IOHandler->WriteLn("服务器已经收到您发来的信息:"+swp);
Memo1->Lines->Add(UTF8Encode(swp));



//ShowMessage(swp);
TBookmark yqw_BM;
yqw_BM=ADOQuery1->GetBookmark();

TADOQuery *pado=new TADOQuery(NULL);
pado->Connection=this->ADOConnection1;
String testSql="INSERT INTO hlfloor.dbo.DF_PF_D( \
DF_PF_M_CODE,DF_PF_M_TYPE, DF_PF_D_XH,NEED_FL) values ( \
'test','2',2, '√')";

pado->SQL->Add(testSql);

pado->ExecSQL();
delete pado;
ADOQuery1->Close();
ADOQuery1->Open();
/*
TBookmark yqw_BM; // 做标记,使当前记录不移动
yqw_BM = ADOQuery1->GetBookmark();

if(ADOQuery1->BookmarkValid(yqw_BM))
{
ADOQuery1->GotoBookmark(yqw_BM);
}
ADOQuery1->FreeBookmark(yqw_BM);

*/

// AContext->Connection->IOHandler->writel
//return;
}
catch(...)
{

}
...全文
191 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
dataxdata 2012-11-12
  • 打赏
  • 举报
回复
看错误应该是显示的时候出的问题,是不是在线程中忘加synchronize函数了?
mmfeng 2012-11-12
  • 打赏
  • 举报
回复
终于搞好了。 原来要先加这一句:#include <idsync.hpp> 然后按定义ksrsoft 说的写一个方法:refreshDB,最后在Indy的服务器端加上这句 TIdSync::SynchronizeMethod(refreshDB); 就OK了。谢谢ksrsft. 原来想着搞不好的话就用Timer()不断地刷新数据,我这儿人民医院的那个等侯排队取药的显示屏就是这样,不断刷新的方法来刷新取药人的姓名的,因我去看病时看到屏是不断地有规律的闪的,我想,这么多个取药的窗口那么多台电脑,不停地刷,服务器的负担不重么?
缘中人 2012-11-12
  • 打赏
  • 举报
回复
应该是写个显示的方法,然后在SynchronizeMethod里调用
mmfeng 2012-11-12
  • 打赏
  • 举报
回复
引用 1 楼 dataxdata 的回复:
看错误应该是显示的时候出的问题,是不是在线程中忘加synchronize函数了?
是显示问题。查了Indy10的资料,不知TIdSync::SynchronizeMethod()怎么用,修改了很多次仍是出错,请问一下 TIdSync::SynchronizeMethod()怎么用法?
代码下载链接: https://pan.quark.cn/s/73799e85b3cd Veeam Backup & Replication 多种备份策略深度解析Veeam Backup & Replication 是一款具备高度功能性与适应性的备份工具,其内置了多样化的备份选项,旨在适应不同环境下对数据保护的需求。本文将全面阐释Veeam Backup & Replication中所包含的几种备份策略,涵盖正向的永久增量策略、正向的增量策略、逆向的增量策略、动态的全面策略以及整合的全面策略。1. 正向的永久增量策略(Forward Incremental-Forever Strategy)正向的永久增量策略是一种预设的备份模式,其会构建一个备份序列,该序列由初次执行的全面备份及后续一系列正向增量备份组合而成。此备份策略的长处在于能够有效缩短备份周期并节约存储容量。在初次备份任务启动,Veeam Backup & Replication会在备份存储库中创建.vbk格式的全面备份文档。在随后的备份任务中,Veeam Backup & Replication会复制自上一次备份任务至当前间点增加的虚拟机数据单元,并将这些数据单元作为一个.vib格式的增量备份文档存入备份序列。2. 正向的增量策略(Forward Incremental Strategy)正向的增量策略同样会构建一个备份序列,该序列由初次执行的全面备份及后续一系列正向增量备份构成。与正向的永久增量策略相异之处在于,正向的增量策略还涉及综合性的或动态的全面备份,这些备份将备份序列分割为若干个更小的部分。3. 逆向的增量策略(Reverse Incremental Strategy)逆向的增量策略会生成...

13,874

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧