FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Error en xBrowse con ADO (Solucionado)
Posts: 464
Joined: Tue Mar 21, 2006 07:30 PM
Error en xBrowse con ADO (Solucionado)
Posted: Fri Apr 13, 2012 04:21 PM
Hola a todos

Estoy empezando con ADO, y la verdad que ya voy bastante adelantado con mi primera aplicación. En uno de los módulos, donde genero un Browse que contiene campos lógicos, me salta un error que me ha desconcertado, ya que no me había salido en otros Browses.
Este es el error :

Error description: Error BASE/1004 Class: 'LOGICAL' has no exported method: EVAL
Args:
[ 1] = L .F.

Stack Calls
===========
Called from: => EVAL( 0 )
Called from: .\source\classes\XBROWSE.PRG => TXBRWCOLUMN:PAINTCELL( 9604 )
Called from: .\source\classes\XBROWSE.PRG => TXBRWCOLUMN:PAINTDATA( 9556 )
Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:PAINT( 1431 )
Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:DISPLAY( 1250 )
Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1666 )
Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:HANDLEEVENT( 11627 )
Called from: .\source\classes\WINDOW.PRG => _FWH( 3159 )
Called from: => DIALOGBOXINDIRECT( 0 )
Called from: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE( 270 )
Called from: .\source\function\ERRSYSW.PRG => ERRORDIALOG( 426 )
Called from: .\source\function\ERRSYSW.PRG => (b)ERRORSYS( 31 )
Called from: => EVAL( 0 )
Called from: .\source\classes\XBROWSE.PRG => TXBRWCOLUMN:PAINTCELL( 9604 )
Called from: .\source\classes\XBROWSE.PRG => TXBRWCOLUMN:PAINTDATA( 9556 )
Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:PAINT( 1431 )
Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:DISPLAY( 1250 )
Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1666 )
Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:HANDLEEVENT( 11627 )
Called from: .\source\classes\WINDOW.PRG => _FWH( 3159 )
Called from: => UPDATEWINDOW( 0 )
Called from: .\source\classes\WINDOW.PRG => TWINDOW:ACTIVATE( 964 )
Called from: .\source\classes\MDICHILD.PRG => TMDICHILD:ACTIVATE( 248 )
Called from: C:\ProyectosADO\BrinquisMdb\Source\gesh0200.prg => DIARIO( 168 )
Called from: C:\ProyectosADO\BrinquisMdb\Source\geshinic.prg => (b)MAIN( 82 )
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:CLICK( 465 )
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:LBUTTONUP( 656 )
Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1690 )
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:HANDLEEVENT( 1407 )
Called from: .\source\classes\WINDOW.PRG => _FWH( 3159 )
Called from: => WINRUN( 0 )
Called from: .\source\classes\WINDOW.PRG => TMDIFRAME:ACTIVATE( 980 )
Called from: C:\ProyectosADO\BrinquisMdb\Source\geshinic.prg => MAIN( 121 )

System
======
CPU type: Pentium(R) Dual-Core CPU E5700 @ 3.00GHz 3000 Mhz
Hardware memory: 2242 megs

Free System resources: 90 %
GDI resources: 90 %
User resources: 90 %

Windows total applications running: 13
1 , C:\Program Files\Google\Chrome\Application\chrome.exe
2 , C:\Program Files\PSPad editor\PSPad.exe
3 , C:\Windows\Explorer.EXE
4 , C:\Windows\System32\hkcmd.exe
5 , C:\verce50\xverce50.Exe
6 CiceroUIWndFrame, C:\Windows\system32\taskhost.exe
7 DWM Notification Window, C:\Windows\system32\Dwm.exe
8 Escriba una pregunta, C:\Program Files\Microsoft Office\OFFICE11\MSACCESS.EXE
9 FiveWin for Harbour, C:\ProyectosADO\BrinquisMdb\CEMEIN.Exe
10 MCI command handling window, C:\Program Files\AVAST Software\Avast\AvastUI.exe
11 PersistWndName, C:\Windows\System32\igfxpers.exe
12 advertencia, C:\Program Files\VIA\VIAudioi\VDeck\VDeck.exe
13 igfxtrayWindow, C:\Windows\System32\igfxtray.exe

