我下面的代码是这样的,但是不论有没有选择,报表都是显示这三个字段的记录,我的全部代码如下,是我那里出错了.而且QuickRep1的DATASET属性已经设置了ADOQUERY了.procedure TForm1.FormCreate(Sender: TObject); var i,j:integer; begin //读取字段到CHECKLISTBOX里面 with adoquery1 do begin For j:=0 to Fields.Count -1 do Begin box1.Items.Add(Fields[j].FullName ); end; end; end;procedure TForm1.Button3Click(Sender: TObject); begin qrlistform.Qrdbtext1.DataSet:=Form1.ADOQuery1; qrlistform.Qrdbtext1.DataField:=form1.Box1.Items.Strings[0]; qrlistform.Qrdbtext2.DataSet:=Form1.ADOQuery1; qrlistform.Qrdbtext2.DataField:=form1.Box1.Items.Strings[1]; qrlistform.Qrdbtext3.DataSet:=Form1.ADOQuery1; qrlistform.Qrdbtext3.DataField:=form1.Box1.items.Strings[2]; QRListForm.QuickRep1.Preview;end;
如果是一对一
在报表中用lable
直接分字段赋值。
如果是一对多。就要麻烦一点。
var i,j:integer;
begin //读取字段到CHECKLISTBOX里面
with adoquery1 do begin
For j:=0 to Fields.Count -1 do Begin
box1.Items.Add(Fields[j].FullName );
end;
end;
end;procedure TForm1.Button3Click(Sender: TObject);
begin
qrlistform.Qrdbtext1.DataSet:=Form1.ADOQuery1;
qrlistform.Qrdbtext1.DataField:=form1.Box1.Items.Strings[0];
qrlistform.Qrdbtext2.DataSet:=Form1.ADOQuery1;
qrlistform.Qrdbtext2.DataField:=form1.Box1.Items.Strings[1];
qrlistform.Qrdbtext3.DataSet:=Form1.ADOQuery1;
qrlistform.Qrdbtext3.DataField:=form1.Box1.items.Strings[2];
QRListForm.QuickRep1.Preview;end;