Controlar Error ADODB.RecordSet:FIELDS/9 - Solucionado

Post Reply
User avatar
leandro
Posts: 1688
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia
Contact:

Controlar Error ADODB.RecordSet:FIELDS/9 - Solucionado

Post by leandro »

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: Select all | Expand

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

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
nageswaragunupudi
Posts: 10691
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Contact:

Re: Controlar Error ADODB.RecordSet:FIELDS/9

Post by nageswaragunupudi »

How are you setting the filter?
Can we see the code?
Regards

G. N. Rao.
Hyderabad, India
User avatar
leandro
Posts: 1688
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia
Contact:

Re: Controlar Error ADODB.RecordSet:FIELDS/9

Post by leandro »

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: Select all | Expand


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: Select all | Expand


//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

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
Armando
Posts: 3249
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Re: Controlar Error ADODB.RecordSet:FIELDS/9

Post by Armando »

Estimado Leandro:

Si en el SELECT tienes JOINs revisa que _ 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
User avatar
leandro
Posts: 1688
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia
Contact:

Re: Controlar Error ADODB.RecordSet:FIELDS/9

Post by leandro »

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

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
nageswaragunupudi
Posts: 10691
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Contact:

Re: Controlar Error ADODB.RecordSet:FIELDS/9

Post by nageswaragunupudi »

Code: Select all | Expand

 oRsFtr:Find("ll_itemfa='"+alltrim(cFcId) + "'")
Safest way:

Code: Select all | Expand

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
User avatar
leandro
Posts: 1688
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia
Contact:

Re: Controlar Error ADODB.RecordSet:FIELDS/9

Post by leandro »

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

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
Posts: 1688
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia
Contact:

Re: Controlar Error ADODB.RecordSet:FIELDS/9

Post by leandro »

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

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
Post Reply