总不至于在每输入客户id后,再搞个临时dataset,打开后查看记录数是否大于零?这样也太麻烦了点,并且效率肯定低下。

解决方案 »

  1.   

    ……加入一lookup字段:客户名(在其它dataset中)。……其它dataset:qryCustif not qryCust.Locate('id',trim(edtCusId.Text),[]) then
      ShowMessage('not found!')
      

  2.   

    lookup字段保存用户ID,
    通过ADODataset的Filter及Filtered组合,如果RecordCount > 0 则存在
    // Lookup为字符类型
    with ADODataSet do
    begin
      Close;
      Filter := 'Lookup = ' + Trim(edt_Id.Text);
      Filtered := True
      Open;
      if RecordCount >0 then
      begin
        //exists
      end;
    end;
      

  3.   

    在你的客户字典表中,客户名称能为空吗?
        若不能为空,那么你在输入客户id后,看客户名这个lookup字段是否有值。若无值,则说明无此Id.
        若能为空,用连者客户名字段的那个数据集Locate一下就可以判断出来。(如果数据量很大并且在全部载入以前,速度是很慢的,还不如用Sql判断)