在报表中,为什么可以显示字段名,而预览时却是空的?(30分)

  • 主题发起人 主题发起人 Endo
  • 开始时间 开始时间
E

Endo

Unregistered / Unconfirmed
GUEST, unregistred user!
//动态创建QRLabel和QRDBText
Function CreateQRLabelAndQRDBText(DBGrid:TDBGrid):String;
var
i:integer;
begin
For i:=0 To DBGrid.FieldCount-1do
begin
QRLabel:=TQRLabel.Create(Application);
QRDBText:=TQRDBText.Create(Application);
QRLabel.Caption:=DBGrid.Fields.FieldName;
QRDBText.DataSet:=ADOQuery;
QRDBText.DataField:=DBGrid.Fields.FieldName;
QRLabel.Top:=60;
QRDBText.Top:=QRLabel.Top+30;
QRLabel.Left:=i*60+50;
QRDBText.Left:=QRLabel.Left;
QRLabel.Parent:=F_Report;  // 父窗体名为 F_Report
QRDBText.Parent:=F_Report;

QRLabel.Width:=100;
QRDBText.Width:=100;
QRLabel.Height:=16;
QRDBText.Height:=16;
end;
end;

Procedure ......
begin
CreateQRLabelAndQRDBText(F_Main.DBGrid_DB);
//F_Report.QuickRep_DB.Preview;(为什么预览时窗口没有显示任何数据???)
F_Report.Show;(正常显示字段名,说明字段连接没问题)
end;
 
QRLabel.Parent---PageHeaderBand1 or TitleBand1 or DetailBand1
 
我用的是 TQRBand !
大侠,不大明白啊,能不能再仔细说明一下啊!谢谢了!
 
我用的是 TQRBand !
大侠,不大明白啊,能不能再仔细说明一下啊!谢谢了!
 
你对照我早四年做的东东看看吧.
procedure TLaborageForm.pmiLaborage1Click(Sender: TObject);
var
i, iLeft:integer;
begin
inherited;
iLeft:=77;
ReportForm:=TReportForm.Create(self);
ReportForm.QRLabel3.Caption:=IntTostr(FYear)+Pchar(sYear)+IntToStr(FMonth)+Pchar(sMonth)+Pchar(sCaption);
ReportForm.QRLabel1.Caption:=Pchar(sCaption);
ReportForm.QRLabel6.Caption:='部门';
// ReportForm.QRLabel6.Caption:=DM2.qryLaborage1DepName.DisplayLabel;
ReportForm.QRSysData2.Text:=Pchar(sPrintDate);
for i:=0 to DBGridEh1.FieldCount-1do
begin
ReportForm.FQRLabel:=TQRLabel.Create(self);
ReportForm.FQRLabel.Parent:=ReportForm.QRBand3;
ReportForm.FQRLabel.Alignment:=taCenter;
ReportForm.FQRLabel.AutoSize:=False;
ReportForm.FQRLabel.AutoStretch:=True;
ReportForm.FQRLabel.Transparent:=True;
ReportForm.FQRLabel.Frame.DrawBottom:=True;
ReportForm.FQRLabel.Frame.DrawLeft:=True;
ReportForm.FQRLabel.Frame.DrawRight:=True;
ReportForm.FQRLabel.Frame.DrawTop:=True;
ReportForm.FQRLabel.Left:=iLeft;
ReportForm.FQRLabel.Top:=ReportForm.QRLabel6.Top;
ReportForm.FQRLabel.Height:=21;
ReportForm.FQRLabel.Font.Size:=8;
if DBGridEh1.Columns.FieldName='BasePay' then
ReportForm.FQRLabel.Caption:=Pchar(sBasePay)
else
if DBGridEh1.Columns.FieldName='CQ0' then
ReportForm.FQRLabel.Caption:=Pchar(sWorkDate)
else
ReportForm.FQRLabel.Caption:=DBGridEh1.Columns.Title.Caption;
ReportForm.FQRLabel.Width:=DBGridEh1.Columns.Width;
ReportForm.FQRDBText:=TQRDBText.Create(self);
ReportForm.FQRDBText.Parent:=ReportForm.QRBand3;
ReportForm.FQRDBText.Alignment:=taRightJustify;
ReportForm.FQRDBText.AutoSize:=False;
ReportForm.FQRDBText.Transparent:=True;
ReportForm.FQRDBText.Frame.DrawBottom:=True;
ReportForm.FQRDBText.Frame.DrawLeft:=True;
ReportForm.FQRDBText.Frame.DrawRight:=True;
ReportForm.FQRDBText.Frame.DrawTop:=True;
ReportForm.FQRDBText.Left:=iLeft;
ReportForm.FQRDBText.Top:=ReportForm.QRDBText1.Top;
ReportForm.FQRDBText.Height:=21;
ReportForm.FQRDBText.Font.Size:=8;
ReportForm.FQRDBText.Width:=DBGridEh1.Columns.Width;
ReportForm.FQRDBText.DataSet:=DM2.qryLaborage1;
ReportForm.FQRDBText.DataField:=DBGridEh1.Columns.FieldName;
iLeft:=iLeft+DBGridEh1.Columns.Width;
end;
Report:=ReportForm.QuickRep;
Report.Preview;
end;
 
还是不行啊,大虾!
能不能再给些意见啊???
 
多人接受答案了。
 
后退
顶部