数据表student
字段:
studentno         long integer
studentname       alpha
kemu1             number
kemu2             number1,我的buttonprocedure TForm1.Button3Click(Sender: TObject);
begin
with query1 do
begin
  close;
  sql.Clear;
  sql.Add('insert student values(:a,:b,:c,:d)');
  ParambyName('a').AsInteger:=StrToInt(Trim(MaskEdit1.Text));
  ParambyName('b').AsString:=Trim(MaskEdit2.Text);
  ParambyName('c').AsInteger:=StrToInt(Trim(MaskEdit3.Text));
  ParambyName('d').AsInteger:=StrToInt(Trim(MaskEdit4.Text));
  post;
end;
end;2,query1设置DatabaseName设置为StudentStatic为什么我的不不新增?谢谢!

解决方案 »

  1.   

    with query1 do
    begin
      close;
      sql.Clear;
      sql.Add('insert student values(:a,:b,:c,:d)');
      ParambyName('a').AsInteger:=StrToInt(Trim(MaskEdit1.Text));
      ParambyName('b').AsString:=Trim(MaskEdit2.Text);
      ParambyName('c').AsInteger:=StrToInt(Trim(MaskEdit3.Text));
      ParambyName('d').AsInteger:=StrToInt(Trim(MaskEdit4.Text));
      exexsql;
    end;
      

  2.   

    Project AddForm.exe raised exception class EDBEngineError with message 'Invalid use of keyword.Token:student
      

  3.   

    请查看数据表student,将其改名后试试。
      

  4.   

    with query1 do
    begin
      close;
      sql.Clear;
      sql.Add('insert into student values(:a,:b,:c,:d)');
      ParambyName('a').AsInteger:=StrToInt(Trim(MaskEdit1.Text));
      ParambyName('b').AsString:=Trim(MaskEdit2.Text);
      ParambyName('c').AsInteger:=StrToInt(Trim(MaskEdit3.Text));
      ParambyName('d').AsInteger:=StrToInt(Trim(MaskEdit4.Text));
      Execsql;
    end;
      

  5.   

    to zjsaeonsoft(亦凡) :
    改了数据表名,也出一样的错!to 36(高桥) 
    insert 没错吧!
      

  6.   

    to zjsaeonsoft(亦凡):
    也出错
      

  7.   

    to zjsaeonsoft(亦凡):加上into后报错:Type mismatch in expression.
      

  8.   


    字段类型不是string
    studentname       alpha
      

  9.   

    with query1 do
    begin
      Append;
      FieldbyName('a').asString:=Trim(MaskEdit1.Text);
      ...
      Post;
    end;
      

  10.   

    试试
    with query1 do
    begin
      close;
      sql.Clear;
      sql.Add('insert into student values(:a,:b,:c,:d)');
      Parameters.ParambyName('a').AsInteger:=StrToInt(Trim(MaskEdit1.Text));
      Parameters.ParambyName('b').AsString:=Trim(MaskEdit2.Text);
      Parameters.ParambyName('c').AsInteger:=StrToInt(Trim(MaskEdit3.Text));
      Parameters.ParambyName('d').AsInteger:=StrToInt(Trim(MaskEdit4.Text));
      Execsql;
    end;
      

  11.   

    sql 语句应该是insert into 
    最后是要用  Execsql,他是执行不返回结果集的sql语句
    Type mismatch in expression.
    是你加的数据可能与你表中的数据类型不一致
      

  12.   

    试试这个行不行
    with query1 do
    begin
      Append;
      FieldbyName('a').asString:=Trim(MaskEdit1.Text);
      ...
      UpdateBatch();
    end;
      

  13.   

    搞定了。
    注意到我表字段类型:
    数据表student
    字段:
    studentno         long integer
    studentname       alpha
    kemu1             number
    kemu2             number
    改动的地方2处:
    1,insert---->insert into
    sql.Add('insert into student values(:a,:b,:c,:d)');2,AsInteger----->AsFloat,StrToFloat---->StrToFloat即:
    with query1 do
    begin
      close;
      sql.Clear;
      sql.Add('insert into student values(:a,:b,:c,:d)');
      Parameters.ParambyName('a').AsInteger:=StrToInt(Trim(MaskEdit1.Text));
      Parameters.ParambyName('b').AsString:=Trim(MaskEdit2.Text);
      Parameters.ParambyName('c').AsFloat:=StrToFloat(Trim(MaskEdit3.Text));
      Parameters.ParambyName('d').AsFloat:=StrToFloat(Trim(MaskEdit4.Text));
      Execsql;
    end;