SQL.Text := 'insert into TB_USERTOTAL '
      + 'select D.id,U.userno,U.areaname,U.houseno,U.houseunit,U.housing, '
      + 'U.chargingarea, U.name,U.telephone,U.meterno,U.readmeterno, '
      + 'D.headtotal, D.headtotal*(:headpricevalue)*U.chargingarea headmoney, '
      + 'D.coldtotal, D.coldtotal*(:coldpricevalue)*U.chargingarea coldmoney, U.memo'
      + 'from TB_USERINFO as U, TB_USERDATATEMP as D '
      + 'where U.meterno=D.meterno '
      + 'and (D.todaytime between :startdayvalue and :enddayvalue)';语句中的

解决方案 »

  1.   

    上句语句中红的部分如果没有:headpricevalue和:coldpricevalue,整 个语句是没有错误的,但是因为这是一个统计表,我想对字段*一个 单价,但是发现这样赋值完全不对,请问怎么才可以把这个单价加上?是不是要分开处理,先把数据找出,然后再用update来修改TB_USERTOTAL表?
      

  2.   

    后面加:
    Parameters.ParamByName('headpricevalue').Value := 100;  //举个例子,100
    Parameters.ParamByName('coldpricevalue').Value := 50;
    Parameters.ParamByName('startdayvalue').Value := '2009-01-07';
    Parameters.ParamByName('enddayvalue').Value := '2009-01-10';
    给这些参数赋值。
      

  3.   

    sql中使用变量如下
    字段名=:变量名
    然后
    Parameters.ParamByName('变量名').Value := 你的值
      

  4.   

    Parameters.ParamValues['headpricevalue'] := 你的值
      

  5.   

    问题已经解决,其实问题的原因不是这个语句有错,而是在一个语句最后如U.memo'这里有误,因为下面跟着是个where,而U.memo后面没有空格导致语句连起来就变成U.memowhere这样了,所以还是我自己写代码不小心而造成的。
    谢谢楼上各位的回贴
      

  6.   

    不知道hongqi162 的回答是不是给我删掉了,如果是那我说声对不起了,分也加不了,sorry!