应该没问题的,用asstring试试

解决方案 »

  1.   

    好象tablename多于3个字段(id1,id2,id3)而你只插入3个字段就不行
      

  2.   

    to bumman() 
     我试过的,对有些表操作没问题的.
    try
     assting.....
      

  3.   

    SQL.Add ('insert into tablename(id1,id2,id3,)');这句语句出错!应该这样你试试看
    SQL.Add ('insert into tablename(id1,id2,id3)');
      

  4.   

    请注意SQL中字符之间的空格,要明确区分每一个字符才行。
    我看你的SQL拼凑起来就是一个无空格的字符串
      

  5.   

    to: webnumen你写的和我的有什么不一样?
    to :cobi不是空格原因,试过
    调试一两个小时了,搞不定这个小程序算完了(核心部分),帮忙啊,在线等....
    另,少了一句adoquery1.sql.clear//笔误
      

  6.   

    你有多于3个字段,你把其它的字段值用NULL表示我想就可以了
    你试试看
      

  7.   

    要定义类型,看我的程序  with ADOQuery1 do
      begin
        Close;
        SQL.Clear;
        SQL.Add('Select ZL, BH from JTXX ');
        SQL.Add('Where ZL = :p0 and BH = :p1');
        Parameters[0].DataType := ftString;
        Parameters[0].Value := ComboBox21.Text;
        Parameters[1].DataType := ftInteger ;
        Parameters[1].Value := bh;
        Open;
      end;
      

  8.   

    要指定类型,看我的程序  with ADOQuery1 do
      begin
        Close;
        SQL.Clear;
        SQL.Add('Select ZL, BH from JTXX ');
        SQL.Add('Where ZL = :p0 and BH = :p1');
        Parameters[0].DataType := ftString;
        Parameters[0].Value := ComboBox21.Text;
        Parameters[1].DataType := ftInteger    ;
        Parameters[1].Value := bh;
        Open;
      end;
      

  9.   

    with adouery1 do
     begin
       Close;
       SQL.Clear;
       SQL.Add ('insert into tablename(id1,id2,id3,)');
       SQL.Add ('values(:val1,:val2,:val3)');
       Parameters.ParamByName('val1').DataType:=ftString;
       Parameters.ParamByName('val1').value:=edit1.Text;
       Parameters.ParamByName('val2').DataType:=ftString;
       Parameters.ParamByName('val2').value:=edit2.Text;
       Parameters.ParamByName('val3').DataType:=ftString;
       Parameters.ParamByName('val3').value:=edit3.Text;
       ExecSQL;   Close;
       SQL.Add ('select id1,id2,id3 from tablename');
    try
       Open;
    except
       showmessage('wrong');
       application.Terminate;
    end;
    end;
      

  10.   

    呵呵,我想出错的原因可以是因为Edit1.text或edit2.text或edit3.text出现了空串,ADO的Parameter对象好像不允许有空串, 我也遇到过这种问题材,最后, 放弃使用参数了. 你可以改成下面的样子:with adouery1 do
     begin
       Close;
       SQL.Text := 'insert into tablename(id1,id2,id3) '
                 + 'values(''%s'',''%s'',''%s'') ';
       SQL.Text := format(SQL.Text,[edit1.Text,edit2.text,edit3.text]);try   ExecSQL;   SQL.Text := 'select id1,id2,id3 from tablename';
       Open;
    except
       showmessage('wrong');
       application.Terminate;
    end;
     end;
      

  11.   

    不好意思,没太仔细看。^_^如果上面的方法都不行的,再试试加个PREPARED试试
      

  12.   

    都不行呀, 呵呵......
    我临时建个表试验一下,代码如下,字段大于3,没有指定类型,一点问题也没有,和上面的代码一样的,怪..........
    //放弃,换方法
    with adoquery1 do
    begin
     close;
     SQL.clear;
     sql.Add('insert into stu(学号,姓名,性别,班级) values(:id,:name,:sex,:class)');
     Parameters.ParamByName('id').value:=edit1.text;
     Parameters.ParamByName('name').value:=edit2.text;
     Parameters.ParamByName('sex').value:=edit3.text;
     Parameters.ParamByName('class').value:=edit4.text;
     ExecSQL;
     Close;
     SQL.Clear;
     SQL.Add('select 学号,姓名,性别,班级 from stu ');
    try
      Open;
      Last;
    except
     showmessage('wrong');
    end;
    end;