判断字段值已经存在


例: MBLNO
  
procedure MblnoChange(Sender:Tfield);
  
var aSQLQuery:TSQLQuery;
      aMblno:String;
  
begin
    aMblno:
=Sender.AsString;
    aSQLQuery:
=TSQLQuery.Create(nil);
    
if aMblno<>'' then begin
      
with aSQLQuery do try
        SQLConnection:
=SQLConn;
        
if (Sender.Dataset.FieldByName('BillKind').Asstring='DD')
          
or (Sender.Dataset.FieldByName('BillKind').Asstring='MM'then
        
begin
          Close;SQL.Clear;
          SQL.Add(
'Select count(*) from seabills  ');
          SQL.Add(
'where SysID=:SysID and (BillKind=''DD'' or BillKind=''MM'')  and Mblno='''+aMblno+'''');
          SQL.Add(
'and BillDeptid=:BillDeptId')
          ParamByName(
'SysID').AsInteger:=FSysID;
          ParamByName(
'BillDeptId').AsInteger:=dsrbill.dataset.fieldbyName('BillDeptId').asInteger;//10.27.chen 不同的部门之间mblno可以相同
          Open;
          
if FieldByName('Count').AsInteger<>0 then begin
            MessageDlg(Format(
'M B/L NO. “%s”已经存在!请重新输入!', [Sender.AsString]), mtWarning, [mbOK], 0);
            Sender.Asstring:
='';
          
end else begin
            
if dsrBill.Dataset.FieldbyName('Billkind').asString='MM' then begin
              Close;SQL.Clear;
              SQL.Add(
'Update seabills set Mblno=:Mblno ');
              SQL.Add(
'where SysID=:SysID and PBillno=:Billno');
              ParamByName(
'SysID').AsInteger:=FSysID;
              ParamByName(
'Mblno').AsString:=Sender.asString;
              ParamByName(
'Billno').AsString:=Sender.Dataset.FieldbyName('Billno').asString;
              Execsql(False);
            
end;
          
end;
        
end;
      
finally
        aSqlquery.Free;
      
end;
    
end;
  
end
原文地址:https://www.cnblogs.com/CNQCJ/p/1358453.html