请问各位高手,我建两个表,其中一个表是设备表,另一个表是入库单,在设备表中有一个字段是设备号,而在入库单也有一个字段是设备号,但是我在入库单的设备号与设备表中的设备号建产外部键,这样我在入库表中输入设备号时,如果设备表中的设备号不存在就应提示错误信息此设备号不存在,如果有此号就提示此设备号已经输入成功,我下边的代码是如果有此设备号能输入进去,但是没不此设备号就提示系统的错误信息,不知错在哪里,请各位高手指教,
with adoquery1 do
 begin
  close;
  sql.clear;
  sql.add('create table 设备表(maching_id char(4) constraint pk_kucun primary key clustered,machine_name varchar(50) not null,'+
           'type varchar(50) not null,number smallint,state varchar(20))');
   execsql;
with adoquery2 do
  begin
   close;
   sql.clear;
   sql.add('create table rukudan(enterlist_id char(10),primary key,maching_id char(4) foreign key(maching_id) referecnes kucun(maching_id),number int)');
   execsql;
这是建立两个表,如下是填加数据处理,我就不知道怎么处理错误信息,该怎样写代码,以下代码是往入库单表中填加数据,
TRY
with adotable1 do
 begin
  if active then
   begin
    append;
  FIELDBYNAME(‘设备号’)。ASSTRING:=EDIT1。TEXT;
  POST;
EXCEPT
SHOWMESSAGE(‘此号不存在’);请各位高指教,怎样改正

解决方案 »

  1.   

    建议:
    处理这种情况,你可以在入库表的beforepost事件中写上代码,判断这个编号是不是存在,如果不存在,则提示不给以提交,这是我的一个系统中的代码,希望对你有用:
    procedure TZmdTVAdEdit.ZmdTVADQueryBeforePost(DataSet: TDataSet);
    begin
      if not HaveCode(ZmdBaseQuery,DBEdit13) then
            raise  exception.create('对不起,没有这个专卖店编号!请确认后重输!');
    end;function HaveCode(ZmdBaseQuery:TADOQuery;DBEdit13:TDBEdit):Boolean;
    begin
    With ZmdBaseQuery do
      begin
        Close;
        SQL.Clear;
        SQL.Add('select * from zmdbase where zmdcode=:zmdcode1');
        Parameters.ParamByName('zmdcode1').Value:=  trim(DBEdit13.Text);
        Open;
        Prior;
      end;
      Result:=  True;
      if ZmdBaseQuery.Eof then
      begin
        result:= False;
      end;
    end;