Controlar Error ADODB.RecordSet:FIELDS/9 - Solucionado

Controlar Error ADODB.RecordSet:FIELDS/9 - Solucionado

Postby leandro » Wed Sep 04, 2024 8: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: Select all  Expand view

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

Re: Controlar Error ADODB.RecordSet:FIELDS/9

Postby nageswaragunupudi » Wed Sep 04, 2024 8:39 pm

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

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10595
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Controlar Error ADODB.RecordSet:FIELDS/9

Postby leandro » Fri Sep 06, 2024 9: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: Select all  Expand view


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 view


//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
leandro
 
Posts: 1669
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

Re: Controlar Error ADODB.RecordSet:FIELDS/9

Postby Armando » Fri Sep 06, 2024 7: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
User avatar
Armando
 
Posts: 3199
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Controlar Error ADODB.RecordSet:FIELDS/9

Postby leandro » 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

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

Re: Controlar Error ADODB.RecordSet:FIELDS/9

Postby nageswaragunupudi » Mon Sep 09, 2024 3:50 am

Code: Select all  Expand view
oRsFtr:Find("ll_itemfa='"+alltrim(cFcId) + "'")


Safest way:
Code: Select all  Expand view
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
nageswaragunupudi
 
Posts: 10595
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Controlar Error ADODB.RecordSet:FIELDS/9

Postby leandro » Wed Sep 18, 2024 3: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

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

Re: Controlar Error ADODB.RecordSet:FIELDS/9

Postby leandro » Tue Oct 01, 2024 3: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

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


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 29 guests