为什么总报错误那?那个大哥帮忙看看
 HWMC:= ZXCLDBGridEh.DataSource.DataSet.Fields.Fields[0].Value;
   PP:= ZXCLDBGridEh.DataSource.DataSet.Fields.Fields[1].Value;
   XH:= ZXCLDBGridEh.DataSource.DataSet.Fields.Fields[2].Value;
   JG:= ZXCLDBGridEh.DataSource.DataSet.Fields.Fields[4].Value;
   SL:= DBEditEh1.Value;
   ZJ:= SL*JG;
   with SZSJFADM.ZXFAADOQ do
   begin   close;
   sql.Clear;
  sql.Add('insert into 装修方案([货物名称],[品牌],[型号],[数量],[单价],[总价])'+'values(HWMX,PP,XH,SL,JG,ZJ)') ;   ExecSQL;

解决方案 »

  1.   

    sql.Add('insert into 装修方案([货物名称],[品牌],[型号],[数量],[单价],[总价]) values('''+
    HWMX+''','''+PP+''','''+XH+''','+SL+','+JG+','+ZJ+')') ; 
      

  2.   

    我将  ExecSQL; 去掉不报错误了,但是数据没有存进去!???
      

  3.   

    跟踪一下你的几个变量的值与表中的字段类型是否一致。
    跟踪一下插入的SQL语句是否正确(以检查字符变量的引号应用是否合理)。建议改成参数方式
     例: insert into aTableName (F01,F02) values (:a1,:a2);
          parameters.paramBYName('a1').value:=...
      

  4.   

    sql.Add('insert into 装修方案([货物名称],[品牌],[型号],[数量],[单价],[总价]) values('''+HWMX+''','''+PP+''','''+XH+''','+SL+','+JG+','+ZJ+')') ; 
      

  5.   

    按照楼上的提示改成下边这样了,可是提示 parameter'品牌'not found
    sql.Add('insert into 装修方案([货物名称],[品牌],[型号],[数量],[单价],[总价]) values(货物名称,品牌,型号,数量,单价,总价)')  ;
      parameters.ParamByName('品牌').Value := ZXCLDBGridEh.DataSource.DataSet.Fields.Fields[1].Value;
      

  6.   

    Fields[X]字段对应了吗?SQL那字符串变量引号,引号那东西的,如果变量太多,你可的好好加咯!
    '      '  + ''' +  ''''+'  '+'''+''''
      

  7.   

     我用的ACCESS数据库,总共有两个表一个装修材料(ID,货物名称,品牌,型号,价格,厂家,备注),一个装修方案(ID,货物名称,品牌,型号,数量,单价,总价,备注),
    货物名称,品牌,型号用的是文本类型
    数量是通过DBEditEh控件获取的
    单价,总价用的money类型,
    总价等于单价*数量
    装修材料用的DBGridEH显示,当选中一条记录选择添加将数据存储到装修方案里sql.Add('insert into 装修方案([货物名称],[品牌],[型号],[数量],[单价],[总价]) values(''+货物名称+'',''+品牌+'',''+型号+'',''+数量+'',''+单价+'',''+总价+'')')  ;
       parameters.ParamByName('货物名称').Value := ZXCLDBGridEh.DataSource.DataSet.Fields.Fields[0].Value;
       parameters.ParamByName('品牌').Value := ZXCLDBGridEh.DataSource.DataSet.Fields.Fields[1].Value;
       parameters.ParamByName('型号').Value := ZXCLDBGridEh.DataSource.DataSet.Fields.Fields[2].Value;
       parameters.ParamByName('数量').Value := DBEditEh1.Value;
       parameters.ParamByName('单价').Value := ZXCLDBGridEh.DataSource.DataSet.Fields.Fields[4].Value;
      

  8.   

    现在问题是编译没问题,但是运行的时候报parameter'货物名称 'not found 
      

  9.   

    sql中的参数不是加[],而是前置':',比如
    'select * from table1 where id=:num',num为单数,然后通过parameters赋值
      

  10.   

    改成这样还是不行呀 
     sql.Add('insert into 装修方案(货物名称,品牌,型号,数量,单价,总价) ');  
     sql.Add('values(:货物名称,:品牌,:型号,:数量,:单价,:总价)');   parameters.ParamByName('货物名称').Value := ZXCLDBGridEh.DataSource.DataSet.Fields.Fields[0].Value;
       parameters.ParamByName('品牌').Value := ZXCLDBGridEh.DataSource.DataSet.Fields.Fields[1].Value;
       parameters.ParamByName('型号').Value := ZXCLDBGridEh.DataSource.DataSet.Fields.Fields[2].Value;
       parameters.ParamByName('数量').Value := DBEditEh1.Value;
      parameters.ParamByName('单价').Value := ZXCLDBGridEh.DataSource.DataSet.Fields.Fields[4].Value;
      

  11.   

    sql.Add('insert into 装修方案(货物名称,品牌,型号,数量,单价,总价) ');  
    sql.Add(' values(:hwmc,:pm,:xh,:sl,:dj,:zj) '); 
    parameters.paramBYnName('hwmc').value:=....  ;
    parameters.paramBYnName('pm').value  :=....  ;
    ....
    execsql;建议楼主尽量不用中文表名或字段名,而改用拼音或英文较好。
      

  12.   

    我改用edit解决了,这个实在是不行,头都大了!谢谢各位,