问题是这样的,窗体上有一个DBGrid1控件,列名主要有:进单号,供应商号,供应商名,当输入“供应商号”后“供应商名”获得焦点的同时,自动查询数据库里面是否有该“供应商号”,如果没有则弹出输入“供应商信息”的对话框,这要怎样实现

解决方案 »

  1.   

    是不是想对输入的供应商号做校验呀?
    自定义过程
    procedure FieldSetText(Sender: TField; const Text: String);
    数据集打开事件里
    DataSet.FieldByName('供应商号').OnSetText:=FieldSetText;
    在过程FieldSetText中实现查询数据检测
      

  2.   

    可以在“供应商号”字段的OnSetText 事件中做数据校验,来实现
      

  3.   

    可以在“供应商号”字段的OnSetText事件里对数据进行校验
      

  4.   

    DBGrid的DataSet的AfterOpen 事件里
    procedure TFm_TranAmmeter.FieldSetText(Sender: TField; const Text: String);
    var
      Value :double;
    begin
      //Text--就是你输入的 供应商号 
      这里实现查询过程即可。'select * from 表 where 供应商号= text'end;procedure TForm1.cds_DataAfterOpen(DataSet: TDataSet);
    begin
      if DataSet.FindField('供应商号') <> nil then
        DataSet.FieldByName('供应商号').OnSetText:=FieldSetText;
    end;
      

  5.   

    一般不在失去焦点的时候去做,当然要这么做也可以,你可以将代码写在列对象的OnExit事件中