PDA

Ver la Versión Completa : FastReport y duda en tiempo de ejecución


lago
18-03-2019, 16:17:13
Hola, a ver si alguien me puede iluminar, estoy nuevo en esto de reportes...

Utilizo FastReport en un XE7, genero un informe (ticket de caja) en base a los datos del cliente, hasta ahí bien y a golpe de ratón... el problema viene cuando quiero mostrar el resultado de una tabla que se genera desde el programa...

Me explico:

Tengo un formulario con el código de cliente, según introduzco dicho código añado la sentencia SQL a un FDQuery y hago FDQuery->Open, este a su vez esta asociado a un DataSet que apunta al DBGrid donde se muestra el resultado.

El problema es que yo modifico la sentencia SQL y hago el Open desde código, con lo cual en el reporte no aparecen los campos de la tabla.

Alguien sabría decirme como poder hacerlo? En el peor de los casos podría añadir variables al formulario y leer el DBgrid celda a celda pero seguro que hay alguna manera..

Muchas gracias de antemano y un saludo!

Jorge.

juniorSoft
18-03-2019, 16:46:26
Tengo unas preguntas

1-Cuales bandas tienes insertadas en tu reporte?

2-El sql siempre tiene los mismos campos o son variables?

3-Utilizas el componente TfrxDBDataset para representar el dataset de delphi en el reporte?


Saludos,

movorack
18-03-2019, 17:26:26
Te vendría bien darle una leída al manual (https://www.fast-report.com/public_download/UserManual-en.pdf)

lago
18-03-2019, 20:18:00
Hola, gracias por responder... Tienes razón movorak debería documentarme un poco... Leeré el manual más a fondo...

Juniorsoft, cuando hago el reporte con el tdbdataset asociado a un fdquery lo hace bien si el SQL de dicho fdquery es estático. Select * from clientes

Pero necesito hacer select * from clientes where código = variable

Como ese SQL lo modifico desde código el editor de reportes no puede mostrarme el resultado de dicha consulta que yo muestro por pantalla en un dbgrid.

Gracias por responder!

juniorSoft
18-03-2019, 20:52:14
El problema es que yo modifico la sentencia SQL y hago el Open desde código, con lo cual en el reporte no aparecen los campos de la tabla.

como la consulta no va a cambiar la cantidad de campos puedes hacer lo siguiente:

abres el editor de consultas del FDQuery y realizas la consulta

Select * from clientes
where codigoCliente = -1


Luego abres el editor de campos del mismo FDQuery y agregas todos los campos dando clic derecho y seleccionando "Add All Fields".

Haces Doble click en el TfrxDBDataset asociado al FDQuery y le das al boton Update que aparece en la parte inferior.

Ahora realizas el select dinámico y como los campos son persistentes deberian aparacer, claro dando por hecho que el FDQuery esta asociado al TfrxDBDataset y que el reporte tiene sus campos enlazados y que la banda de ser un masterData o un DetailData tiene conectado en su propiedad dataset el que le corresponde.

lago
20-03-2019, 09:53:12
Hola! muchas gracias JuniorSoft, funcionó... no añadía los campos fijos... Igualmente tengo que leer bien el manual en cuanto tenga un poco de tiempo que estoy verde verdísimo...

Muchas gracias!

Un saludo

Jorge.

Casimiro Notevi
20-03-2019, 14:00:24
Hola! muchas gracias JuniorSoft, funcionó... no añadía los campos fijos... Igualmente tengo que leer bien el manual en cuanto tenga un poco de tiempo que estoy verde verdísimo... El manual se lee antes, no después.