如何实现这样的打印,假如一个表有10 个字段,我想有选择的打印,也就是想打印几列就打印几列,如何实现(20分)

  • 主题发起人 主题发起人 hgl780428
  • 开始时间 开始时间
H

hgl780428

Unregistered / Unconfirmed
GUEST, unregistred user!
还有就是我这样写的SQL语句怎么老是出错,
if form1.CheckListBox1.Checked[0] then
begin
sql1:='bzdh';
end;
if form1.CheckListBox1.Checked[1] then
begin
sql1:=sql1+','+'bh';
end;
with form1.ADOQuery1do
close;
sql.clear;
sql.text:='select '+sql1+' from jgk';
open;
end;
 
公司同事做过一个这样的单元,可以通过画布来画,自己计算画的位置,可以从域的displaywidth来读出每个域要画的宽度。
上面的错误我觉得可能有两个原因,一个是表中没有你指定的域,另一个原因就是你建立了域对象,而查询出的结果集中没有你已经指定的域。
 
我写过类似程序,而且功能比这个多,你要的话,给分就给代码[:D]
 
sql.text:='select '+sql1+' from jgk';
语句是不是应该写成
sql.add(' select '+ sql1 + ' from jgk ');
 
你看看你SQL.text在最后是不是多了一个逗号。
 
To rockjie
我当然会给你分的,给我吧,我的邮件hgl54321@etang.com
 
其实很简单啊,用语句写好预览表单上的控件属性就可以了。
 
to 风冠坡
关键是列数不固定呀
 
问题的关键是你动态生成表头,如果你使用QuickReport
你可以定义qrLabel, qrdbtext两个动态数组,问题就解决了
 
to wjfw
我定义了,可还是解决不了,可否给我点代码,我把我选中的列在DBGRID中显示出来,可我预览的时候只有一条记录,并且,列的标题显示不出来呢
 
我有一个打印DBGRID和DATASET的控件,如果你想动态的打印,只要你控制DBGRID的显示
就行了。或者控制DATASET的列数就行。
 
to wumeng
你好,DBGRID列的显示我已经做好了,你把你的空间给我如何,在这里多谢谢了
我的邮箱:hgl54321@etang.com .如果你要分的话,我可以给你
 
分数就不要了,关键是要解决问题,请查收。。。
 
动态创建 qrLabel, qrdbtext 控件 ,并指定他们的位置很数据源即可,我就是这么做的。
不过fastreport 有打印table 的功能,用他实现非常简单.
 
谢谢 楼上的各位,
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部