Página 1 de 1

Ayuda con Xailer Multiples- Maestror->Detalle en FastReport

Publicado: Mié Feb 03, 2010 9:56 pm
por Juan Jose
Hola a todos,
alguien puede ayudarme con este codigo, funciona pero el details siempre es
el mismo para todos.
Agraderecia enormemente cualquir ayuda
METHOD AsignaReporte(oSender, nOption) CLASS TFrmPersonal
Local aDataSet := {}
Local cSelect := ""
Local bBlock:={||::SincroMov()}
::oDataset := AppData:oServer:Query(::cSelect )
::SincroMov()
aadd(aDataSet, {"TABLA", ::oDataSet,.T., bBlock})
aadd(aDataSet, {"TABLA1 ::oDataSet1, Nil, Nil})
aadd(aDataSet, {"TABLA2 ::oDataSet2, Nil, Nil})
aadd(aDataSet, {"TABLA3 ::oDataSet3, Nil, Nil})
RETURN aDataSet
//---------------------------------------------------------- ---------------------------
METHOD SincroMov( oSender ) CLASS TFrmPersonal
Local cSelect := ""
If !(::oDataset:Eof())
cSelect="SELECT campo1, campo2 FROM table1 WHERE nif = ? "
cSelect := AppData:oServer:BuildSQLSt(cSelect,::oDataset:nif)
::oDataset1 := AppData:oServer:Query(cSelect)
cSelect="SELECT campo1, campo2 FROM table2 WHERE nif = ? "
cSelect := AppData:oServer:BuildSQLSt(cSelect,::oDataset:nif)
::oDataset2 := AppData:oServer:Query(cSelect)
cSelect="SELECT campo1, campo2 FROM table3 WHERE nif = ? "
cSelect := AppData:oServer:BuildSQLSt(cSelect,::oDataset:nif)
::oDataset3 := AppData:oServer:Query(cSelect)
Endif
RETURN Nil
//---------------------------------------------------------- -----------------------------------------
// ES PERTENECE A OTRO FORM
//---------------------------------------------------------- ------------------------------------------
METHOD PrintReport(nOption, lPreview) CLASS TFrmSelReport
Local oInforme, n
Local aDataSet := ::OnPrint(nOption) //=> Evento que llama a METHOD
AsignaReporte(oSender, nOption)
Default aDataSet To {}
WITH OBJECT oInforme:= FrReportManager():New( Application:cDirectory +
"SystemFrSystH.dll" )
:LoadLangRes( Application:cDirectory + "System" + "Spanish.xml")
:ClearDataSets()
IF LEN( aDataSet[ 1 ] ) > 1
FOR n:= 1 TO LEN( aDataSet )
SetXailerDataSet( oInforme, aDataSet[ n, 1 ], aDataSet[ n,
2 ], aDataSet[ n, 3 ], aDataSet[ n, 4 ] )
NEXT
ENDIF
:SetFileName( ".reportes" +"New_Report.fr3" )
:DesignReport()
:DestroyFr()
END WITH
oInforme:= NIl
Return .T.
Juan Jose Lopez
__________ Información de ESET NOD32 Antivirus, versión de la base de firmas de virus 4832 (20100203) __________
ESET NOD32 Antivirus ha comprobado este mensaje.
http://www.eset.com

Ayuda con Xailer Multiples- Maestror->Detalle en FastReport

Publicado: Sab Feb 06, 2010 6:49 pm
por jrcpoli-quitar
Saludos:
Siendo un asunto de FasReport, es que Bingen no lo ha visto, si sigues
interesado en conseguirla mandale un correo a su buzón personal, seguro
de que te ayudará en lo que necesites.
bingen@bisoft.es
José Ramón Castro.
El 03/02/2010 21:56, Juan Jose escribió:
> Hola a todos,
> alguien puede ayudarme con este codigo, funciona pero el details siempre es
> el mismo para todos.
> Agraderecia enormemente cualquir ayuda
>
> METHOD AsignaReporte(oSender, nOption) CLASS TFrmPersonal
>
> Local aDataSet := {}
> Local cSelect := ""
> Local bBlock:={||::SincroMov()}
>
> ::oDataset := AppData:oServer:Query(::cSelect )
>
> ::SincroMov()
>
> aadd(aDataSet, {"TABLA", ::oDataSet,.T., bBlock})
> aadd(aDataSet, {"TABLA1 ::oDataSet1, Nil, Nil})
> aadd(aDataSet, {"TABLA2 ::oDataSet2, Nil, Nil})
> aadd(aDataSet, {"TABLA3 ::oDataSet3, Nil, Nil})
>
> RETURN aDataSet
> //---------------------------------------------------------- ---------------------------
> METHOD SincroMov( oSender ) CLASS TFrmPersonal
>
> Local cSelect := ""
>
> If !(::oDataset:Eof())
>
> cSelect="SELECT campo1, campo2 FROM table1 WHERE nif = ? "
> cSelect := AppData:oServer:BuildSQLSt(cSelect,::oDataset:nif)
> ::oDataset1 := AppData:oServer:Query(cSelect)
>
> cSelect="SELECT campo1, campo2 FROM table2 WHERE nif = ? "
> cSelect := AppData:oServer:BuildSQLSt(cSelect,::oDataset:nif)
> ::oDataset2 := AppData:oServer:Query(cSelect)
>
> cSelect="SELECT campo1, campo2 FROM table3 WHERE nif = ? "
> cSelect := AppData:oServer:BuildSQLSt(cSelect,::oDataset:nif)
> ::oDataset3 := AppData:oServer:Query(cSelect)
>
>
> Endif
>
> RETURN Nil
> //---------------------------------------------------------- -----------------------------------------
> // ES PERTENECE A OTRO FORM
> //---------------------------------------------------------- ------------------------------------------
> METHOD PrintReport(nOption, lPreview) CLASS TFrmSelReport
>
> Local oInforme, n
> Local aDataSet := ::OnPrint(nOption) //=> Evento que llama a METHOD
> AsignaReporte(oSender, nOption)
>
> Default aDataSet To {}
>
> WITH OBJECT oInforme:= FrReportManager():New( Application:cDirectory +
> "SystemFrSystH.dll" )
>
> :LoadLangRes( Application:cDirectory + "System" + "Spanish.xml")
>
> :ClearDataSets()
>
> IF LEN( aDataSet[ 1 ] )> 1
> FOR n:= 1 TO LEN( aDataSet )
> SetXailerDataSet( oInforme, aDataSet[ n, 1 ], aDataSet[ n,
> 2 ], aDataSet[ n, 3 ], aDataSet[ n, 4 ] )
> NEXT
> ENDIF
>
> :SetFileName( ".reportes" +"New_Report.fr3" )
>
> :DesignReport()
>
> :DestroyFr()
>
> END WITH
> oInforme:= NIl
>
> Return .T.
>
> Juan Jose Lopez
>
>
>
> __________ Información de ESET NOD32 Antivirus, versión de la base de firmas de virus 4832 (20100203) __________
>
> ESET NOD32 Antivirus ha comprobado este mensaje.
>
> http://www.eset.com
>
>
>
>

Ayuda con Xailer Multiples- Maestror->Detalle en FastReport

Publicado: Sab Feb 06, 2010 11:06 pm
por Juan Jose
Gracais José Ramón
"José Ramón Castro Polinio" <jrcpoli-quitarpara_envio]"@terra.es> escribió
en el mensaje news:[email=4b6dabbc@svctag-j7w3v3j....]4b6dabbc@svctag-j7w3v3j....[/email]
> Saludos:
>
> Siendo un asunto de FasReport, es que Bingen no lo ha visto, si sigues
> interesado en conseguirla mandale un correo a su buzón personal, seguro de
> que te ayudará en lo que necesites.
>
> bingen@bisoft.es
>
> José Ramón Castro.
>
> El 03/02/2010 21:56, Juan Jose escribió:
>> Hola a todos,
>> alguien puede ayudarme con este codigo, funciona pero el details siempre
>> es
>> el mismo para todos.
>> Agraderecia enormemente cualquir ayuda
>>
>> METHOD AsignaReporte(oSender, nOption) CLASS TFrmPersonal
>>
>> Local aDataSet := {}
>> Local cSelect := ""
>> Local bBlock:={||::SincroMov()}
>>
>> ::oDataset := AppData:oServer:Query(::cSelect )
>>
>> ::SincroMov()
>>
>> aadd(aDataSet, {"TABLA", ::oDataSet,.T., bBlock})
>> aadd(aDataSet, {"TABLA1 ::oDataSet1, Nil, Nil})
>> aadd(aDataSet, {"TABLA2 ::oDataSet2, Nil, Nil})
>> aadd(aDataSet, {"TABLA3 ::oDataSet3, Nil, Nil})
>>
>> RETURN aDataSet
>> //---------------------------------------------------------- ---------------------------
>> METHOD SincroMov( oSender ) CLASS TFrmPersonal
>>
>> Local cSelect := ""
>>
>> If !(::oDataset:Eof())
>>
>> cSelect="SELECT campo1, campo2 FROM table1 WHERE nif = ? "
>> cSelect := AppData:oServer:BuildSQLSt(cSelect,::oDataset:nif)
>> ::oDataset1 := AppData:oServer:Query(cSelect)
>>
>> cSelect="SELECT campo1, campo2 FROM table2 WHERE nif = ? "
>> cSelect := AppData:oServer:BuildSQLSt(cSelect,::oDataset:nif)
>> ::oDataset2 := AppData:oServer:Query(cSelect)
>>
>> cSelect="SELECT campo1, campo2 FROM table3 WHERE nif = ? "
>> cSelect := AppData:oServer:BuildSQLSt(cSelect,::oDataset:nif)
>> ::oDataset3 := AppData:oServer:Query(cSelect)
>>
>>
>> Endif
>>
>> RETURN Nil
>> //---------------------------------------------------------- -----------------------------------------
>> // ES PERTENECE A OTRO FORM
>> //---------------------------------------------------------- ------------------------------------------
>> METHOD PrintReport(nOption, lPreview) CLASS TFrmSelReport
>>
>> Local oInforme, n
>> Local aDataSet := ::OnPrint(nOption) //=> Evento que llama a
>> METHOD
>> AsignaReporte(oSender, nOption)
>>
>> Default aDataSet To {}
>>
>> WITH OBJECT oInforme:= FrReportManager():New(
>> Application:cDirectory +
>> "SystemFrSystH.dll" )
>>
>> :LoadLangRes( Application:cDirectory + "System" +
>> "Spanish.xml")
>>
>> :ClearDataSets()
>>
>> IF LEN( aDataSet[ 1 ] )> 1
>> FOR n:= 1 TO LEN( aDataSet )
>> SetXailerDataSet( oInforme, aDataSet[ n, 1 ], aDataSet[
>> n,
>> 2 ], aDataSet[ n, 3 ], aDataSet[ n, 4 ] )
>> NEXT
>> ENDIF
>>
>> :SetFileName( ".reportes" +"New_Report.fr3" )
>>
>> :DesignReport()
>>
>> :DestroyFr()
>>
>> END WITH
>> oInforme:= NIl
>>
>> Return .T.
>>
>> Juan Jose Lopez
>>
>>
>>
>> __________ Información de ESET NOD32 Antivirus, versión de la base de
>> firmas de virus 4832 (20100203) __________
>>
>> ESET NOD32 Antivirus ha comprobado este mensaje.
>>
>> http://www.eset.com
>>
>>
>>
>>
>
> __________ Información de ESET NOD32 Antivirus, versión de la base de
> firmas de virus 4842 (20100206) __________
>
> ESET NOD32 Antivirus ha comprobado este mensaje.
>
> http://www.eset.com
>
>
>
__________ Información de ESET NOD32 Antivirus, versión de la base de firmas de virus 4842 (20100206) __________
ESET NOD32 Antivirus ha comprobado este mensaje.
http://www.eset.com

Ayuda con Xailer Multiples- Maestror->Detalle en FastReport

Publicado: Lun Feb 08, 2010 8:19 am
por Bingen Ugaldebere
Perdón que no lo he visto hasta hoy....
Vamos a ver como se hace el maestro-detalle en FR.
En principio yo de verdad solo lo he hecho con DBFs pero te explico como
y luego te explico como lo he hecho en falso con Sql.
1.- Con Dbfs es facil hacer un DbSetRelation de toda la vida para
relaccionar 2 tablas DBF en base a un campo
USE Facturas NEW
USE FacLineas NEW
SET INDEX TO NumFac
SELECT Facturas
DbSetRelation("FacLineas", {||NumFac})
Con esto ambas tablas estarí­an sincronizadas para xHb pero FR a pesar de
que le envies las tablas
oFr:SetWorkArea("Facturas", Select("Facturas"))
oFr:SetWorkArea("FacLineas", Select("Faclineas"))
No tendrá en cuenta la relación entre ellas a no ser que se la indiques
también
oFr:SetResyncPair("Facturas", "FacLineas")
oFr:DesignReport()
oFr:ClearResyncPair("Facturas", "FacLineas")
oFr:ClearDataSets()
Otra manera de hacerlo que indica el manual aunque no la he usado es:
oFr:SetMasterDetail("Facturas","FacLineas",{|| Facturas->Lineas})
oFr:DesignReport()
oFr:ClearMasterDetail( "FacLineas" )
Por último y como en SQL no conozco la posibilidad de un DbSetRelation
lo que he hecho es prepararme un MemDataset que incluya en cada registro
los datos del maestro (repetidos en n lí­neas) y los datos del detalle (1
por lí­nea) y a continuación he hecho el reporte con este memdataset,
agrupando por datos del maestro y mostrando en las lí­neas de datos solo
las del detalle.
O sea un Maestro-Detalle falso, pre-montado a mano con anterioridad.
Espero que te valgan las ideas.
Salu2.
>
> METHOD AsignaReporte(oSender, nOption) CLASS TFrmPersonal
>
> Local aDataSet := {}
> Local cSelect := ""
> Local bBlock:={||::SincroMov()}
>
> ::oDataset := AppData:oServer:Query(::cSelect )
>
> ::SincroMov()
>
> aadd(aDataSet, {"TABLA", ::oDataSet,.T., bBlock})
90> aadd(aDataSet, {"TABLA1 ::oDataSet1, Nil, Nil})
> aadd(aDataSet, {"TABLA2 ::oDataSet2, Nil, Nil})
> aadd(aDataSet, {"TABLA3 ::oDataSet3, Nil, Nil})
>
> RETURN aDataSet
> //---------------------------------------------------------- ---------------------------
> METHOD SincroMov( oSender ) CLASS TFrmPersonal
>
> Local cSelect := ""
>
> If !(::oDataset:Eof())
>
> cSelect="SELECT campo1, campo2 FROM table1 WHERE nif = ? "
> cSelect := AppData:oServer:BuildSQLSt(cSelect,::oDataset:nif)
> ::oDataset1 := AppData:oServer:Query(cSelect)
>
> cSelect="SELECT campo1, campo2 FROM table2 WHERE nif = ? "
> cSelect := AppData:oServer:BuildSQLSt(cSelect,::oDataset:nif)
> ::oDataset2 := AppData:oServer:Query(cSelect)
>
> cSelect="SELECT campo1, campo2 FROM table3 WHERE nif = ? "
> cSelect := AppData:oServer:BuildSQLSt(cSelect,::oDataset:nif)
> ::oDataset3 := AppData:oServer:Query(cSelect)
>
>
> Endif
>
> RETURN Nil
> //---------------------------------------------------------- -----------------------------------------
> // ES PERTENECE A OTRO FORM
> //---------------------------------------------------------- ------------------------------------------
> METHOD PrintReport(nOption, lPreview) CLASS TFrmSelReport
>
> Local oInforme, n
> Local aDataSet := ::OnPrint(nOption) //=> Evento que llama a METHOD
> AsignaReporte(oSender, nOption)
>
> Default aDataSet To {}
>
> WITH OBJECT oInforme:= FrReportManager():New( Application:cDirectory +
> "SystemFrSystH.dll" )
>
> :LoadLangRes( Application:cDirectory + "System" + "Spanish.xml")
>
> :ClearDataSets()
>
> IF LEN( aDataSet[ 1 ] )> 1
> FOR n:= 1 TO LEN( aDataSet )
> SetXailerDataSet( oInforme, aDataSet[ n, 1 ], aDataSet[ n,
> 2 ], aDataSet[ n, 3 ], aDataSet[ n, 4 ] )
> NEXT
> ENDIF
>
> :SetFileName( ".reportes" +"New_Report.fr3" )
>
> :DesignReport()
>
> :DestroyFr()
>
> END WITH
> oInforme:= NIl
>
> Return .T.
>
> Juan Jose Lopez
>
>
>
> __________ Información de ESET NOD32 Antivirus, versión de la base de firmas de virus 4832 (20100203) __________
>
> ESET NOD32 Antivirus ha comprobado este mensaje.
>
> http://www.eset.com
>
>
>
>