Error con Fastreport GPF (Code = c0000005) Access Violation
Publicado: Sab May 16, 2015 2:25 pm
Hola tengo un problema con Fastreport. POR FAVOR ALGUIEN ME PUEDE AYUDAR
Al ejecutar un reporte no me arroja problema pero al ejecutarlo por segunda vez me da error.
GPF (Code = c0000005)
Access Violation
TFASTREPORT:SHOWREPORTC (0)
TFASTREPORT:SHOWREPORTC (356)
TFRMREPCTCTPROVEE:BTSTARTCLICK (187)
TBUTTON:ONCLICK (0)
TBUTTON:CLICK (101)
(B)XCONTROL (152)
TBUTTOM:COMMAND (0)
TGROUPBOX:WMCOMMAND (275)
TFRMREPCTCTPROVEE:SHOWMODAL (0)
TFRMCTCTPROVEE:MANTENEDITAR (80)
El código es el siguiente
METHOD BtStartClick( oSender ) CLASS TFrmRepCtCtProvee
Local Fec_Inicio, Fec_Termino, oFr, nSalAcu
if ::oDFechInicio:Value > ::oDFechTermino:Value
MsgInfo( "Fechas incorrectas! Ingrese nuevamente........" )
Return nil
EndIf
Fec_Inicio := ::oDFechInicio:Value
Fec_Termino:= ::oDFechTermino:Value
::oDbfGuiaPro:OrdSetFocus( "Codigo" )
::oDbfAjustes:OrdSetFocus( "Codigo" )
::oDbfDetPagPro:OrdSetFocus( "DetPagPro" )
FErase( "BigdataP.dbf" )
IF !File( "BigdataP.dbf" )
::oCdxBigData:CreateTable( { {"Detalle","C",30,0}, {"Fecha","D",8,0}, {"Comp","N",7,0}, {"Tipo","c",1,0}, {"Debe","N",8,0}, {"Haber","N",8,0}, {"Saldo","N",12,0} }, "BigdataP.dbf" )
ENDIF
WITH OBJECT ::oDbfBigdataP
:cName := "BigdataP.DBF"
:Open()
Application:lBusy := .T.
***DETPAGO***
Do While ! ::oDbfDetPagPro:Eof()
If ::oDbfDetPagPro:eliminado = 0 .and. ::oDbfDetPagPro:empresa = appdata:pCodempre
:FastAddNew()
:Detalle := "Cancelación Doc: " + allTrim( Str( ::oDbfDetPagPro:ndoc_pag, 12, 0 ) )
:Fecha := ::oDbfDetPagPro:fec_pag
:Comp := ::oDbfDetPagPro:ndoc_pag
:Tipo := "P"
:Debe := ::oDbfDetPagPro:mon_pag
:Haber := 0
:Saldo := 0
:FastUpdate()
EndIF
::oDbfDetPagPro:Skip()
EndDO
***FACCAB***
Do While ! ::oDbfGuiaPro:Eof()
If ::oDbfGuiaPro:eliminado = 0 .and. ::oDbfGuiaPro:empresa = appdata:pCodempre
:FastAddNew()
:Detalle := "Compra Doc: " + allTrim( ::oDbfGuiaPro:codigo )
:Fecha := ::oDbfGuiaPro:fecha
:Comp := Val(::oDbfGuiaPro:codigo)
:Tipo := "C"
:Debe := 0
:Haber := ::oDbfGuiaPro:Base1
:Saldo := 0
:FastUpdate()
EndIF
::oDbfGuiaPro:Skip()
EndDO
***AJUSTE***
Do While ! ::oDbfAjustes:Eof()
if ::oDbfAjustes:eliminado = 0 .and. ::oDbfAjustes:empresa = appdata:pCodempre
:FastAddNew()
:Detalle := ::oDbfAjustes:descripcion
:Fecha := ::oDbfAjustes:fecha
:Comp := Val(::oDbfAjustes:numajuste)
:Tipo := "A"
:Debe := ::oDbfAjustes:ENTRADA
:Haber := ::oDbfAjustes:SALIDA
:Saldo := 0
:FastUpdate()
EndIF
::oDbfAjustes:Skip()
EndDO
***CALCULO FINAL***
:OrdSetFocus( "Bigdatap" )
:reindex()
:gotop()
nSalAcu := 0
While ! :eof()
:reclock()
nSalAcu += :Debe
:Saldo := nSalAcu
nSalAcu -= :Haber
:Saldo := nSalAcu
:recunlock()
:skip()
EndDo
*** Limpio por fechas ***
:gotop()
While ! :eof()
:reclock()
IF :fecha < Fec_Inicio
:delete()
elseif :fecha > Fec_Termino
:delete()
else
:skip()
EndiF
:recunlock()
EndDo
:pack()
Application:lBusy := .F.
MsgInfo( "Calculo realizado! Espere..... para el reporte" )
END WITH
*** Despliegue Reporte *** //ACÁ ES DONDE SE DA EL ERROR
WITH OBJECT ::oFastReport1
WITH OBJECT :AddDbf( "Bigdata", "BigdataP->*" )
:lLoadOnDemand := .T.
END WITH
:ShowReport()
//:DesignReport()
END WITH
Al ejecutar un reporte no me arroja problema pero al ejecutarlo por segunda vez me da error.
GPF (Code = c0000005)
Access Violation
TFASTREPORT:SHOWREPORTC (0)
TFASTREPORT:SHOWREPORTC (356)
TFRMREPCTCTPROVEE:BTSTARTCLICK (187)
TBUTTON:ONCLICK (0)
TBUTTON:CLICK (101)
(B)XCONTROL (152)
TBUTTOM:COMMAND (0)
TGROUPBOX:WMCOMMAND (275)
TFRMREPCTCTPROVEE:SHOWMODAL (0)
TFRMCTCTPROVEE:MANTENEDITAR (80)
El código es el siguiente
METHOD BtStartClick( oSender ) CLASS TFrmRepCtCtProvee
Local Fec_Inicio, Fec_Termino, oFr, nSalAcu
if ::oDFechInicio:Value > ::oDFechTermino:Value
MsgInfo( "Fechas incorrectas! Ingrese nuevamente........" )
Return nil
EndIf
Fec_Inicio := ::oDFechInicio:Value
Fec_Termino:= ::oDFechTermino:Value
::oDbfGuiaPro:OrdSetFocus( "Codigo" )
::oDbfAjustes:OrdSetFocus( "Codigo" )
::oDbfDetPagPro:OrdSetFocus( "DetPagPro" )
FErase( "BigdataP.dbf" )
IF !File( "BigdataP.dbf" )
::oCdxBigData:CreateTable( { {"Detalle","C",30,0}, {"Fecha","D",8,0}, {"Comp","N",7,0}, {"Tipo","c",1,0}, {"Debe","N",8,0}, {"Haber","N",8,0}, {"Saldo","N",12,0} }, "BigdataP.dbf" )
ENDIF
WITH OBJECT ::oDbfBigdataP
:cName := "BigdataP.DBF"
:Open()
Application:lBusy := .T.
***DETPAGO***
Do While ! ::oDbfDetPagPro:Eof()
If ::oDbfDetPagPro:eliminado = 0 .and. ::oDbfDetPagPro:empresa = appdata:pCodempre
:FastAddNew()
:Detalle := "Cancelación Doc: " + allTrim( Str( ::oDbfDetPagPro:ndoc_pag, 12, 0 ) )
:Fecha := ::oDbfDetPagPro:fec_pag
:Comp := ::oDbfDetPagPro:ndoc_pag
:Tipo := "P"
:Debe := ::oDbfDetPagPro:mon_pag
:Haber := 0
:Saldo := 0
:FastUpdate()
EndIF
::oDbfDetPagPro:Skip()
EndDO
***FACCAB***
Do While ! ::oDbfGuiaPro:Eof()
If ::oDbfGuiaPro:eliminado = 0 .and. ::oDbfGuiaPro:empresa = appdata:pCodempre
:FastAddNew()
:Detalle := "Compra Doc: " + allTrim( ::oDbfGuiaPro:codigo )
:Fecha := ::oDbfGuiaPro:fecha
:Comp := Val(::oDbfGuiaPro:codigo)
:Tipo := "C"
:Debe := 0
:Haber := ::oDbfGuiaPro:Base1
:Saldo := 0
:FastUpdate()
EndIF
::oDbfGuiaPro:Skip()
EndDO
***AJUSTE***
Do While ! ::oDbfAjustes:Eof()
if ::oDbfAjustes:eliminado = 0 .and. ::oDbfAjustes:empresa = appdata:pCodempre
:FastAddNew()
:Detalle := ::oDbfAjustes:descripcion
:Fecha := ::oDbfAjustes:fecha
:Comp := Val(::oDbfAjustes:numajuste)
:Tipo := "A"
:Debe := ::oDbfAjustes:ENTRADA
:Haber := ::oDbfAjustes:SALIDA
:Saldo := 0
:FastUpdate()
EndIF
::oDbfAjustes:Skip()
EndDO
***CALCULO FINAL***
:OrdSetFocus( "Bigdatap" )
:reindex()
:gotop()
nSalAcu := 0
While ! :eof()
:reclock()
nSalAcu += :Debe
:Saldo := nSalAcu
nSalAcu -= :Haber
:Saldo := nSalAcu
:recunlock()
:skip()
EndDo
*** Limpio por fechas ***
:gotop()
While ! :eof()
:reclock()
IF :fecha < Fec_Inicio
:delete()
elseif :fecha > Fec_Termino
:delete()
else
:skip()
EndiF
:recunlock()
EndDo
:pack()
Application:lBusy := .F.
MsgInfo( "Calculo realizado! Espere..... para el reporte" )
END WITH
*** Despliegue Reporte *** //ACÁ ES DONDE SE DA EL ERROR
WITH OBJECT ::oFastReport1
WITH OBJECT :AddDbf( "Bigdata", "BigdataP->*" )
:lLoadOnDemand := .T.
END WITH
:ShowReport()
//:DesignReport()
END WITH