PDA

Ver la Versión Completa : Impresion con QuickReport 4


neftafly
11-07-2005, 12:49:17
Necesito ayuda urgente:

Mi problema parece una tonteria pero no se como solucionarlo.
Necesito que mi informe se imprima 2 copias y que imprima 1 primero y despues la segunda. Intento cambiar desde el imforme las propiedades de la impresora pero aunque las cambie los cambios no se aceptan.

Alguien sabria como conseguir que QuickReport imprima primero una copia y despues otra y no las dos a la vez.

Muchas Gracias

marcoszorrilla
11-07-2005, 14:46:14
Muestra el código que utilizas, pues es muy probable que no estés enviando las órdenes al objeto qrPrinter sino al Tprinter.

Un Saludo.

neftafly
12-07-2005, 11:44:07
No entiendo bien lo que me quieres decir. Yo creo el informe lo previsualizo e intento cambiar a 2 copias intercaladas en las propiedades de la impresora a traves del boton del reporte creado y despues le doy al boton de imprimir que existe en el reporte.


De todas formas mi codigo

procedure TRECIVFORM.QRDBText1Print(sender: TObject; var Value: String);
begin
DataModule2.Table5.IndexName:= 'DNI';
if not DataModule2.Table5.Findkey([Query1.FieldByName('NIF_PROP1').Value]) then ShowMessage('No encuentro el Nif del propietario');
IF Query1.FieldByName('TIPO').Value = 'V' then
begin
QuickRep1.PrinterSettings.Copies:=1;
QRLabel1.Caption:= ' ';
QRLabel7.Caption:= 'arrendatario de la expresada vivienda';
QRLabel3.Caption:= 'Vivienda:';
QRLabel8.Caption:= 'la cantidad de:';
QRLabel28.Caption:= ' ';
QRLabel6.Caption:= QRLabel25.Caption;
end;
if Query1.FieldByName('TIPO').value = 'T' then
begin
QuickRep1.PrinterSettings.Copies:=1;
QRLabel1.Caption:= ' ';
QRLabel7.Caption:= 'arrendatario del expresado trastero';
QRLabel3.Caption:= 'Trastero:';
QRLabel8.Caption:= 'la cantidad de:';
QRLabel28.Caption:= ' ';
QRLabel6.Caption:= QRLabel25.Caption;
end;
if Query1.FieldByName('TIPO').Value = 'L' then
begin
QuickRep1.PrinterSettings.Copies:=2;
QRLabel1.Caption:= 'Recibo Núm: ';
QRLabel7.Caption:= 'arrendatario del expresado local';
QRLabel3.Caption:= 'Local:';
QRLabel8.Caption:= 'la cantidad de:';
QRLabel6.Caption:= QRLabel25.Caption;
QRLabel28.Caption:= Form24.DBEdit1.Text;
Form24.DBEdit1.Text:=IntToStr((StrToInt(Form24.DBEdit1.Text)+1));
//DataModule2.Table3.edit;
//DataModule2.Table3.FieldByName('ULTRECIV').AsInteger:= StrToInt(Form24.DBEdit1.Text);
//DataModule2.Table3.post;
//DataModule2.Table3.Refresh;
pai:= pai+1;
end;
MUCHAS GRACIAS POR TU RESPUESTA Y ESPERO QUE NOS ENTENDAMOS

marcoszorrilla
12-07-2005, 15:11:17
Sino recuerdo mal, la configuración que le des desde la vista previa no sirve para nada, tienes que utilizar un Dialogo de Impresión y pasarle luego los valores que correspondan al objeto qrprinter, mira este ejemplo:

procedure TfrLstFact.lstFacturasBeforePrint(Sender: TCustomQuickRep;
var PrintReport: Boolean);
begin
prnDialog.Execute;
lstFacturas.PrinterSettings.Printerindex:=Printer.PrinterIndex;



Un Saludo.

