下面的代码是先判断学号是否存在,存在就退出,不存在就继续添加新的内容,编译能通过,只是添加数据老是报错,大家帮我看看代码错在什么地方,adoquery1.Close;
  adoquery1.sql.clear;
  adoquery1.sql.text:='select xh from xsxx where xh='''+edit1.text+'''';
    if (adoquery1.RecordCount > 0) then
    begin
   messagedlg('该学号已经存在',mtwarning,[mbok],0);
    abort;
   end
   else
     begin
    ADOquery1.open;
    ADOQuery1.insert; //添加
    ADOQuery1.FieldByName('xh').AsString := Edit1.Text;
    ADOQuery1.FieldByName('xm').AsString := Edit2.Text;
    ADOQuery1.FieldByName('bj').AsString := Edit3.Text;
    ADOQuery1.FieldByName('jg').AsString := Edit4.Text;
    ADOQuery1.Post;
    end;

解决方案 »

  1.   

    ADOQuery1.insert;
    .....ADOQuery可以这样写????
    上面写对了下面错的一塌糊涂哦
    你insert??insert到哪张表里???
    同学,把ADOQuery当成ADOTable用了吧?
      

  2.   

    adoquery1.sql.clear;
      adoquery1.sql.text:='select xh from xsxx where xh='''+edit1.text+'''';
    //
        if (adoquery1.RecordCount > 0) then
      

  3.   

    adoquery1.sql.clear;
      adoquery1.sql.text:='select xh from xsxx where xh='''+edit1.text+'''';
    //你还没有Open,执行adoquery1.RecordCount 有意义吗?
        if (adoquery1.RecordCount > 0) then
      

  4.   

    adoquery1.Close;
      adoquery1.sql.clear;
      adoquery1.sql.text:='select * from xsxx where xh='''+edit1.text+''''; //改为*
      
    adoquery1.open; // 没打开表
        if (adoquery1.RecordCount > 0) then
        begin
       messagedlg('该学号已经存在',mtwarning,[mbok],0);
        abort;
       end
       else
         begin
        ADOquery1.open;
        ADOQuery1.insert; //添加
        ADOQuery1.FieldByName('xh').AsString := Edit1.Text;
        ADOQuery1.FieldByName('xm').AsString := Edit2.Text;
        ADOQuery1.FieldByName('bj').AsString := Edit3.Text;
        ADOQuery1.FieldByName('jg').AsString := Edit4.Text;
        ADOQuery1.Post;
        end;或者都直接用sql语句来执行
      

  5.   

    我open过了,现在可以判断学号是不是重复了,但是添加数据还是会出错
      

  6.   

    adoquery1.Close;
      adoquery1.sql.clear;
      adoquery1.sql.text:='select xh from xsxx where xh='''+edit1.text+''''; 
      
    adoquery1.open; // 没打开表
        if (adoquery1.RecordCount > 0) then
        begin
       messagedlg('该学号已经存在',mtwarning,[mbok],0);
        abort;
       end
       else
         begin
       adoquery1.Close;
      adoquery1.sql.clear;
      adoquery1.sql.text:='insert xsxx(xh,xm,bj,jg) values('''+edit1.text+''','''+edit2.text+''','''+edit3.text+''','''+edit4.text+''')';
    adoquery1.execsql;
        end;
      

  7.   

    是不是什么地方刷新出了问题?现在点添加后记录是加上了,但是dbgrid成了空白,退出程序再运行才能见到数据,
      

  8.   


        ADOQuery1.edit; //添加
        ADOQuery1.FieldByName('xh').AsString := Edit1.Text;
        ADOQuery1.FieldByName('xm').AsString := Edit2.Text;
        ADOQuery1.FieldByName('bj').AsString := Edit3.Text;
        ADOQuery1.FieldByName('jg').AsString := Edit4.Text;
        ADOQuery1.Post;
    看看
      

  9.   

    这样写会出错,我原来是这样写的,现在改成这样了
      adoquery1.sql.text:='insert xsxx(xh,xm,bj,jg) values('''+edit1.text+''','''+edit2.text+''','''+edit3.text+''','''+edit4.text+''')';