判断字段值已经存在
例: 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