我使用insert into 为何不能将记录存入表中? 
  Fstr:='f1,f2,f3,f4';
  Vstr:='result1,result2,result3,result4';
 with adoquery2 do
       begin
         close;
         sql.clear;
         sql.add('insert into YY_MainData');
         sql.add('(:P1) ');
         sql.add('values(:p2)');
         Parameters.ParamByName('p1').value := Fstr;
         Parameters.ParamByName('p2').value := Vstr;
         execSQL;
       end;

解决方案 »

  1.   

    Fstr:='f1,f2,f3,f4';
      Vstr1:='result1';
    vstr2:='result2';vstr:='result3';vstr4:='result4';
     with adoquery2 do
           begin
             close;
             sql.clear;
             sql.add('insert into YY_MainData');
             sql.add('(:P1) ');
             sql.add('values(:p2)');
             sql.text:='insert into YY_MainData'+P1+' values(:p2,:p3,:p4,p5);
             Parameters.ParamByName('p2').value := Vstr1;
             Parameters.ParamByName('p2').value := Vstr2;
             Parameters.ParamByName('p2').value := Vstr3;
             Parameters.ParamByName('p2').value := Vstr4;
             execSQL;
           end;
    //看看書上的例子,怎麼能這麼寫呢?難怪樓上說你離譜!--------------------------------------------------------------------------
    |                                                                        |
    |                      抓你頭 踢你臉,嘴裡唱著心太軟                             |
    |                      先踢腿 後踢背,胯胯軸子踹稀碎;                           |
    |                      腰打斷 腿打折,肋巴扇子蹬骨折;                           |
    |                      先抽筋 再放血,腦袋瓜子打稀癟!                           |
    |                                  服不?                                      |
    |                                                                        |
    --------------------------------------------------------------------------
      

  2.   

    不好意思,我也是新学的.
    我想说的是,我有一张表,其中有二十几个字段,但是我只想将部分记录存入.
     Fstr:='f1,f2,f3,f4';是字段F1,字段F2,字段F3,字段F4
     Vstr:='result1,result2,result3,result4';是字段1中的数据,...,字段4中的数据 而Fstr,Vstr中的字段和数据可以增加和减少的.
    这样就不用更改sql中的语句了.请高手帮我想一下,谢谢!
      

  3.   

    s := 'insert into YY_MainData(f1,f2,f3,f4)';
    s := s+'values(''%s'',''%s'',''%s'',''%s'')';
    s := Format(s,[result1,result2,result3,result4']);
    with adoquery2 do
     begin
      SQL.Text := s;
      ExecSQL;
      Close;
     end;
                                                                                                                                                                                                                                       
      

  4.   

    dbedit不就行了只需adoquery1.append
    adoquery1.post
    就到库里了
      

  5.   

    谢谢大家,问题已解决.原来是少了引号.     Vstr:='result1,result2,result3,result4';
     改成Vstr:=''''+result1+''''+','+''''+result2''''+','+...
         
        sql.Text:='insert into YY_MainData ('+Fstr+') values('+vstr+')';可是还有点不明白,为什么只能用
    sql.Text:='insert into YY_MainData ('+Fstr+') values('+vstr+')';
    而不能用下面的语句?         sql.add('insert into YY_MainData');
             sql.add('(:P1)');
             sql.add(' values(:p2)');
             Parameters.ParamByName('p1').value := Fstr;
             Parameters.ParamByName('p2').value := Vstr;
      

  6.   

    我来告诉你吧,
      Parameters.ParamByName('p1').value := Fstr;
             Parameters.ParamByName('p2').value := Vstr;
    的写法不对!
      

  7.   

    Parameters(参数对像)的用法和目的要搞通
    Parameters是delphi里面有用的一个中间对像,类似的还有Tlist和TStringlist这些
    也是一种平台的技巧,搞懂很有用,不过不能太依赖