第一次点击一按钮时,会查询数据库,并将结果显示在DBGRIDEH中,以后会多次点击该按钮查询数据库,我想以后点击按钮查询到的结果都能够在DBGRIDEH中增加一行显示,而不清空DBGRIDEH中原有的显示内容,该如何做呀???(原有显示内容不能通过再次查询数据库的方法得到,性能不允许),救我呀,各位大虾~~~~~

解决方案 »

  1.   

    把DBGRIDEH关联到一个DATASET中去.
    同时查询在另一个查询中进行,有了询结果之后就把新的查询结果放到关联到dbgrideh的那个dataset里去就行了
      

  2.   


    DBgrideh的dataset 对应到 query1
    oncreate:query1.sql.text:='select * from table where 1=2';
    query1.open;
    查询:
    query2.sql.text:='select * from table where XXXX';
    query2.open;
    while not query2.eof do
    begin
      query1.append;
      query1.fields<=====query2.fields(复制)
      query2.next;
    end;
      

  3.   

    不行呀,提示 ‘field "id" can not be modify’  :(
    谢谢,继续帮忙呀~~~~
      

  4.   

    这是我的语句:
    adoquery1.FieldByName('id').Value   := adoquery2.fieldbyname('id').AsInteger;
      

  5.   

    这个问题简单
    可以这样做
    首先设一个全局变量 public i
    1、在窗体的onshow事件中赋初值
      i:=0//表示第一次点击按钮前的值,点击过后i的值变为1
    2、假设我们查询的是表mz(包括“民族编号”和"民族名称"两个字段//作者注释)
    在设置好数据库连接后(这里设置一个query控件),在按钮的onclick事件中输入代码:if i=0 then  //第一次点按钮查询
        begin
          Query1.Close;
          query1.SQL.Clear;
          query1.SQL.Add('select * from mz');//连接某个数据库的mz表
          query1.Prepare;
          query1.Open;
          i:=1;
        end
      else   //如果不是第一次点击按钮了,则插入一个空记录,代码如下
        Begin
          query1.Close;
          query1.SQL.Clear;
          query1.SQL.Add('insert into mz(民族编号,民族名称)values(:mzbh,:mzmc) ');
          query1.ParamByName('mzbh').AsString:='';
          query1.ParamByName('mzmc').AsString:='';
          query1.Prepare;
          query1.ExecSQL;
         //执行后,再次查询
          query1.Close;
          query1.SQL.Clear;
          query1.SQL.Add('select * from mz');
          query1.Prepare;
          query1.Open;
          form1.DBGrid1.Refresh;
        end;说明:这里mz表中的两个字段都可以为空,如果其中一个设置了主键或其他不能为空的情况,上面程序需做以下修改:
          ......
          query1.ParamByName('mzbh').AsString:='不能为空时的值';
          query1.ParamByName('mzmc').AsString:='不能为空时的值';
          .......
    不要忘了
    3、在窗体的onclosequery事件中关闭query1的连接
        query1.close;这样你的问题就解决了,我测试过了。
      

  6.   

    你要在插入一条记录后,关闭连接。(注意query1.close)
    然后在打开连接,重新查询
      

  7.   

    樓主只是想顯示出之前的查詢結果而已
    不如把結果存在memo上好啦
    用dbgrid 實現,又不能重新查詢結果。估計不太可能
      

  8.   

    可以用stringgrid,把查询结果自己追加就可以了 :)
      

  9.   

    to 毛毛,是可以实现,但是你这样会影响系统性能,每次查询之前要再执行插入操作。这个系统是个POS销售系统,如果N台POS机都同时这样作,肯定不行。
      

  10.   

    我晕哦,你如果用query控件必须这样来做,除非你用table等这样的控件,当然可以用append或者insert方法了,也快捷一些