FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Controlar Error ADODB.RecordSet:FIELDS/9 - Solucionado
Posts: 1816
Joined: Wed Oct 26, 2005 02:49 PM
Controlar Error ADODB.RecordSet:FIELDS/9 - Solucionado
Posted: Wed Sep 04, 2024 08:12 PM
Hola buenas tardes para todos, debido al cambio de mes a septiembre, hay momentos en los que la app a estado devolviendo el siguiente error:
Code (fw): Select all Collapse
Application
===========
   Path and name: C:\dlyma\hymlyma.exe (32 bits)
   Size: 9,103,872 bytes
   Compiler version: xHarbour 1.3.0 Intl. (SimpLex) (Build 20231104)
   FiveWin  version: FWH 23.10
   C compiler version: Borland/Embarcadero C++ 7.7 (32-bit)
   Windows 10 64 Bits, version: 6.2, Build 9200 

   Time from start: 0 hours 2 mins 23 secs 
   Error occurred at: 15/08/2024, 09:25:28
   Error description: Error ADODB.RecordSet:FIELDS/9  El valor de BOF o EOF es True, o el actual registro se eliminó; la operación solicitada requiere un registro actual.: VALUE
   Args:

Stack Calls
===========
   Called from:  => TOLEAUTO:VALUE( 0 )
   Called from: z:\prg\R32_fact.prg => SERVICIONOTARIAS( 16197 )
   Called from: z:\prg\R32_fact.prg => (b)FFACTURAS( 501 )
   Called from: .\source\classes\TIMER.PRG => TIMEREVENT( 73 )
   Called from: .\source\classes\WINDOW.PRG => (b)TWINDOW:TWINDOW( 724 )
   Called from:  => TMDIFRAME:TIMER( 0 )
   Called from:  => TMDIFRAME:HANDLEEVENT( 0 )
   Called from: .\source\classes\WINDOW.PRG => _FWH( 3651 )
   Called from:  => TRACKPOPUP( 0 )
   Called from: .\source\classes\MENU.PRG => TMENU:ACTIVATE( 1796 )
   Called from: z:\prg\R32_fact.prg => MMONITOREO( 17191 )
   Called from: z:\prg\R32_fact.prg => (b)MONITOREARSERVICIO( 17039 )
   Called from: .\source\classes\WINDOW.PRG => TCONTROL:RBUTTONDOWN( 2180 )
   Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:RBUTTONDOWN( 5516 )
   Called from:  => TWINDOW:HANDLEEVENT( 0 )
   Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1861 )
   Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:HANDLEEVENT( 12566 )
   Called from: .\source\classes\WINDOW.PRG => _FWH( 3651 )
   Called from:  => WINRUN( 0 )
   Called from: .\source\classes\WINDOW.PRG => TMDIFRAME:ACTIVATE( 1113 )
   Called from: z:\prg\R32_menu.prg => VTNAPRINCIPAL( 1002 )
   Called from: z:\prg\R32_menu.prg => MAIN( 153 )
y se genera debido a que se hace una consulta sobre un filtro de una variable que no existe, alguien sabe como controlarlo?, para informarle al usuario que debe ajustar el filtro y que la aplicación no se reviente.

De antemano gracias.
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 25.01 ] [ xHarbour 64 bits) ]
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Controlar Error ADODB.RecordSet:FIELDS/9
Posted: Wed Sep 04, 2024 08:39 PM

How are you setting the filter?

Can we see the code?

Regards



G. N. Rao.

Hyderabad, India
Posts: 1816
Joined: Wed Oct 26, 2005 02:49 PM
Re: Controlar Error ADODB.RecordSet:FIELDS/9
Posted: Fri Sep 06, 2024 09:00 AM
Mr. Rao gracias por responder

El código es bastante largo, pero publico aquí la forma como se genera el recorset de la consulta y el refresh que se hace

Así esta definido el xbrowse
Code (fw): Select all Collapse
Local cFechaIni := "2024-08-01" //Definida en un archivo de tipo .ini
Local cFechaFin := "2024-08-31" //Definida en un archivo de tipo .ini

cVar := "SELECT * FROM facturas .... WHERE fecha>='"+cFechaIni+"' AND fecha <='"+cFechaFin+"'......."
oRsFtr := AdoExecute( oCnFtr, { |oCn| FW_OPENRECORDSET(oCn,cVar,adLockOptimistic,adOpenKeyset) } )

...

