主表数据为: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,是因为,报表可以随时更改,不用再需要去源码。
用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,是因为,报表可以随时更改,不用再需要去源码。
用QuickReport,我懂得去做,但是QuickReport报表不能修改,要修改要动用掉源码。
改为Report Machine,是因为,报表可以随时更改,不用再需要去源码。
#2
没有人吗,,如果分数不够,我再加。。。请有知道了帮帮忙
#3
唉,失望中。。。。。
#4
ADOquery1的SQL属性:select * from kfzl where id='XPCS0910050001'
#5
把主项数据的 RangeBegin设置成rmrbCurrent就可以了
#6
这个没用过,用过fastreport