一个dbgrid,它的dataSource为adoquery,我想用一个Button对它进行增加操作,出现一个inputbox提示输入,同时让表中的序号自动增加,代码如下:
procedure TfrmEditColor.Button1Click(Sender: TObject);
var
  i:integer;
  s:string;
begin
  with dmquery do
  begin
    qryproject.Close;
    qryproject.SQL.Text:='select * from project';
    qryproject.Open;
    qryproject.Last;
    qryproject.Append;
    s:=inputbox('输入系统名','请输入系统名:','');
    qryproject.FieldByName('proname').AsString:=s;
    i := qryproject.FieldByName('proid').AsInteger+1 ;
    qryproject.FieldByName('proid').AsInteger := i;
end;
end;
可是有错,谁帮忙解决一下!

解决方案 »

  1.   

    我觉得顺序应该这样
        qryproject.Last;
        s:=inputbox('输入系统名','请输入系统名:','');
        qryproject.FieldByName('proname').AsString:=s;
        i := qryproject.FieldByName('proid').AsInteger+1 ;
        qryproject.Append;
        qryproject.FieldByName('proid').AsInteger := i;
      

  2.   

    qryproject.Last;
        i := qryproject.FieldByName('proid').AsInteger+1 ;
        s:=inputbox('输入系统名','请输入系统名:','');    qryproject.Append;
        qryproject.FieldByName('proname').AsString:=s;
        qryproject.FieldByName('proid').AsInteger := i;
        qryproject.Post;
      

  3.   

    to  aiirii(ari-爱的眼睛) 
    问题已解决,谢谢了,确实是顺序有问题
      

  4.   

    同意aiirii(ari-爱的眼睛)的,注意顺序问题!
      

  5.   

    多放一个lable1控件
        qryproject.Last;
        i := qryproject.FieldByName('proid').AsInteger+1 ;
        //s:=inputbox('输入系统名','请输入系统名:','');
        lable1.caption:=inputbox('输入系统名','请输入系统名:','');
        
        qryproject.Append;
        qryproject.FieldByName('proname').AsString:=s;
       //这一句可以不要,我要提示 又不是把她加   进记录集
        qryproject.FieldByName('proid').AsInteger := i;
        qryproject.Post;
    还请三个星的大哥/姐 看一下这样行不?