1.
入库表T_GoodsIn:name,spec,unit,inprice,batch,innum,inmoney,  初期库存表T_GoodsFirst:name,firstnum,firstmoney
库存查询表:T_Storage,如果我只对数量进行汇总,
insert into T_Storage(Name,InNum,FirstNum,OutNum,F_Flag) select (Name,sum(InNum) as T_In,sum(FirstNum) as T_FirstIn,sum(OutNum) as T_Out,sum(InMoney) as T_InMon,true from T_Storage group  by Name)
程序没问题,执行结果也正确,但加上对金额进行汇总,
insert into T_Storage(Name,InNum,FirstNum,OutNum,InMoney,FirstMoney,OutMoney,F_Flag) select (Name,sum(InNum) as T_In,sum(FirstNum) as T_FirstIn,sum(OutNum) as T_Out,sum(InMoney) as T_InMon,sum(FirstMoney) as T_FirstMon,sum(OutMoney) as T_OutMon,true from T_Storage group  by Name)
程序提示:string literals may have at most 255 elements错误 !!请帮忙解释!!
如果我还想通过左连接,把入库表的货品其他字段加进来,这样写行得通不?
'insert into T_Storage(Name,InNum,FirstNum,OutNum,InMoney,FirstMoney,OutMoney,F_Flag) select T_Storage.*,T_GoodsIn.Batch,T_GoodsIn.Spec,T_GoodsIn.Unit,T_GoodsIn.Type,
T_GoodsIn.Inprice from (select Name,sum(InNum) as T_In,sum(FirstNum) as T_FirstIn,sum(OutNum) as T_Out,sum(InMoney) as T_InMon,sum(FirstMoney) as T_FirstMon,sum(OutMoney) as T_OutMon,true from T_Storage group  by Name) T_Storage Left Join T_GoodsIn OnT_Storage.Name=T_GoodsIn.Name');//name不是关键字,行吗?2.
我对货品价格进行调整,用百分比方式调价,对库存表价格字段进行更新
var i:string;
begin
  with query1 do
  begin
    close;
    sql.clear;
    sql.add(select * from T_Storage);
    open;
  end;
end;
i:=query1.fieldbyname('price').asstring;
with query1 do
begin
  close;
  sql.clear;
  sql.add('update T_Storage set price='StrToFloat(i)+StrToFloat(i)*(StrToFloat(SpinEdit1.Text)/100' where Name='''+Edit_Name+'''');//这句错了,请问怎么修改?
  open;
end;

解决方案 »

  1.   

    问题2的那句系统提示有4个错误:
    1.')'expected but identifier 'strtofloat' found
    2.Missing operator or semicolon
    3.incompatible types:'string'and'Extended'
    4.Statement expected but expression of type 'Extended' found
      

  2.   

    跟踪, 把sql语句复制到查询分析器中看看, 就知道了
      

  3.   

    第2个问题:
    with query1 do
    begin
      close;
      sql.clear;
      sql.add('update T_Storage set price=' + FloatToStr(i + i * StrToFloat(SpinEdit1.text)/100) + ' where Name ='''+Edit_Name+'''');
      open;
    end;
      

  4.   

    第1个问题:
    如果F_Flag是布尔型,则把True改为1试试:
    即:
    insert into T_Storage(Name,InNum,FirstNum,OutNum,InMoney,FirstMoney,OutMoney,F_Flag) select (Name,sum(InNum) as T_In,sum(FirstNum) as T_FirstIn,sum(OutNum) as T_Out,sum(InMoney) as T_InMon,sum(FirstMoney) as T_FirstMon,sum(OutMoney) as T_OutMon,1 from T_Storage group  by Name)
      

  5.   

    string literals may have at most 255 elements?
    是不是语句在一行的字符太多了?
      

  6.   

    回答hqhhh(枫叶) ,F_Flag是布尔型,改成1后还是提示原来的错误。
    问题2我改成了
    sql.add(update T_Storage set price='+FloatToStr(StrToFloat(i)+StrToFloat(i)*((StrToFloat(SpinEdit1.Text))/100))+' where Name='''+Edit_Name.Text+'''');
    程序通过了,
    第一个问题还期待大家讨论讨论
      
      

  7.   

    现在第2个问题又有新错误了,调试通过了,但操作时提示is not a valid floating point value错误
      

  8.   

    var i:Currency;...i:=query1.fieldbyname('price').asCurrency;...
      
    SQL.add('update T_Storage set price=' + CurrToStr(i+i*(StrToCurr(SpinEdit1.Text)/100))    
            + ' where Name=' + QuotedStr(Edit_Name));