yusnerqui
12-07-2005, 15:15:08
ESPERO QUE NOS ENTENDAMOS

De seguro si usas las etiquetas delphi se entenderán mejor, y por ende obtendrás más ayuda, me he tomado la libertad de transcribir tu código:


procedure TRECIVFORM.QRDBText1Print(sender: TObject; var Value: String);
begin
DataModule2.Table5.IndexName:= 'DNI';
if not DataModule2.Table5.Findkey([Query1.FieldByName ('NIF_PROP1').Value]) then
ShowMessage('No encuentro el Nif del propietario');
IF Query1.FieldByName('TIPO').Value = 'V' then
begin
QuickRep1.PrinterSettings.Copies:=1;
QRLabel1.Caption:= ' ';
QRLabel7.Caption:= 'arrendatario de la expresada vivienda';
QRLabel3.Caption:= 'Vivienda:';
QRLabel8.Caption:= 'la cantidad de:';
QRLabel28.Caption:= ' ';
QRLabel6.Caption:= QRLabel25.Caption;
end;
if Query1.FieldByName('TIPO').value = 'T' then
begin
QuickRep1.PrinterSettings.Copies:=1;
QRLabel1.Caption:= ' ';
QRLabel7.Caption:= 'arrendatario del expresado trastero';
QRLabel3.Caption:= 'Trastero:';
QRLabel8.Caption:= 'la cantidad de:';
QRLabel28.Caption:= ' ';
QRLabel6.Caption:= QRLabel25.Caption;
end;
if Query1.FieldByName('TIPO').Value = 'L' then
begin
QuickRep1.PrinterSettings.Copies:=2;
QRLabel1.Caption:= 'Recibo Núm: ';
QRLabel7.Caption:= 'arrendatario del expresado local';
QRLabel3.Caption:= 'Local:';
QRLabel8.Caption:= 'la cantidad de:';
QRLabel6.Caption:= QRLabel25.Caption;
QRLabel28.Caption:= Form24.DBEdit1.Text;
Form24.DBEdit1.Text:=IntToStr((StrToInt(Form24.DBEdit1.Text)+1));
//DataModule2.Table3.edit;
//DataModule2.Table3.FieldByName('ULTRECIV').AsInteger:= StrToInt(Form24.DBEdit1.Text);
//DataModule2.Table3.post;
//DataModule2.Table3.Refresh;
pai:= pai+1;
end;
end;


se lee mejor así verdad?

Saludos

neftafly
14-07-2005, 13:24:39
Muchas gracias por vuestras respuestas, y lo siento mucho por lo del codigo mal escrito pero no se como ponerlo de colorines directamente. (hay que hacerlo a mano?)
Pues eso lo de PrnDialog no se como hacer que funcione por que el compilador me dice que no funciona.

Gracias de todas formas y que este foro siga asi de cojonudo

yusnerqui
14-07-2005, 14:31:53
no se como ponerlo de colorines directamente. (hay que hacerlo a mano?)

Pues no, solo usar las Etiquetas vB (http://www.clubdelphi.com/foros/misc.php?do=bbcode)

Saludos.

marcoszorrilla
14-07-2005, 14:51:35
PrnDialog
En realidad es un nombre que yo le he dado pero simplemente se trata del diálogo de impresión que viene en Delphi en la paleta Dialogs, en concreto es un TPrintDialog.

Un Saludo.

neftafly
14-07-2005, 16:33:38
Muchas gracias por la informacion

Ya he usado el PrintDialog que es como se llama en mi delphi pero sigue sin hacerle caso configuro la impresion pero despues hace lo que quiere al imprimir.

No se lo que voy a hacer ya. Creo que voy a tener que obtar por imprimir 2 veces en vez de darle que imprima dos copias.

Muchas gracias por todo;

marcoszorrilla
14-07-2005, 17:57:45
Pues si ves que no responde, puedes hacer un bucle For...Next y ejecutar el informe x veces, en tu caso 2.

Un Saludo.