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;
入库表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.')'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
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;
如果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)
是不是语句在一行的字符太多了?
问题2我改成了
sql.add(update T_Storage set price='+FloatToStr(StrToFloat(i)+StrToFloat(i)*((StrToFloat(SpinEdit1.Text))/100))+' where Name='''+Edit_Name.Text+'''');
程序通过了,
第一个问题还期待大家讨论讨论
SQL.add('update T_Storage set price=' + CurrToStr(i+i*(StrToCurr(SpinEdit1.Text)/100))
+ ' where Name=' + QuotedStr(Edit_Name));