DBGrid原来关联ADOTable,Edit通过FieldByName显示DBGrid的内容经过查询后,DBGrid新关联了ADOQuery,此时DBGrid显示查询后的结果,而此刻Edit中的内容还是原来DBGrid的脏数据,请问这个问题如何处理?谢谢。

解决方案 »

  1.   

    have a try
    Edit.Text := DBGrid.DataSource.DataSet.FieldByName(field_name).AsString;
      

  2.   

    1、在Query的afterscroll事件里更新Edit的内容。2、不要用Edit而是用DBEdit,这样不用写代码就可以实现你的要求了。
      

  3.   

    在你的DATASOURCE的ONCHANGE事件中写代码实现。
      datasource1change()
       begin
         edit1.text:=adoquery1.fieldbyname('fieldname').asstring; 
       end;
      

  4.   

    在adoquery控件里的afterscroll事件中添加如下代码:
      edit1.text:=adoquery1.fieldbyname('fieldname').asstring;
      

  5.   

    对不起,我没把问题说清楚,ADOQuery.SQL原来是没有内容的,是后来动态的加进去的所以用:
    ----------------------------------------------------------
    在adoquery控件里的afterscroll事件中添加如下代码:
      edit1.text:=adoquery1.fieldbyname('fieldname').asstring;
    ----------------------------------------------------------初始化的时候,程序就报错“没有FieldName字段”,
    DATASOURCE的ONCHANGE事件中也试过了,也没有通过。
      

  6.   

    在afterscroll写代码的话是会报错的。
    要不你写一个显示数据过程。如:
    private ShowDate
    begin
      edit1.text:=adoquery1.fieldbyname('fieldname').asstring;
    end;然后在你保存新的数据之后再调用ShowDate过程adoquery1.post;
    ShowDate;这样就可以动态的显示了。