Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Cómo asignar un query a las bandas? (https://www.clubdelphi.com/foros/showthread.php?t=30117)

david duarte 09-02-2006 00:29:25

Cómo asignar un query a las bandas?
 
Hola!!!1

como le puedo hacer para mostrar los datos que me regresa un query en el qreport?

en la forma tengo un query, un datasource y un dbgrid, el dbgrid esta asociado al query, pero ahora quiero hacer un reporte con los datos que tiene el dbgrid, pero he leido que se puede mostrar directamente al reporte los datos que traiga el query.

Alguien sabe como hacerlo???

la verdad es que no le encuentro, creo que tengo que asignar o poner unas TQRDBText, o algo asi, pero no puedo!!!

Gracias

Cómo te sientes hoy??

roman 09-02-2006 00:45:58

Básicamente haz esto:

1. Añade una banda detalle al QuickReport (propiedad Bands->HasDetail)
2. Asigna el Query a la propiedad DataSet del QuickReport.
3. En la banda detalle añade un QRDBText por cada campo que quieras mostrar en el reporte.
4. A cada QRDBText asigna el query a lapropiedad DataSet y el campo que corresponda a la propiedad DataField.
5. Activa el query

// Saludos

david duarte 24-04-2006 18:21:05

Perdon por responder hasta ahora, lo que pasa es que estaba entretenido con este proyeco que me ha sacado canas verdes(pero la verdad he aprendido muchisimo), pero si me sirvió el ejemplo que me mandaste.
Salió todo a la perfeccion

Muchas Gracias!!!!
Saludos!!!!

david duarte 27-04-2006 18:58:46

Hola roman, tengo un problema.

Como le puedo asignar el valor de un campo para que me lo tome como si fuera el nombre del campo.

Esto es porque tengo una tabla, con el nombre de campo (Nombre_analisis) y de ahi, tengo que poner en un reporte (QRBDText) con el nombre de cada analisis que tenga la llave primaria, pero no le encuentro como hacerlo, hice algunas pruebas, pero no me sale nada, te pongo el codigo para ver si tienes tiempo de analizarlo y ver en donde estoy mal. la verdad es que ya lo cheque muchas veces y le he cambiado codigo y no me sale ningun resultado.

Código Delphi [-]
  modulotablas.ana_ex.edit;
  b := modulotablas.ana_ex.Locate('Folio',edit1.text,[lopartialkey]);
  if b then
  Begin
    while (modulotablas.ana_ex.FieldByName('Folio').value = edit1.text) and (modulotablas.ana_ex.FieldByName('Numero').value = '01') do
    Begin
      texto := TQRDBText.Create(DetailBand1);
      texto.Top := arriba;
      texto.Left := izq;
      texto.DataSet := Query1;
      texto.Mask := ',.00';
      texto.DataField := modulotablas.ana_ex.FieldByName('Nombre_analisis').value;
      campos := campos + modulotablas.ana_ex.FieldByName('Nombre_analisis').value;
      campos := campos +',';
      texto.Parent  := DetailBand1;
      etiqueta := TQRLabel.Create(PageHeaderBand1);
      etiqueta.Caption := modulotablas.ana_ex.FieldByName('Nombre_analisis').value;
      etiqueta.Top := arriba + 260;
      etiqueta.Left := izq;
      etiqueta.Visible := True;
      etiqueta.Parent := PageHeaderBand1;
      izq := izq+ 6 +FontWidth(etiqueta.Font,texto.Caption);
      modulotablas.ana_ex.Next;
    end; //while (modulotablas.ana_ex.FieldByName('Folio').value = edit1.text) and (modulotablas.ana_ex.FieldByName('Numero').value = '01') do
     showmessage ('Analisis extras, Folio '+ qrmfolio.Caption);
   end; //if b then ana_ex
   query1.Close;
    camp_long := length(campos);
   if campos[camp_long] = ',' then
     for cont :=1 to camp_long-1 do
       camp_aux := camp_aux + campos[cont];
   foliob := edit1.text;
   query1.SQL.Clear;
   query1.SQL.Add('SELECT Nombre_analisis FROM analisis_extra');
   Query1.SQL.Add('WHERE Nombre_analisis = :campos'); <-- siento que aqui esta el error
   Query1.ParamByName('campos').AsString := 'prueba1';
   query1.SQL.Add(';');
   query1.Active := True;
 end;

y ademas no se como ponerle o como asignarle el nombre del campo al dataset, no comprendo bien eso.
Te agradeceria mucho si me das algunos consejos, creo que tambien estoy mal en el ciclo

Muchas Gracias!!
Saludos!!!!

crack_neon 25-05-2006 23:21:17

Problema al doble..
 
Hola que tal,

Tengo un problema un poco similar, y preferi ponerlo en este hilo pues no encontre uno similar(si estoy mal me hechan un regaño).

Ya logre imprimir mis datos asociados a un adoquery, en un detailband, pero necesito en el mismo reporte crear mas de una consulta y mostrarlas por separado obviamente, eh intentado crear nuevos Detailband, y crear sus respectivos QRDBText, pero no se muestra la impresion en el reporte, solamente los datos del primer DetailBand. Espero q me puedan orientar.

Gracias de antemano.

roman 25-05-2006 23:42:12

Para eso creo que debes hacer un reporte por separado para cada consulta y unirlos con una componente TQrCompositeReport.

// Saludos

pijo 26-05-2006 11:32:22

Cita:

Empezado por crack_neon
Hola que tal,

Tengo un problema un poco similar, y preferi ponerlo en este hilo pues no encontre uno similar(si estoy mal me hechan un regaño).

Ya logre imprimir mis datos asociados a un adoquery, en un detailband, pero necesito en el mismo reporte crear mas de una consulta y mostrarlas por separado obviamente, eh intentado crear nuevos Detailband, y crear sus respectivos QRDBText, pero no se muestra la impresion en el reporte, solamente los datos del primer DetailBand. Espero q me puedan orientar.

Gracias de antemano.

Tambien lo podrias hacer haciendo un subdetail por cada una de las querys que quieres hacer. En el TQuickRep no tendrias que poner ningun dataset pero si tendrías que poner el PrintIfEmpty a true. Eso te imprimiria todos los subdetail uno seguido del otro en el mismo orden que los colocaras tu en el Report.

ánimos

crack_neon 27-05-2006 03:22:13

Gracias!!!
 
Muchas gracias por las ideas, al final termine usando un QRGroup y separando los datos de una consulta que yo creia que serian necesarias mas de una (eso del QRGroup lo encontre en los ejemplos de delphi). De cualquier forma, sus comentarios me son de mucha utilidad, casi estoy seguro que tendre mas adelante que tomarles la palabra.

un saludo a todos y gracias de nuevo.


La franja horaria es GMT +2. Ahora son las 16:25:37.

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