欢迎批评指正!!!

时间:2021-07-21 14:40:01
with Query1 do
begin
query1.Close;
query1.SQL.Clear;
Query1.SQL.Add(' Select hm,sum(je),count(*) from temp.db group by hm ');
query1.Open;
QuickReport1.DataSet:=query1;
QuickReport1.QRDBText1.DataSet:=query1;
QuickReport1.QRDBText1.DataField:='hm';
QuickReport1.QRDBText2.DataSet:=query1;
QuickReport1.QRDBText2.DataField:='sum(je)';
QuickReport1.QRDBText3.DataSet:=query1;
QuickReport1.QRDBText3.DataField:='count(*)';
QuickReport1.QRDBText4.DataSet:=query1;
QuickReport1.Preview;
end;
为什么不能打印,各位有什么好的方法!

12 个解决方案

#1


计算机报什么错?

#2


有了with Query1 do为什么query1.SQL.Clear中还要加query1?

#3


上面的QUERY是没有问题,就是sum(je)在报表里没有金额!!!

#4


push!

#5


把sql语句写成Select hm,sum(je) as sum,count(*) from temp.db group by hm
QuickReport1.QRDBText2.DataField:='sum'再试试,

#6


TO:boynicky(鱼干儿)
我试过了,sum不可识别!

#7


把sql语句写成Select hm,sum(je) as mysum,count(*) from temp.db group by hm
QuickReport1.QRDBText2.DataField:='mysum'再试试,

#8


取个别名吧!

#9


//with Query1 do <----下面你已经用了Query1,这里就没有必要了
//begin
query1.Close;
query1.SQL.Clear;
Query1.SQL.Add(' Select hm,sum(je) as je,count(*) as RecCount from temp.db group by hm ');
query1.Open;
QuickReport1.DataSet:=query1;
QuickReport1.QRDBText1.DataSet:=query1;
QuickReport1.QRDBText1.DataField:='hm';
QuickReport1.QRDBText2.DataSet:=query1;
QuickReport1.QRDBText2.DataField:='je';
QuickReport1.QRDBText3.DataSet:=query1;
QuickReport1.QRDBText3.DataField:='RecCount';
QuickReport1.QRDBText4.DataSet:=query1; <---QRDBText4的DataField呢?
QuickReport1.Preview;
end;

如果这样Sum还没有值的话,你把Query1放到一个DataModule中去!!
至于为什么,我也说不出个所以然来,反正就得这样,嘻嘻^o^

#10


我测试了一下,QRDBText不适合做这样的事情,建议使用QRExpr,下面是我的代码:
  Query1.Close;
  Query1.SQL.Clear;
  Query1.SQL.Add('select OrderNo,Sum(Qty),count(*) from items group by OrderNo');
  Query1.Open;
  QRExpr2.Expression:= '['+Query1.Fields[0].FieldName+']';
  QRExpr3.Expression:= '['+Query1.Fields[1].FieldName+']';
  QRExpr4.Expression:= '['+Query1.Fields[2].FieldName+']';
  QuickRep1.Preview;
注意,应首先将QuickRep1的DataSet设置成Query1。

#11


with Query1 do
begin
  Close;
  SQL.Clear;
  SQL.Add(' Select hm,sum(je),count(*) from temp.db group by hm ');
  Open;
  QuickReport1.DataSet:=query1;
  QuickReport1.QRDBText1.DataSet:=query1;
  QuickReport1.QRDBText1.DataField:='hm';
  QuickReport1.QRDBText2.DataSet:=query1;
  QuickReport1.QRDBText2.DataField:='sum(je)';//改
  QRLabel.Caption := FieldByName('Sum(je)').AsString;//最后用个别名;
  //QRDBText 不要这样用,你用QRLabel,如果多的话,就动态生成;
  QuickReport1.QRDBText3.DataSet:=query1;
  QuickReport1.QRDBText3.DataField:='count(*)';//再取一个名子;
  QuickReport1.QRDBText4.DataSet:=query1;
  QuickReport1.Preview;
end;
QuickReport1.QRDBTextX -> QRDBTextX就可以了;
SQL.Add(' Select hm,sum(je),count(*) from temp.db group by hm ');-〉
SQL.Add(' Select hm,sum(je) as SumValue,count(*) as CountValue from temp.db group by hm ');
还有一点,最好不要将统计信息和它字段写在一起;
用QRExpr肯定比这个更好,你可以试一试的;

#12


用 inbud(清风侠) 的;
应该可以成功的;
其实解决问题就是两种方法:
NO.1:
  SQL.Add(' Select hm,sum(je) as SumValue,count(*) as CountValue from temp.db group by hm ');
