TQuery1 负责insert,
TQuery2 负责显示数据库表,在主窗口上面添加一个DbGrid1,然后在添加几个edit用来储存数据,当点击按钮“Insert”后,把新记录添加到数据库里面,现在我想实现当点击Insert按钮后下面的DBGrid也立刻更新显示,请问如何做。
×××××××××××添加部分××××××××××
CustomerData->Query1->SQL->Clear();
CustomerData->Query1->SQL->Add("insert into test (name,age,comment) Values(:Name,:Age,:Comment)");
CustomerData->Query1->ParamByName("Name")->AsString=Edit1->Text;
CustomerData->Query1->ParamByName("Age")->AsInteger=StrToInt(Edit2->Text);
CustomerData->Query1->ParamByName("Comment")->AsString=Memo1->Text;
CustomerData->Query1->ExecSQL();
现在我想更新显示,我应该在后面添加什么呢?我添加了
DBGrid1->Refresh();
或者Repaint();都不型啊。请问如何做呢? DBGrid是与DataSource2联系的,DataSource2又与Query2联系的,Query2的sql string是:select * from test;
但是只能显示刚开始运行的记录,添加后不能更新显示,请问如何改啊??
4 个解决方案
#1
断开,再重新连接!
#2
因为你的DBgrid显示的是最初刚打开时的数据,而在你插入之后,没有刷新,只需在你的添加代码的之后加上一段刷新的代码,也就是说,在执行完插入之后,立即刷新一下,让Query2重新从数据库中select最新的数据。
×××××××××××添加部分××××××××××
CustomerData->Query1->SQL->Clear();
CustomerData->Query1->SQL->Add("insert into test (name,age,comment) Values(:Name,:Age,:Comment)");
CustomerData->Query1->ParamByName("Name")->AsString=Edit1->Text;
CustomerData->Query1->ParamByName("Age")->AsInteger=StrToInt(Edit2->Text);
CustomerData->Query1->ParamByName("Comment")->AsString=Memo1->Text;
CustomerData->Query1->ExecSQL();
/* 加上下面一段代码即可*/
CustomerData->Query2->Close();
CustomerData->Query2->SQL->Clear();
CustomerData->Query2->SQL->Add("select * from text");
CustomerData->Query2->Open();
Edit1->Text="";
Edit2->Text="";
Memo1->Text="";
ShowMessage("添加成功");
×××××××××××添加部分××××××××××
CustomerData->Query1->SQL->Clear();
CustomerData->Query1->SQL->Add("insert into test (name,age,comment) Values(:Name,:Age,:Comment)");
CustomerData->Query1->ParamByName("Name")->AsString=Edit1->Text;
CustomerData->Query1->ParamByName("Age")->AsInteger=StrToInt(Edit2->Text);
CustomerData->Query1->ParamByName("Comment")->AsString=Memo1->Text;
CustomerData->Query1->ExecSQL();
/* 加上下面一段代码即可*/
CustomerData->Query2->Close();
CustomerData->Query2->SQL->Clear();
CustomerData->Query2->SQL->Add("select * from text");
CustomerData->Query2->Open();
Edit1->Text="";
Edit2->Text="";
Memo1->Text="";
ShowMessage("添加成功");
#3
用SQL语句增加记录就是要刷新才能看动,为何不这样呢:
Query1->Append();
Query1->FieldByName("字段")->AsString="asdsadsa";
Query1->Post();
这样就能直接看到了!
Query1->Append();
Query1->FieldByName("字段")->AsString="asdsadsa";
Query1->Post();
这样就能直接看到了!
#4
添加的和显示的要同一个数据集!你的DBGrid1的数据源是指向那个数据集的!
#1
断开,再重新连接!
#2
因为你的DBgrid显示的是最初刚打开时的数据,而在你插入之后,没有刷新,只需在你的添加代码的之后加上一段刷新的代码,也就是说,在执行完插入之后,立即刷新一下,让Query2重新从数据库中select最新的数据。
×××××××××××添加部分××××××××××
CustomerData->Query1->SQL->Clear();
CustomerData->Query1->SQL->Add("insert into test (name,age,comment) Values(:Name,:Age,:Comment)");
CustomerData->Query1->ParamByName("Name")->AsString=Edit1->Text;
CustomerData->Query1->ParamByName("Age")->AsInteger=StrToInt(Edit2->Text);
CustomerData->Query1->ParamByName("Comment")->AsString=Memo1->Text;
CustomerData->Query1->ExecSQL();
/* 加上下面一段代码即可*/
CustomerData->Query2->Close();
CustomerData->Query2->SQL->Clear();
CustomerData->Query2->SQL->Add("select * from text");
CustomerData->Query2->Open();
Edit1->Text="";
Edit2->Text="";
Memo1->Text="";
ShowMessage("添加成功");
×××××××××××添加部分××××××××××
CustomerData->Query1->SQL->Clear();
CustomerData->Query1->SQL->Add("insert into test (name,age,comment) Values(:Name,:Age,:Comment)");
CustomerData->Query1->ParamByName("Name")->AsString=Edit1->Text;
CustomerData->Query1->ParamByName("Age")->AsInteger=StrToInt(Edit2->Text);
CustomerData->Query1->ParamByName("Comment")->AsString=Memo1->Text;
CustomerData->Query1->ExecSQL();
/* 加上下面一段代码即可*/
CustomerData->Query2->Close();
CustomerData->Query2->SQL->Clear();
CustomerData->Query2->SQL->Add("select * from text");
CustomerData->Query2->Open();
Edit1->Text="";
Edit2->Text="";
Memo1->Text="";
ShowMessage("添加成功");
#3
用SQL语句增加记录就是要刷新才能看动,为何不这样呢:
Query1->Append();
Query1->FieldByName("字段")->AsString="asdsadsa";
Query1->Post();
这样就能直接看到了!
Query1->Append();
Query1->FieldByName("字段")->AsString="asdsadsa";
Query1->Post();
这样就能直接看到了!
#4
添加的和显示的要同一个数据集!你的DBGrid1的数据源是指向那个数据集的!