以下代码是制作FASTREPORT动态报表的:
var
Page: TfrPage;BandMD: TfrBandView;NUM,PRICE: TfrView;
procedure TfrmFRPrint.FormCreate(Sender: TObject);
begin query1.Close;
query1.ConnectionString:=strConn;
query1.Prepared;
query1.SQL.Clear;
query1.SQL.Add('select * from pomx where pono='+''''+frmCashAcc.edit5.Text+'''');
query1.Open;
frDataSet1.DataSet:=Query1;
fr.Pages.Clear;
fr.Pages.Add;
Page := fr.Pages[0]; BandMD:= TfrBandView(frCreateObject(gtBand, '')); // create MasterData band
BandMD.SetBounds(0, 424, 758, 24);
BandMD.BandType := btMasterData;
BandMD.Dataset := 'frDataSet1';
BandMD.Prop['Stretched']:=True;
Page.Objects.Add(BandMD); Num:= frCreateObject(gtMemo, '');
Num.SetBounds(416, 428, 103, 18);
Num.Memo.Add('[query2."num"]');
Num.Prop['Alignment']:=10;
Num.Format := 1 * $01000000 + 4 * $00010000 +
3 * $00000100+ord('.');
Num.FormatStr:='0.000';
Page.Objects.Add(Num); Price:= frCreateObject(gtMemo, '');
Price.SetBounds(602, 329, 107, 18);
Price.Memo.Add('[query1."Price"]');
Price.Format := 1 * $01000000 + 4 * $00010000 +
4 * $00000100+ord('.');
Price.FormatStr:='0.0000';
Page.Objects.Add(Price); fr.ShowReport;
end;上面的NUM是字段NUM(数量)的MEMO,Price是字段Price(单价)的MEMO,,但
当一列数值中,如下: 未用Format前 用了Format后 现在想设为
数量 单价 数量 单价 数量 单价
3.5780000686 2.375999927 3.578 2.3760 3.578 2.3760
75 10 75.000 10.0000 75 10.00
即是:当数量遇到小数时,取三位小数,遇到整数时取整数;
当单价遇到小数时,取四位小数,遇到整数时取两位小数;
不知如何解决?
var
Page: TfrPage;BandMD: TfrBandView;NUM,PRICE: TfrView;
procedure TfrmFRPrint.FormCreate(Sender: TObject);
begin query1.Close;
query1.ConnectionString:=strConn;
query1.Prepared;
query1.SQL.Clear;
query1.SQL.Add('select * from pomx where pono='+''''+frmCashAcc.edit5.Text+'''');
query1.Open;
frDataSet1.DataSet:=Query1;
fr.Pages.Clear;
fr.Pages.Add;
Page := fr.Pages[0]; BandMD:= TfrBandView(frCreateObject(gtBand, '')); // create MasterData band
BandMD.SetBounds(0, 424, 758, 24);
BandMD.BandType := btMasterData;
BandMD.Dataset := 'frDataSet1';
BandMD.Prop['Stretched']:=True;
Page.Objects.Add(BandMD); Num:= frCreateObject(gtMemo, '');
Num.SetBounds(416, 428, 103, 18);
Num.Memo.Add('[query2."num"]');
Num.Prop['Alignment']:=10;
Num.Format := 1 * $01000000 + 4 * $00010000 +
3 * $00000100+ord('.');
Num.FormatStr:='0.000';
Page.Objects.Add(Num); Price:= frCreateObject(gtMemo, '');
Price.SetBounds(602, 329, 107, 18);
Price.Memo.Add('[query1."Price"]');
Price.Format := 1 * $01000000 + 4 * $00010000 +
4 * $00000100+ord('.');
Price.FormatStr:='0.0000';
Page.Objects.Add(Price); fr.ShowReport;
end;上面的NUM是字段NUM(数量)的MEMO,Price是字段Price(单价)的MEMO,,但
当一列数值中,如下: 未用Format前 用了Format后 现在想设为
数量 单价 数量 单价 数量 单价
3.5780000686 2.375999927 3.578 2.3760 3.578 2.3760
75 10 75.000 10.0000 75 10.00
即是:当数量遇到小数时,取三位小数,遇到整数时取整数;
当单价遇到小数时,取四位小数,遇到整数时取两位小数;
不知如何解决?
解决方案 »
- 求Delphi高手提建议,把Excel转换成PDF文件的思路,有源码更好
- 求个vcl控件?
- 在Delphi应用程序设计上,同时调用多个回调函数处理
- Dataset 过滤
- 奇怪了,file not found这个错误直接让我晕倒
- 请教为什么用TDcomconnection控件开发多层分布应用程序时在客户机中运行客户程序会提示“拒绝访问”???
- 散分了!!!!!!!!
- 请问这句比较复杂的C++程序怎么译成Pascal?
- 如何在delphi中实现windows中net send 发送消息的功能!
- 累了一天了,讨论讨论?支个招?
- 各位帮忙用delphi或sqlserver做一个递归展程序!如产品bom树展开!谢谢!
- 问个很菜的问题。为什么调试DLL 有时候调用不能跟踪进去。
Price:= frCreateObject(gtMemo, '');
Price.SetBounds(602, 329, 107, 18);
Price.Memo.Add('[FormatFloat([str],[query1."Price"])]');
Price.Script.Add('
//这个语句你需要注意单引号,自己弄好
if Frac([明细数据."Price"])>0 then
str:='#,####0.0000'
else
str:='#,##0.00'
')
Page.Objects.Add(Price);以上方法应该可行,我试过的
多给我点分。
^_^
Price:= frCreateObject(gtMemo, '');
Price.SetBounds(602, 329, 107, 18);
Price.Memo.Add('[FormatFloat([str],[query1."Price"])]');
Price.Script.Add('
//这个语句你需要注意单引号,自己弄好
if Frac([明细数据."Price"])>0 then
str:='#,####0.0000'
else
str:='#,##0.00'
')
Page.Objects.Add(Price);脚本那行:Price.Script.Add(' 错误提示为:Unterminated String;
这行:if Frac([明细数据."Price"])>0 then 错误提示为:Missing operator or semicolon;
Illegal character in input file:''细''[$CFB8].
在DBGRID中,字段是MEMO(备注)型的,在新增或修改记录时如何在DBGRID中输入文本内容?
一般在Dbgrid中不会直接编辑Memo型的字段,可以在另外的控件中编辑。
如果确实需要在DBGrid中编辑,就不要选择Memo型。可以选用文本类型的。