oWChPq:oMsgbar:cMsgDef = "Facturas de Venta"
oBrwFt := TXBrowse():New( oWChPq )
oBrwFt:nRowDividerStyle         := LINESTYLE_LIGHTGRAY
oBrwFt:nColDividerStyle         := LINESTYLE_LIGHTGRAY
oBrwFt:nHeaderLines             := 1
oBrwFt:lColDividerComplete      := .t.

....

oCol          = oBrwFt:AddCol()
oCol:bStrData = { || If( oRsFtr:Eof, Space( nWidth ), if(cvaltochar( oRsFtr:Fields( "nivel1" ):Value)="001","Radicada",)) }
oCol:cHeader  = "Trazabilidad"
oCol:nWidth   = 75
oCol:nHeadStrAlign = AL_LEFT
oCol:nDataStrAlign = AL_LEFT    
oCol:oHeaderFont = oFont    
oCol:lHide = .T.
oCol:bClrStd      = {|| {CLR_BLACK, if(cvaltochar( oRsFtr:Fields( "nivel1" ):Value)="001",;
                                    nRGB(255,226,125),nRGB(255,255,255)) }  }
oCol:bClrSelFocus = {|| {CLR_WHITE, if(cvaltochar( oRsFtr:Fields( "nivel1" ):Value)="001",;
                                    nRGB(255,201,14),nRGB(51,153,255)) }  }

...

Muchas mas columnas

....

oBrwFt:SetADO( oRsFtr )
oBrwFt:CreateFromCode()
Asi hacemos el llamado de nuevo al recorset
Code (fw): Select all Collapse
//refrescamos la ventana
oRsFtr:requery()
oBrwFt:goBottom()
oBrwFt:refresh()    

....

nLn := 1
nCnLnIm := len(aInFaim)
While nLn <= nCnLnIm 

    cFcId := aInFaim[nLn]["id_factura"] //Recuperamos id de la factura para buscar dentro del recorset
            
    oBrwFt:goTop()
    oRsFtr:Find("ll_itemfa="+alltrim(cFcId)) //AL buscar aquí no encuentra el id dentro del rango y se revienta 
    oBrwFt:refresh()

        nLn++
EndDo
De antemano gracias
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 25.01 ] [ xHarbour 64 bits) ]
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Controlar Error ADODB.RecordSet:FIELDS/9
Posted: Fri Sep 06, 2024 07:12 PM

Estimado Leandro:

Si en el SELECT tienes JOINs revisa que los campos del JOIN existan y tengan valor

Saludos

SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Posts: 1816
Joined: Wed Oct 26, 2005 02:49 PM
Re: Controlar Error ADODB.RecordSet:FIELDS/9
Posted: Sat Sep 07, 2024 10:54 AM

Armando buenos días, gracias por responder

Lo que pasa es que queremos poder controlar ese error como tal, sabemos que hay otra forma de informarle al usuario que cometió un error, ya que las variables de los filtros estan en un archivo .ini le puedo decir al usuario que su consulta no esta dentro del rango de fecha que desea buscar; pero lo que realmente queremos es poder controlar ese error en especifico, que se genera al no poder encontrar el elemento buscado o llegar al fin de recorset, no se que es lo que lo genera.

Saludos

Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 25.01 ] [ xHarbour 64 bits) ]
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Controlar Error ADODB.RecordSet:FIELDS/9
Posted: Mon Sep 09, 2024 03:50 AM
Code (fw): Select all Collapse
 oRsFtr:Find("ll_itemfa='"+alltrim(cFcId) + "'")
Safest way:
Code (fw): Select all Collapse
cSql     := "ll_itemfa== ?"
cFime    := FW_AdoApplyParams( cSql, { cFcId } )
TRY
oRs:Find( cFind )
if oRs:Eof()
   lFound := .f.
   oRs:MoveLast()
else
   lFound := .t.
endif 
CATCH
   lFound := .f.
END
? lFound
Regards



G. N. Rao.

Hyderabad, India
Posts: 1816
Joined: Wed Oct 26, 2005 02:49 PM
Re: Controlar Error ADODB.RecordSet:FIELDS/9
Posted: Wed Sep 18, 2024 03:59 PM

Que pena Mr. Rao, no había visto esta respuesta, estaba ocupado con el tema del webinar y la migración a 64 bits, intentando.

Apenas tenga resultado comento.

Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 25.01 ] [ xHarbour 64 bits) ]
Posts: 1816
Joined: Wed Oct 26, 2005 02:49 PM
Re: Controlar Error ADODB.RecordSet:FIELDS/9
Posted: Tue Oct 01, 2024 03:58 PM
Excelente Mr. Rao, problema solucionado :D

Como siempre muchísimas gracias por la ayuda.
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 25.01 ] [ xHarbour 64 bits) ]

Continue the discussion