我的数据库是用一个DBGrid 一个DateBase,一个Query相连。我用Query的Add更新了数据库后,我怎么才能把更新后的数据显示在DBGrid中我的一部分代码如下:
with Query1 do
begin
Close;
SQL.Clear;
sql.Add(Format('Update stock set Quantity = Quantity +%s',[Edit2.text]));
sql.Add('where PartName = '''+ edit1.Text+'''');
SQl.Add('AND ProductName = '''+ edit3.Text+'''');
ExecSQL;
end;
DBGrid1.Refresh;一更新,我的DBGRid 就变成了最小的情况(只有一个小方格了)
with Query1 do
begin
Close;
SQL.Clear;
sql.Add(Format('Update stock set Quantity = Quantity +%s',[Edit2.text]));
sql.Add('where PartName = '''+ edit1.Text+'''');
SQl.Add('AND ProductName = '''+ edit3.Text+'''');
ExecSQL;
end;
DBGrid1.Refresh;一更新,我的DBGRid 就变成了最小的情况(只有一个小方格了)
begin
Close;
SQL.Clear;
sql.Add(Format('Update stock set Quantity = Quantity +%s',[Edit2.text]));
sql.Add('where PartName = '''+ edit1.Text+'''');
SQl.Add('AND ProductName = '''+ edit3.Text+'''');
ExecSQL;
Sql.Clear;
Sql.Text:='select * from stock where PartName = '''+ edit1.Text+''' and ProductName = '''+ edit3.Text+'''';
Open;
end;
重新查询后就可以了好像ADOQuery.refresh不管用
建议你不要把需要execute的query和你要显示的dbgrid1.datasource.dataset设置成为一个,这样将来会乱的,就象现在一样,用两个来实现,然后需要刷新的不是你的dbgrid,而是你的数据源
open;
然后就应该能够自动的更新了吧,
with Query1 do
begin
...
...
Close;
...
Open;
end;
dbgrid1.datasource.dataset.active := true;