参数前要加“:”,你的SQL改一下就行了:
......
Sql.Add('Values(cp,Tlno,EngName,ChiName,Color,Mat)');
改为
Sql.Add('Values(:cp,:Tlno,:EngName,:ChiName,:Color,:Mat)');这里的cp,tlno,engname,chiname,color,mat都是SQL的参数,接下来要给这些参数赋值:
parambyname('cp').asinteger:=cp;//这里假定你的cp是整形的
parambyname('tlno').asinteger:=tlno;
parambyname('engname').asstring:=engname;
parambyname('chiname').asstring:=chiname;
parambyname('color').asstring:=color;  //假定你的color是字符串类型的
parambyname('mat').asstring:=mat;  //假定你的mat是字符串类型的最后提交插入操作:
execsql;

解决方案 »

  1.   

    另一种方法,不使用参数,直接把变量的值写到SQL中:var sqlstr: string;
    ......
    sqlstr:='Insert into cpsx '
      +'(cp_no,tl_no,cp_name,cp_name_cn,cp_color,cp_Waste) '
      +'Values('+inttostr(cp)+','
      +inttostr(tlno)+','
      +engname+','
      +chiname+','
      +color+','
      +mat+','+')';with aqry do
      begin
        close;
        sql.clear;
        sql.add(sqlstr);
        execsql;
      end;
     
      

  2.   

    With AQry do
        begin
          DisableControls;
          Close;
          Sql.Clear;
          Sql.Add('Insert into cpsx');
          Sql.Ad('(cp_no,tl_no,cp_name,cp_name_cn,cp_color,cp_Waste) ');
          Sql.Add('Values('+cp+','+.....)');
          ExecSql;
        end;