Variables in use
================
Procedure Type Value
==========================
EVAL
Local 1: A Len: 0
Local 2: U
Local 3: U
TXBRWCOLUMN:PAINTCELL
Param 1: N 39
Param 2: N 1240
Param 3: N 20
Param 4: L .F.
Param 5: L .F.
Param 6: N 11
Param 7: N 1
Local 1: O Class: TXBRWCOLUMN
Local 2: U
Local 3: U
Local 4: U
Local 5: U
Local 6: U
Local 7: U
Local 8: U
Local 9: U
Local 10: U
Local 11: U
Local 12: U
Local 13: U
Local 14: U
Local 15: U
Local 16: U
Local 17: U
Local 18: U
Local 19: U
Local 20: U
Local 21: U
Local 22: U
Local 23: U
Local 24: U
Local 25: U
Local 26: U
Local 27: U
Local 28: U
Local 29: U
Local 30: U
Local 31: U
Local 32: U
Local 33: U
Local 34: N 0
Local 35: U
Local 36: L .F.
Local 37: L .F.
Local 38: L .F.
Local 39: U
Local 40: U
Local 41: U
TXBRWCOLUMN:PAINTDATA
Param 1: N 39
Param 2: N 1240
Param 3: N 20
Param 4: L .F.
Param 5: L .F.
Param 6: N 11
Param 7: N 1
Local 1: O Class: TXBRWCOLUMN
Local 2: U
Local 3: U
Local 4: N 20
TXBROWSE:PAINT
Local 1: O Class: TXBROWSE
Local 2: A Len: 20
Local 3: U
Local 4: O Class: TRECT
Local 5: O Class: TXBRWCOLUMN
Local 6: N 11
Local 7: N 19
Local 8: N 39
Local 9: N 1494
Local 10: N 20
Local 11: N 12
Local 12: N 517
Local 13: U
Local 14: N 1343
Local 15: N 537
Local 16: U
Local 17: U
Local 18: N -1711205515
Local 19: N 2066748351
Local 20: N 2016415712
Local 21: N 1445991135
Local 22: U
Local 23: U
Local 24: N 39
Local 25: N 514
Local 26: N 23
Local 27: N 0
Local 28: N 1
Local 29: N 1
Local 30: N 20
Local 31: N 1.00
Local 32: N 3
Local 33: U
Local 34: L .T.
Local 35: L .F.
Local 36: L .F.
Local 37: A Len: 5
TXBROWSE:DISPLAY
Local 1: O Class: TXBROWSE
TCONTROL:HANDLEEVENT
Param 1: N 15
Param 2: N 0
Param 3: N 0
Local 1: O Class: TXBROWSE
Local 2: U
TXBROWSE:HANDLEEVENT
Param 1: N 15
Param 2: N 0
Param 3: N 0
Local 1: O Class: TXBROWSE
_FWH
Param 1: N 0
Param 2: N 15
Param 3: N 0
Param 4: N 0
Param 5: N 23
Local 1: O Class: TXBROWSE
DIALOGBOXINDIRECT
Param 1: N 4194304
Param 2: C "€ È€    â ° F i v e W i n f o r H a r b o u r  P 4  u  Ÿ S T A T I C E r r o r d e s c r i p t i o n : E r r o r B A S E / 1 0 0 4 C l a s s : ' L O G I C A L ' h a s n o e x p o r t e d m e t h o d : E V A L

P   H    S T A T I C & S t a c k L i s t  ¡P  ! Ü  ¡ L I S T B O X  P a ¢  ¢ B U T T O N & Q u i t P ¯  / £ B U T T O N S e e e r r o r . l o g f i l e "
Param 3: N 394796
Param 4: O Class: TDIALOG
TDIALOG:ACTIVATE
Param 1: U
Param 2: U
Param 3: B {|| ... }
Param 4: L .T.
Param 5: U
Param 6: L .T.
Param 7: U
Param 8: U
Param 9: U
Param 10: L .F.
Param 11: L .F.
Local 1: O Class: TDIALOG
Local 2: N 394796
Local 3: U
Local 4: U
Local 5: U
Local 6: O Class: TDIALOG
ERRORDIALOG
Param 1: O Class: ERROR
Local 1: O Class: TDIALOG
Local 2: O Class: TLISTBOX
Local 3: U
Local 4: U
Local 5: C " Called from: => EVAL( 0 )"
Local 6: N 11
Local 7: C " Error description: Error BASE/1004 Class: 'LOGICAL' has no exported method: EVAL
"
Local 8: A Len: 21
Local 9: O Class: TSAY
Local 10: N -66776180
Local 11: N 1