NO.2:
  QRExpr
运行期:
  QRExprX.Expression:= '['+Query1.Fields[0].FieldName+']';//这个我不知道倒底对不对,不过,你打开窗体文件,什么都知道了;
设计期:
  QRExprX.Expression:= Sum(Query1.FieldByName('je').AsFloat);  
祝你好运;

#1


计算机报什么错?

#2


有了with Query1 do为什么query1.SQL.Clear中还要加query1?

#3


上面的QUERY是没有问题,就是sum(je)在报表里没有金额!!!

#4


push!

#5


把sql语句写成Select hm,sum(je) as sum,count(*) from temp.db group by hm
QuickReport1.QRDBText2.DataField:='sum'再试试,

#6


TO:boynicky(鱼干儿)
我试过了,sum不可识别!

#7


把sql语句写成Select hm,sum(je) as mysum,count(*) from temp.db group by hm
QuickReport1.QRDBText2.DataField:='mysum'再试试,

#8


取个别名吧!

#9


//with Query1 do <----下面你已经用了Query1,这里就没有必要了
//begin
query1.Close;
query1.SQL.Clear;
Query1.SQL.Add(' Select hm,sum(je) as je,count(*) as RecCount from temp.db group by hm ');
query1.Open;
QuickReport1.DataSet:=query1;
QuickReport1.QRDBText1.DataSet:=query1;
QuickReport1.QRDBText1.DataField:='hm';
QuickReport1.QRDBText2.DataSet:=query1;
QuickReport1.QRDBText2.DataField:='je';
QuickReport1.QRDBText3.DataSet:=query1;
QuickReport1.QRDBText3.DataField:='RecCount';
QuickReport1.QRDBText4.DataSet:=query1; <---QRDBText4的DataField呢?
QuickReport1.Preview;
end;

如果这样Sum还没有值的话,你把Query1放到一个DataModule中去!!
至于为什么,我也说不出个所以然来,反正就得这样,嘻嘻^o^

#10


我测试了一下,QRDBText不适合做这样的事情,建议使用QRExpr,下面是我的代码:
  Query1.Close;
  Query1.SQL.Clear;
  Query1.SQL.Add('select OrderNo,Sum(Qty),count(*) from items group by OrderNo');
  Query1.Open;
  QRExpr2.Expression:= '['+Query1.Fields[0].FieldName+']';
  QRExpr3.Expression:= '['+Query1.Fields[1].FieldName+']';
  QRExpr4.Expression:= '['+Query1.Fields[2].FieldName+']';
  QuickRep1.Preview;
注意,应首先将QuickRep1的DataSet设置成Query1。

#11


with Query1 do
begin
  Close;
  SQL.Clear;
  SQL.Add(' Select hm,sum(je),count(*) from temp.db group by hm ');
  Open;
  QuickReport1.DataSet:=query1;
  QuickReport1.QRDBText1.DataSet:=query1;
  QuickReport1.QRDBText1.DataField:='hm';
  QuickReport1.QRDBText2.DataSet:=query1;
  QuickReport1.QRDBText2.DataField:='sum(je)';//改
  QRLabel.Caption := FieldByName('Sum(je)').AsString;//最后用个别名;
  //QRDBText 不要这样用,你用QRLabel,如果多的话,就动态生成;
  QuickReport1.QRDBText3.DataSet:=query1;
  QuickReport1.QRDBText3.DataField:='count(*)';//再取一个名子;
  QuickReport1.QRDBText4.DataSet:=query1;
  QuickReport1.Preview;
end;
QuickReport1.QRDBTextX -> QRDBTextX就可以了;
SQL.Add(' Select hm,sum(je),count(*) from temp.db group by hm ');-〉
SQL.Add(' Select hm,sum(je) as SumValue,count(*) as CountValue from temp.db group by hm ');
还有一点,最好不要将统计信息和它字段写在一起;
用QRExpr肯定比这个更好,你可以试一试的;

#12


用 inbud(清风侠) 的;
应该可以成功的;
其实解决问题就是两种方法:
NO.1:
  SQL.Add(' Select hm,sum(je) as SumValue,count(*) as CountValue from temp.db group by hm ');
NO.2:
  QRExpr
运行期:
  QRExprX.Expression:= '['+Query1.Fields[0].FieldName+']';//这个我不知道倒底对不对,不过,你打开窗体文件,什么都知道了;
设计期:
  QRExprX.Expression:= Sum(Query1.FieldByName('je').AsFloat);  
祝你好运;