if (edit1.Text ='') or (edit2.Text='') then
      begin
        messagedlg('类别编码及名称不能为空',mtconfirmation,[mbOK],0);
        edit1.SetFocus;
      end
else
with data_use do
if trim(edit2.text)=adoquery_lb1.lookup('类别编码',edit1.text,'名称')then
begin
messagedlg('the record is existed')
end
else
adoquery_lb1.locate('类别编码',edit1.text,[loinsensitive],0)  
   adoquery_lb1.edit;
  adoquery1_lb1.fieldbyname('dm_name').asstring=trim(edit1.text);
    //dm_name:=edit1.Text;
   end;
end;
是在EDIT环境下写的,可能有语法错误希望对你有些帮助,你的这个问题可以用SQL语句解决 但过于繁琐.

解决方案 »

  1.   

    想用一条语句实现吗?1、使用存储过程  if exists(select * from table where 条件)
        insert ...
      else
        update...2、你可以直接把上面这句写到你的ADOQuery_lb1。sql.add(.....中3、一步步做(查询、插入或更新):比较繁琐!另外:
    if (edit1.Text ='') or (edit2.Text='') then
          begin
            messagedlg('类别编码及名称不能为空',mtconfirmation,[mbOK],0);
            edit1.SetFocus;
            abort;//不然会向下执行
          end;
      

  2.   

    select * from table where aID=:aID 这个'aID'即为变量。
      

  3.   

    if (edit1.Text ='') or (edit2.Text='') then
          begin
            messagedlg('类别编码及名称不能为空',mtconfirmation,[mbOK],0);
            edit1.SetFocus;
          end
         else
           begin
            dm_name:=edit1.Text;
            ADOQuery_lb1.Close;
            ADOQuery_lb1.sql.clear;
             ADOQuery_lb1.sql.add('select 字段名 from tablename where id='+dm_name):
             ADOQuery_lb1.open;
             if ADOQuery_lb1.recordset.bof then
             sqlstring:='insert into.....'
             else
               sqlstring:='update tablename set.....';
                ADOQuery_lb1.Close;
                ADOQuery_lb1.sql.clear;
                ADOQuery_lb1.sql.add(sqlstring);
                ADOQuery_lb1.execsql;
          end;
      这样是比较麻烦,如果你用的是sqlserver之类的数据库,可以写一个存储过程。