Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   qrmemo problemas con QuickReport (https://www.clubdelphi.com/foros/showthread.php?t=75811)

alej.villa 20-09-2011 18:45:15

qrmemo problemas con QuickReport
 
1 Archivos Adjunto(s)
Buenos dias estoy utilizando Delphi 7, manejador de base de datos MS SQL Server 2005,
y quickreport v3.0 la que viene por defecto con delphi 7
Mi problema es el siguiente hago una consulta sql en una tabla llamada
temporal para que me seleccione todos los datos y me los ordene a
conveniencia del usuario, para esto tengo 2 radiobuttons uno para ordenarlo
por numero de cedula y el otro para ordenarlo por lineas, y un boton que lo
llame vista previa que es donde coloco esta consulta SQL segun la
conveniencia del usuario si seleccionan para ordenarlo por cedula es este
codigo
Código SQL [-]
if Apellidos.Checked then       
begin         
dm.qLista.Close;         
dm.qLista.SQL.Clear;         
dm.qLista.SQL.Add('Select * FROM Temporal');         
dm.qLista.SQL.Add('Order by nombres ASC');         
dm.qLista.Open;           
while not dm.qLista.Eof do             
begin                 
qrLista.QRMemo1.Lines.Add(dm.qLista.fieldbyname('cedula').AsString);              
qrLista.QRMemo2.Lines.Add(dm.qLista.fieldbyname('nombres').AsString);              
qrLista.QRMemo3.Lines.Add(dm.qLista.fieldbyname('codigo_linea').AsString);              
qrLista.QRMemo4.Lines.Add(dm.qLista.fieldbyname('posicion').AsString);              
qrLista.QRMemo5.Lines.add(dm.qLista.fieldbyname('grupo').AsString);
 dm.qLista.Next;             
end;       
end;
si seleccionan para ordenarlo por linea es este
Código SQL [-]
if Linea.Checked then       
begin         
dm.qLista.Close;         
dm.qLista.SQL.Clear;         
dm.qLista.SQL.Add('Select * FROM Temporal');         
dm.qLista.SQL.Add('Order by codigo_linea ASC');         
dm.qLista.Open;           
while not dm.qLista.Eof do             
begin               
qrLista.QRMemo1.Lines.Add(dm.qLista.fieldbyname('cedula').AsString);                
qrLista.QRMemo2.Lines.Add(dm.qLista.fieldbyname('nombres').AsString);                
qrLista.QRMemo3.Lines.Add(dm.qLista.fieldbyname('codigo_linea').AsString);                
qrLista.QRMemo4.Lines.Add(dm.qLista.fieldbyname('posicion').AsString);              
qrLista.QRMemo5.Lines.Add(dm.qLista.fieldbyname('grupo').AsString);
 dm.qLista.Next;             
end;       
end;
el problema aparece cuando es mas de 1 hoja que debe imprimir, porque me imprime en la primera hoja todas las cedulas y en la 2da hoja todos los demas datos que serian: nombres, sexo, etc. adjunto un ejemplo para que vean como sale el reporte, gracias de antemano y ojala puedan ayudarme ya que tengo tiempo hechando cabeza con este error pero no logro llegar a la solucion

alej.villa 20-09-2011 18:47:16

otra cosa el problema aumenta a medida que aumentan las paginas en el reporte

alej.villa 21-09-2011 03:38:33

necesito ayuda por favor!!!!

olbeup 21-09-2011 07:49:45

¿En que parte del programa agregas los datos?, ¿Por que lo haces manual?, pudiendo que el QuickReport lo realice el mismo, ¿Por que utilizas QRMemo, en vez de QRDBText?

Un saludo.

marcoszorrilla 21-09-2011 11:00:09

Como ya te indican tienes que utilizar un QrDbText.

Un Saludo.

alej.villa 21-09-2011 14:22:44

el problema que tengo es que los datos los filtro en un query para que me los ordene como quiero, si probe haciendolo con un QRDBtext pero no me los ordena como quiero sino que me los pasa como estan ordenados por defecto en la base de datos, si saben como hacer para que los datos se agreguen al QReport de manera ordenada con el query como puse el ejemplo anteriormente se los agradeceria.
Un saludo

alej.villa 21-09-2011 14:49:32

alguna idea al respecto?

alej.villa 21-09-2011 15:33:12

Ya cambie los QRMemo por QRDBText, en la propiedad del dataset del QuickReport lo tengo ligado al query de la consulta, las Bandas que uso en el quickreport para mostrar el reporte son: Page Header, Title, Column Header y un sub detail que en su propiedad de dataset tambien lo tengo asociado al query de la consulta, en el subdetail tengo agregados los QRDBText que necesito para que me muestre los datos, en la propiedad de Autozise, AutoStrech y Wordwrap del QRDBText estan en true, pero aun asi no me muestra ningun dato, lo mas interesante es que me muestra varias paginas pero vacias :s
No se porque sucede esto estoy investigando a ver si consigo la solucion a mi problema, pero les agradeceria si pudieran orientarme un poco hacia la solucion.
Gracias de antemano.

alej.villa 21-09-2011 18:58:12

necesito un poco de ayuda..
 
estube buscando en google y aqui en el foro pero no tengo idea como solucionarlo :confused:

alej.villa 21-09-2011 20:03:38

Help!
 
y a mi nadie me ayuda.!!

ecfisa 21-09-2011 22:45:08

Hola Alej.Villa.

Al igual que te han sugerido yo descartaría los QRMemos.

Creo que en tu caso lo que te conviene es usar un TQRBand con su propiedad BandType = rbTitle y un TQRSubDetail asociado al query mediante su propiedad DataSet.

En el TQRBand ponés la cabecera del listado y en el TQRSubDetail los campos que deseas encolumnar.

Te adjunto una imágen por si te resulta más entendible:



De ese modo sólo debés abrir dm.qLista para generar el reporte, es decir que tu código podría quedar más o menos así:
Código Delphi [-]
  if Apellidos.Checked then       
  begin         
    dm.qLista.Close;         
    dm.qLista.SQL.Clear;         
    dm.qLista.SQL.Add('Select * FROM Temporal');         
    dm.qLista.SQL.Add('Order by nombres ASC');         
    dm.qLista.Open; 
 end;
Y
Código Delphi [-]
  if Linea.Checked then       
  begin         
    dm.qLista.Close;         
    dm.qLista.SQL.Clear;         
    dm.qLista.SQL.Add('Select * FROM Temporal');         
    dm.qLista.SQL.Add('Order by codigo_linea ASC');          
    dm.qLista.Open;  
  end;

Saludos.

alej.villa 21-09-2011 22:56:58

1 Archivos Adjunto(s)
hola ecfisa la verdad es que deberia "funcionar" de la manera que me dijiste pero lo real es que me da un error y de los feos porque no me dice la causa del problema
Adjunte una imagen del problema a ver si me ayudan con eso :confused:

alej.villa 21-09-2011 23:01:10

Por eso estaba utilizando los QRMemo aunque no me daban un error como tal, si los daba cuando la pagina a mostrar era mas de 1 como mensione al principio del hilo en el archivo adjuntado, lo otro que me paso fue que utilize los QRDBText los enlace a mi query, el QR tambien lo enlace y no me daba ningun error pero no me mostraba ningun dato y la verdad es que estoy quedando casi calvo con este error que llevo tiempo resolviendolo

ecfisa 21-09-2011 23:13:47

Hola alej.villa.

Aunque generalmente los Access violation se producen por utilizar un recurso no creado o liberar uno inexistente, visto el error, es casi imposible saber el por qué.

¿ Has tratado de circunscribirlo con el uso de Breaks y Trace Into (F7) ?


Un saludo.

alej.villa 21-09-2011 23:17:17

no voy a tratar a ver en un ratico vuelvo para comentar lo sucedido

alej.villa 21-09-2011 23:28:35

ok no quisiera desviarme del tema pero la verdad es que encontre varios .pas que no los encuentra, y son de un componente que me baje para exportar a excel (que por cierto nunca lo use) el componente se llama firesoft o la compañia nose :s
Ok el detalle esta en como los elimino para que no me siga generando errores si no los estoy usando en mi aplicacion? :s

ecfisa 21-09-2011 23:37:00

Hola.

Component -> Install Packages -> Design Packages -> Remove

Saludos.

alej.villa 22-09-2011 00:14:06

ya resolvi lo del componente, y el reporte sale en blanco no muestra nada :s no tengo ni idea que pasa

ecfisa 22-09-2011 01:23:01

Hola.

Hacé una prueba:

Poné un TQuickRep, un TQRSubDetail, agrega un TIBQuery, TADOQueyr, TQuery o el componente que uses, dos o tres TQRDBText asignales el query al DataSet y el DataField que deses de la tabla.

Desde el Object Inspector asigna la propiedad Database y en la propiedad SQL del query que uses pone: Select * FROM Temporal Order by nombres ASC.

Poné la propiedad Active del query = True y presioná el botón derecho del mouse sobre el QuickRep, elegí Preview.

Tendrías que visualizar los datos sin problemas

Saludos.

alej.villa 22-09-2011 14:04:01

hola ecfisa hice todo paso por paso como me lo indicaste, pero la verdad es que muestra un solo registro :s coloque autostrech = true, autozise = true y worwrap = true y nada enlace todo al query, es decir, el QReport y el QRSubDetails pero nada, solo me aparece el primer registro no muestra mas nada :s


La franja horaria es GMT +2. Ahora son las 14:59:56.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi