procedure Tmainform.insertcheck  (var check:TCheckBox;field:string);
 begin
   if check.Checked  then
     with  datamd.qry do
     begin
     close;
     sql.Clear ;
     sql.Add('update  制作說明書 set field=1 ');
     sql.Add('where 訂單編號=:dd') ;
     Parameters.ParamByName('dd').Value:=did.Text ;
     ExecSQL ;
     end ;
 end;調用時 insertcheck (ks,'卡身');是不對的,
另外一種是直接輸入是對的,
是不是我定義參量錯了。 procedure Tmainform.insertcheck  (var check:TCheckBox;field:string);
 begin
   if check.Checked  then
     with  datamd.qry do
     begin
     close;
     sql.Clear ; 
     sql.Add('update  制作說明書 set 卡身=1 ');    //隻是這裡不同
     sql.Add('where 訂單編號=:dd') ;
     Parameters.ParamByName('dd').Value:=did.Text ;
     ExecSQL ;
     end ;
 end;

解决方案 »

  1.   


    sql.Add('update  制作說明書 set' + field + '=1 ');OK!!
      

  2.   

    楼上对,或者
         sql.Add('update  制作說明書 set :f=1 ');
         sql.Add('where 訂單編號=:dd') ;
         Parameters.ParamByName('f').Asstring:=field ;
    ....
    -------------------------------
    Microsoft OLE DB Provider for SQL Server 错误 '80040e31' 超时已过期 /Expert/reply.asp,行105
      

  3.   

    sql.Add('update  制作說明書 set field=1 '); 改成:
         sql.Add('update  制作說明書 set ' + field + '=1 ');
      

  4.   

    sql.Add('update  制作說明書 set field=1 '); 改成:
         sql.Add('update  制作說明書 set ' + field + '=1'); //set 后面要有空格
      

  5.   

    注意:
        Sql.Add('update  制作說明書 set '+field+'=1 ');
      

  6.   

    Sql.Add('update  制作說明書 set field='''+'1'+'''');
      

  7.   

    第一种是因为你的字段名错了,字段名没有用参数
    Sql.Add('update  制作說明書 set '+field+'= '''+did.text+'''');