Buenas foro.
Os informo que en un par de días dejaré la clase que he realizado, que nos va a permitir realizar reports de fastreport a través de un XML, asociado al .FR3 que tengamos.
Estoy haciendo pruebas con varios reportes , todos con éxito.
La idea básica, es tener 1 reporte FR3 vacio, y este será alimentado por el XML.
Por ejemplo, este PRUEBAS.XML definido ;
<REPORT oem="true" id="PRUEBAS" range1="CURRENT" range2="LAST" range3="" >
<WORKAREAS>
<DBF master="true" name="FACTURAS" alias="FACTURAS" index="FACFECH.NTX" filter="SUBSTR( HABITAC,6,1,) = ' ' " />
<DBF master="false" name="RESERVAS" alias="RESERVAS" index="RESERVA.NTX" />
<DBF master="false" name="AGENCIAS" alias="AGENCIAS" index="AGENCIAS.NTX" />
<DBF master="false" name="CONCEPTO" alias="CONCEPTO" index="CONCEPTO.NTX" />
<DBF master="false" name="PRECIOS" alias="PRECIOS" index="PRECIOS.NTX" />
<DBF master="false" name="CALENDAR" alias="CALENDAR" index="CALENDAR.NTX" />
<DBF master="false" name="HOTELS" alias="HOTELS" />
<DBF master="false" name="CONTRATO" alias="CONTRATO" index="CONTRATO.NTX" />
</WORKAREAS>
<MASTERDETAIL>
<DBF master="FACTURAS" detail="RESERVAS" expression="facturas->reserva"/>
<DBF master="RESERVAS" detail="AGENCIAS" expression="reservas->ag_cod"/>
</MASTERDETAIL>
<FUNCTIONS>
<FUNCTION name="Function Empty( aParam: Variant): Boolean" description= "Devuelve .T. si la cadena esta vacia" category="PRUEBAS" />
</FUNCTIONS>
</REPORT>
Creamos un PRUEBAS.FR3 vacio.
Ahora , la magia;
oFast := TFastManual():New( "PRUEBA", bStart )
oFast:SetPrinter( cPrinter ) // Podemos decir que impresora usar
oFast:SetDesign( .T. ) // Podemos decir si entra en modo diseño
oFast:SetTitle( cTitulo ) // Titulo del reporte
oFast:SetFile( "prueba.pdf" ) // SI queremos que lo imprima directamente a pdf
oFast:Run()
Lo que hace la clase, es cargar el XML, abrir las dbs, hacer las relaciones e invocar a FastReport.
Ahora ya puedo preocuparse solo de diseñar el reporte.
Si lo que quiero hacer es cargar una dbf, y hacer una relación, NO TENGO que programar NADA, solo
tengo que modificar el XML asociado al FR3 y ya está.
Esta clase me ha de cubrir el 95% de listados, que son miles.
¿ Alguien está interesado en esta clase ?
¿ Alguien tiene algo similar a esto ?
Lo digo por si subirlo o no a github.
Saludos