在报表中预览正常,为何不能打印? (100分)

  • 主题发起人 主题发起人 kenbe
  • 开始时间 开始时间
K

kenbe

Unregistered / Unconfirmed
GUEST, unregistred user!
我是一个新手,用ADO连接一个ACCESS2000数据库, 用一个报表打印数据库内容时,
打印预览是正常的,但是打印的时候打印机只响了一下就不打印了,这样WINDOWS的打印
任务也没有了,但要说明的是我的打印机是好的打别的没问题,各位高手请指教一下哦~~
 
有代码吗?有的话贴出来啊
 
打印预览正常, 说明程序没有问题
应该是打印驱动程序装错了, 或者打印驱动程序与对应的打印机不一致,
或者是打印机本身有问题
 
有代码的:
一共有两个窗体,其中一个为报表:
form1的代码:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, ADODB, Grids, DBGrids, StdCtrls;
type
TForm1 = class(TForm)
DBGrid1: TDBGrid;
DataSource1: TDataSource;
ADODataSet1: TADODataSet;
ADOConnection1: TADOConnection;
GroupBox1: TGroupBox;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Button1: TButton;
Button3: TButton;
Button4: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
implementation
uses Unit2;
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
if edit1.text= '' then
showmessage('姓名栏未填写')
else
if edit2.text='' then
showmessage('部门栏未填写')
else
if edit3.text='' then
showmessage('职务栏未填写')
else
if edit4.text='' then
showmessage('编号栏未填写')
else
begin
with ADODataSet1do
begin
Append;
FieldByName('xinming').AsString:=Edit1.Text;
FieldByName('bumen').AsString:=Edit2.Text;
FieldByName('zhiwu').AsString:=Edit3.Text;
FieldByName('bianhao').AsString:=Edit4.Text;
// FieldByName('dayin').Asboolean:=flase;
Post;
ShowMessage('数据已经保存!!');
end;
edit1.text :='';
edit2.text :='';
edit3.text :='';
edit4.text :='';
end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
QuickReport2.preview;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if ADODataSet1.recordcount=0 then
showmessage('没有数据可以打印,请检查你的输入')
else
QuickReport2.print;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin

end;

end.
Qreport代码:
unit Unit2;
interface
uses Windows, SysUtils, Messages, Classes, Graphics, Controls,
StdCtrls, ExtCtrls, Forms, Quickrpt, QRCtrls, Db;
type
TQuickReport2 = class(TQuickRep)
DetailBand1: TQRBand;
QRDBText1: TQRDBText;
QRDBText3: TQRDBText;
QRDBText4: TQRDBText;
QRDBText5: TQRDBText;
procedure QuickRepAfterPrint(Sender: TObject);
private
public
end;

var
QuickReport2: TQuickReport2;
implementation
uses Unit1;
{$R *.DFM}
procedure TQuickReport2.QuickRepAfterPrint(Sender: TObject);
begin
// with Form1.ADODataSet1do
// begin
// last;
// while not Form1.ADODataSet1.bofdo
// begin
// delete;
// end;
// end;
end;

end.
谢谢!
 
你是用的QR做的报表吧? 我碰到过这个问题的,你手工把打印机设置修改成你程序中的
设置试试。
 
能预览则说明程序本身没有问题,问题应该出在打印驱动或打印机本身。请检查:
1、打印机本身有没有故障;
2、打印机的驱动程序是否同打印机自身型号一致;
3、打印机的设置同预览中的设置是否相同。
 
你在预览的时候打印正常吗?
BTW:别用QR了,bug太多,用FastReport或ereport吧。
 
先用Word打印一下,试试打印机是否正常
还有你的打印机是否支持你报表中定义的纸张大小。
 
谢谢各位,我把该报表的大小设为A4就可以打印了,但是我这个小工具是要用来打小卡片的,
把报表的大小设为我所要的,就不能打印了,各位大虾,我是一个新手,怎样才能解决?~~
 
多人接受答案了。
 
后退
顶部