TDBGrid刷新问题
用TADOQuery1来查询ACCESS数据库中的内容,然后显示在TDBGrid中,然后在另外一个线程中创建TADOQuery2来操作同一个表,比如新增或者删除,操作完毕我想刷新TDBGrid来显示最新数据,但是不成功!
无论使用TADOQuery1->Close;然后open,还是TADOQuery1->ReQuery()都不行,然后我调试了下发现TADOQuery1->RecordCount的值还是原来的值,各位大侠可曾碰到过?
[解决办法]
测试没有问题。我建立一个access数据库,增删改查后重新刷新网格都是最新的数据,用的下面的方法,mdb数据库 BC2010。你贴出来你的代码看看。
//刷新网格
int TDataModule2::Open_Local_CoalInfo(void)
{
AnsiString sqlscript;
sqlscript = "SELECT * FROM dt_coalinfo";
ADOQuery1->Active = false;
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add(sqlscript);
ADOQuery1->Open();
return ADOQuery1->RecordCount;
}
//执行一个SQL语句
void TDataModule2::QueryRemoteExecSQL(AnsiString temstr, TADOConnection *ADOConnection)
{
AnsiString sqlscript;
sqlscript = temstr;
TADOQuery *Query2 = new TADOQuery(this);
Query2->Active = false;
Query2->Connection = ADOConnection;
Query2->SQL->Clear();
Query2->SQL->Add(sqlscript);
Query2->ExecSQL();
Query2->Free();
}
[解决办法]
close,再open记录数不变?
那程序退出后再打开记录数是否变化
[解决办法]
确定另外一个线程更新后提交成功了吗?
[解决办法]
我也遇到过类似的问题,目前只能通过同一个TADOQuery来操作才能够及时显示和更新,其余的操作都会慢半拍。