Delphi7 +Report Machine6.5 主从表关系,求高手解答。。。在线等。。。。。

时间:2022-02-21 17:36:24
数据库为ACCESS
主表数据为:kfzl(id,xm,xb,fk,sfz,dz)      ==>>表示客户资料(编号,姓名,性别,户口,身份证,电址)
从表数据为:cszl(id,bskh,cpbh.cpmc,cpch)  ==>>表示销售资料(编号,标识卡号,产品编号,产品名称,产品型号)

id属性为共用

使用的控件,两个ADOquery,一个RMReport,两个RMDBDataSet,一个DataSource

ADOquery1连接主表数据  
ADOquery2连接从表数据

比如我的数据是 这样

kfzl数据
编号 id           fk xm xb sfz dz sj df
1 XPCS0910050001 123456 av 要 3 在 12 15
2 XPCS0910050002 a a a 1 工 1

cszl数据
编号 id         csrq spbh bskh cpbh spmc spch       sppb jg
8 XPCS0910050001 2009-9-24 1010013 HRDG136 1346A 电视机 21TA1-
9 XPCS0910050001 2009-9-24 1010001 A A 电视机 21TA1-7 123 "
10 XPCS0910050001 2009-9-24 1010001 B A 电视机 21TA1-71 123 "
11 XPCS0910050002 2009-9-24 1010001 1 1 电视机 21TA1-72 123 "
12 XPCS0910050003 2009-9-24 1010001 3 1 电视机 21TA1-73 123 "

ADOquery1的SQL属性:select * from kfzl 
ADOquery2的SQL属性:select * from cszl where id=:id



现在出现了问题是:
我只想打印其中了表单第一个数据(XPCS0910050001),,我打印预览了时候,,连(XPCS0910050002)也一起出来 ,
代码:
procedure Tllct.N5Click(Sender: TObject);
begin
if ADOQuery1.IsEmpty then
    Exit;
  try
  RMReport1 := TRMReport.Create(Self);
  RMReport1.LoadFromFile('jdxxsqbb.rmf');
  RMReport1.PrepareReport;
  RMReport1.ShowReport;
finally
   RMReport1.Free;
  end;

end;

我如果把ID指向单号,打印预览了时候,主表跟从表,都全部没有显示,代码如下:
procedure Tllct.N5Click(Sender: TObject);
begin
if ADOQuery3.IsEmpty then
    Exit;
  try
  RMReport1 := TRMReport.Create(Self);
 ADOQuery1.Close;
 ADOQuery1.SQL.Clear;
 ADOQuery1.SQL.Add('select * from kfzl where id=a order by id');
 ADOQuery1.Parameters.ParamByName('a').Value:=label25.Caption;//===》》(label25.caprion 是单号ID)

 ADOQuery1.Open;
 ADOQuery2.Open;

  RMReport1.LoadFromFile('jdxxsqbb.rmf');
  RMReport1.PrepareReport;
  RMReport1.ShowReport;
finally
   RMReport1.Free;
  end;

end;



后来,我再查了一下资料,说有了要在ADOquery1那里要有
代码如下:
procedure Tllct.ADOQuery1AfterScroll(DataSet: TDataSet);
begin
    ADOQuery2.Close;
    ADOQuery2.SQL.Clear;
    ADOQuery2.SQL.Add('select * from kfzl where id=:id ');
    adoquery2.Parameters.ParamByName('id').Value   :=   adoquery1.fieldbyname('id').value;
    adoquery2.Open;
end;


也不行,主从表都全部不显示


现在想请大侠们,指点一下,我上面是错在哪边,我现在只想通过label25.caprion(id单号),从数据库里面打印这一条主从表数据,不是整个数据库的数据

至于分数,我也不知道怎么分,知道了。。请帮帮我。好吗,要源码请联系我:linzhen6790@163.com

6 个解决方案

#1


有没有大哥,知道了,帮忙一下,这个问题已经搞晕了我一个星期了。。。

用QuickReport,我懂得去做,但是QuickReport报表不能修改,要修改要动用掉源码。

改为Report Machine,是因为,报表可以随时更改,不用再需要去源码。

#2


没有人吗,,如果分数不够,我再加。。。请有知道了帮帮忙

#3


唉,失望中。。。。。

#4


ADOquery1的SQL属性:select * from kfzl where id='XPCS0910050001'

#5


把主项数据的 RangeBegin设置成rmrbCurrent就可以了

#6


这个没用过,用过fastreport

#1


有没有大哥,知道了,帮忙一下,这个问题已经搞晕了我一个星期了。。。

用QuickReport,我懂得去做,但是QuickReport报表不能修改,要修改要动用掉源码。

改为Report Machine,是因为,报表可以随时更改,不用再需要去源码。

#2


没有人吗,,如果分数不够,我再加。。。请有知道了帮帮忙

#3


唉,失望中。。。。。

#4


ADOquery1的SQL属性:select * from kfzl where id='XPCS0910050001'

#5


把主项数据的 RangeBegin设置成rmrbCurrent就可以了

#6


这个没用过,用过fastreport