我的数据库是用一个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 就变成了最小的情况(只有一个小方格了)

解决方案 »

  1.   

    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;
          Sql.Clear;
          Sql.Text:='select * from stock where PartName = '''+ edit1.Text+''' and ProductName = '''+ edit3.Text+'''';
     
          Open;
       end;
      

  2.   

    楼上说得对
    重新查询后就可以了好像ADOQuery.refresh不管用
      

  3.   

    同意,因为Update是不返回任何数据集的
      

  4.   

    重新打开连接DBGRID的那个数据源就可以了
      

  5.   

    噌点分吧,呵呵
    建议你不要把需要execute的query和你要显示的dbgrid1.datasource.dataset设置成为一个,这样将来会乱的,就象现在一样,用两个来实现,然后需要刷新的不是你的dbgrid,而是你的数据源
      

  6.   

    呵呵,你试试这样啊active:=true;
    open;
    然后就应该能够自动的更新了吧,
      

  7.   

    adotable 的刷新也是open;close;可查看其PAS文件
      

  8.   

    大家说的都对!
      with Query1 do
      begin
        ...
        ...    
        Close;
        ...
        Open;
      end;
      

  9.   

    dbgrid1.datasource.dataset.active := false;
    dbgrid1.datasource.dataset.active := true;