Este error se produce al activar la ventana que contiene este Browse :
Code (fw): Select all Collapse
       aCampos := {oDbDiario:Fields( 0):NAME,oDbDiario:Fields( 1):NAME,;
                   oDbDiario:Fields( 2):NAME,oDbDiario:Fields( 3):NAME,;
                   oDbDiario:Fields( 4):NAME,oDbDiario:Fields( 5):NAME,;
                   oDbDiario:Fields( 6):NAME,oDbDiario:Fields( 7):NAME,;
                   oDbDiario:Fields( 8):NAME,oDbDiario:Fields( 9):NAME,;
                   oDbDiario:Fields(10):NAME,oDbDiario:Fields(11):NAME,;
                   oDbDiario:Fields(14):NAME,oDbDiario:Fields(15):NAME,;
                   oDbDiario:Fields(16):NAME,oDbDiario:Fields(17):NAME,;                                                         
                   oDbDiario:Fields(18):NAME,oDbDiario:Fields(13):NAME,;
                   oDbDiario:Fields(12):NAME }
                   
       oLbx := TXBrowse():New( oWChild ) 
       oLbx:SetAdo( oDbDiario, .T.,.T.,aCampos)
    
       WITH OBJECT oLbx
            :lColDividerComplete := .t. 
            :nMarqueeStyle       := 3
            :nColDividerStyle    := 1
            :nHeaderLines        := 2
            :lFooter             := .t.
            :nStretchCol         := 1
            :bClrSelFocus  := { || { CLR_BLACK, aSelGrad } }
            :bClrRowFocus  := { || { CLR_BLACK, aRowGrad } }  
            :bClrStd       := {|| IIF(oDbDiario:AbsolutePosition % 2 == 0,{ CLR_BLACK, RGB( 224, 236, 255 ) }, { CLR_BLACK, RGB( 189, 211, 253 ) } )} 
            :CreateFromCode()  
            :Adjust() 
            :l2007 := .T.
       END
    
       for nFor := 1 to len( oLbx:aCols ) 
           oCol := oLbx:aCols[ nFor ] 
           oCol:nEditType := 0 
           oCol:blDClickData := {|| CtrDiario(ID_MOD),oLbx:Refresh() }
           If nFor == 11 .or. nFor == 13 .or. nFor == 15
              Msginfo( valtype(oCol:Value()) )---------------------------------------> esto me devuelve que el tipo es Lógico
              MsgInfo(oCol:Value()) --------------------------------------------------> esto me devuelve que el valor es falso (.f.)
              oLbx:aCols[nFor]:SetCheck ({"CHECKON","CHECKOFF"} ) -------------> tanto si lo pongo aquí como si lo pongo un poco  más abajo el error salta igual
           EndIf
       next 
    
*       oLbx:aCols[11]:SetCheck ({"CHECKON","CHECKOFF"} )
*       oLbx:aCols[13]:SetCheck ({"CHECKON","CHECKOFF"} )    
*       oLbx:aCols[15]:SetCheck ({"CHECKON","CHECKOFF"} )                    
    
       oWChild:oClient := oLbx 
    ACTIVATE WINDOW oWChild MAXIMIZED ;
             ON INIT oLbx:SetFocus();     
             VALID( oMenu:Enable(),oDbDiario:Close(),oDbDiario := "Nothing", .t. )

    SysRefresh()
    RELEASE FONT oFontPac
return( nil )


Alguna ayuda sobre este error ?
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
Posts: 464
Joined: Tue Mar 21, 2006 07:30 PM
Re: Error en xBrowse con ADO
Posted: Sat Apr 14, 2012 09:01 PM
Después de muchas pruebas, me doy cuenta de que si quito la línea del Setcheck, no se me produce el error y me presenta el browse.
Es un bug del xBrowse que, si al evaluar bStrData en ADO, si es un campo lógico y quieres ponerle un par de bitmaps, de un error de evaluación ?
En concreto donde da el error en xBrowse es aqui :

if ::bStrData != nil //.and. !::hChecked
cData := Eval( ::bStrData )
<------------------------------aquí es donde da el error cuando usas el setcheck
if ValType( cData ) != 'C'
cData := cValToChar( cData )
endif
if ! Empty( ::nDataStrAlign )
cData := AllTrim( cData )
endif
if isrtf( cData )
cData := "<RichText>"
elseif isGtf( cData )
cData := GtfToTxt( cData )
endif
else
cData := ""
endif
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO

Continue the discussion