请帮我看看这个程序错在哪(100分)

  • 主题发起人 主题发起人 战狂
  • 开始时间 开始时间

战狂

Unregistered / Unconfirmed
GUEST, unregistred user!
begin
query1.Close ;
query1.sql.Clear;
query1.SQL.Add ('insert into 注塑工资(工号,姓名,月份,计件资) select 工号,姓名,月份, sum(计件工资) as 计工资 from 注塑随工单 where 月份=edit1.text');
query1.SQL.Add('group by 工号,姓名,月份');
query1.ExecSQL;
button9.Enabled:=false;
end;

运行时报错:"参数不足"
如果用月份不用等于edit1.text而是直接数字就可以
 
query1.SQL.Add ('insert into 注塑工资(工号,姓名,月份,计件资) select 工号,姓名,月份, sum(计件工资) as 计工资 from 注塑随工单 where 月份='+edit1.text);
 
query1.SQL.Add ('insert into 注塑工资(工号,姓名,月份,计件资) select 工号,姓名,月份, sum(计件工资) as 计工资 from 注塑随工单 where 月份='''+edit1.text+''');

query1.SQL.Add ('insert into 注塑工资(工号,姓名,月份,计件资) select 工号,姓名,月份, sum(计件工资) as 计工资 from 注塑随工单 where 月份=:month');
Query1.Parameters.ParamByName('month').value:=edit1.text;


 
应该这样:
query1.Close ;
query1.sql.Clear;
query1.SQL.Add ('insert into 注塑工资(工号,姓名,月份,计件资) select 工号,姓名,月份, sum(计件工资) as 计工资 from 注塑随工单 where 月份=''' + edit1.text + '''');
query1.SQL.Add('group by 工号,姓名,月份');
query1.ExecSQL;
 
谢谢我试试
 
简直是白拿分数!赚钱真容易
query1.Close ;
query1.sql.Clear;
query1.SQL.Add ('insert into 注塑工资(工号,姓名,月份,计件资) select 工号,姓名,月份, sum(计件工资) as 计工资 from 注塑随工单 where 月份=''' + edit1.text + '''');
query1.SQL.Add('group by 工号,姓名,月份');
query1.ExecSQL;
 
呵呵,
谢谢大家,
但是我再加一个条件要如何,
query1.Close ;
query1.sql.Clear;
query1.SQL.Add ('insert into 注塑工资(工号,姓名,月份,计件资) select 工号,姓名,月份, sum(计件工资) as 计工资 from 注塑随工单 where 月份='+edit1.text' and 姓名='+edit2.text);
query1.SQL.Add('group by 工号,姓名,月份');
query1.ExecSQL;

这样编译不过
请帮我看看edit2.text要如何加,
行了我马上放分了,呵呵,我是初学者,谢谢大家
 
老毛病
query1.Close ;
query1.sql.Clear;
query1.SQL.Add ('insert into 注塑工资(工号,姓名,月份,计件资) select 工号,姓名,月份, sum(计件工资) as 计工资 from 注塑随工单 where 月份='''+edit1.text''' and 姓名='''+edit2.text+'''');
query1.SQL.Add('group by 工号,姓名,月份');
query1.ExecSQL;

 

在这样的SQL语句中,edit1.text也好,edit2.text也好,还是 edit100.text 也好,都要这样表达:'''+edit1.text+'''

类似的也是,比如:label1.caption 在SQL 中要写:'''+Label1.caption+'''


 
query1.SQL.Add ('insert into 注塑工资(工号,姓名,月份,计件资) select 工号,姓名,月份, sum(计件工资) as 计工资 from 注塑随工单 where 月份=''' + edit1.text + '''');
 
字符类型的字段值在sql语句中要用引号。
注意一下即可。
 
应该这样:
query1.Close ;
query1.sql.Clear;
query1.SQL.Add ('insert into 注塑工资(工号,姓名,月份,计件资) select 工号,姓名,月份, sum(计件工资) as 计工资 from 注塑随工单 where 月份=''' + edit1.text + '''');
query1.SQL.Add('group by 工号,姓名,月份');
query1.ExecSQL;
也是注意edit1.text
 
当库中字段是字符类型时候,需要在条件等号后面加'''+字符串+'''或者使用#39+字符串+#39。但是如果月份是个int型的,就不需要加#39了~
 
谢谢大家,以后再来给你送分
 
建议用Format;
var
sqlstring:string;
begin
query1.Close ;
query1.sql.Clear;
sqlstring:=Format('insert into 注塑工资(工号,姓名,月份,计件资) select 工号,姓名,月份, sum(计件工资) as 计工资 from 注塑随工单 where 月份=''%s'' and 姓名=''%s'' group by 工号,姓名,月份',[edit1.text,edit2.text]);
query1.sql.add(sqlstring);
query1.ExecSQL;
end;
 
只要数据库中字段的类型是字符型的,在where语句后都是这样表示的'''+字符串+'''
 
我的月份是int的,要如何写,

query1.SQL.Add ('insert into 注塑工资(工号,姓名,月份,计件资) select 工号,姓名,月份, sum(计件工资) as 计工资 from 注塑随工单 where 姓名='''+edit2.Text''' and 月份='''+edit1.text'''' );
月份不是字符型所以报错了


 
query1.SQL.Add ('insert into 注塑工资(工号,姓名,月份,计件资) select 工号,姓名,月份, sum(计件工资) as 计工资 from 注塑随工单 where 月份=' + edit1.text);
 
请看此贴:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2161896
 
后退
顶部