Page 1 of 1

XBROWSE con array

PostPosted: Wed Mar 28, 2012 9:17 pm
by FranciscoA
Amigos del foro.
¿Algunos de ustedes han utilizado esta function?
Bueno, el caso es que le he encontrado de mucha utilidad. Con objetos (Xbrowse(oTabla) trabaja de maravilla, pero... con un simple array de una sola columna da este error si el usuario por casualidad arrastra la barra horizontal hasta el final hacia la derecha:

Application
===========
Path and name: H:\FAPSOFT\NEWCONT32_MYSQL\Wcont32.Exe (32 bits)
Size: 2,254,336 bytes
Time from start: 0 hours 1 mins 36 secs
Error occurred at: 28/03/2012, 14:43:11
Error description: Error BASE/1132 Bound error: array access
Args:
[ 1] = A { ... }
[ 2] = N 0

Stack Calls
===========
Called from: XBROWSE.PRG => (b)TXBROWSE:TXBROWSE(499)
Called from: => TXBROWSE:COLATPOS(0)
Called from: XBROWSE.PRG => (b)TXBROWSE:TXBROWSE(501)
Called from: => TXBROWSE:SELECTEDCOL(0)
Called from: XBROWSE.PRG => TXBROWSE:PAINT(1223)
Called from: XBROWSE.PRG => TXBROWSE:DISPLAY(1205)
Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT(1458)
Called from: XBROWSE.PRG => TXBROWSE:HANDLEEVENT(10761)
Called from: .\source\classes\WINDOW.PRG => _FWH(3391)
Called from: => DIALOGBOXINDIRECT(0)
Called from: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE(273)
Called from: .\source\function\ERRSYSW.PRG => ERRORDIALOG(366)
Called from: .\source\function\ERRSYSW.PRG => (b)ERRORSYS(27)
Called from: XBROWSE.PRG => (b)TXBROWSE:TXBROWSE(499)
Called from: => TXBROWSE:COLATPOS(0)
Called from: XBROWSE.PRG => (b)TXBROWSE:TXBROWSE(501)
Called from: => TXBROWSE:SELECTEDCOL(0)
Called from: XBROWSE.PRG => TXBROWSE:PAINT(1223)
Called from: XBROWSE.PRG => TXBROWSE:DISPLAY(1205)
Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT(1458)
Called from: XBROWSE.PRG => TXBROWSE:HANDLEEVENT(10761)
Called from: .\source\classes\WINDOW.PRG => _FWH(3391)
Called from: => DIALOGBOXINDIRECT(0)
Called from: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE(273)
Called from: .\source\function\ERRSYSW.PRG => ERRORDIALOG(366)
Called from: .\source\function\ERRSYSW.PRG => (b)ERRORSYS(27)
Called from: XBROWSE.PRG => (b)TXBROWSE:TXBROWSE(499)
Called from: => TXBROWSE:COLATPOS(0)
Called from: XBROWSE.PRG => (b)TXBROWSE:TXBROWSE(501)
Called from: => TXBROWSE:SELECTEDCOL(0)
Called from: XBROWSE.PRG => TXBROWSE:PAINT(1223)
Called from: XBROWSE.PRG => TXBROWSE:DISPLAY(1205)
Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT(1458)
Called from: XBROWSE.PRG => TXBROWSE:HANDLEEVENT(10761)
Called from: .\source\classes\WINDOW.PRG => _FWH(3391)
Called from: => DIALOGBOXINDIRECT(0)
Called from: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE(273)
Called from: .\source\function\XBROWSER.PRG => XBROWSE(136)
Called from: H:\FAPSOFT\NEWCONT32_MYSQL\wcont32.prg => IMPORTE(168)

Para muestra, este diminuto ejemplo:

include....

Code: Select all  Expand view
Function prueba()
locaL aData:={}
     AADD( aData, "Documento Numero tal... contiene codificacion incompleta, en blanco, o no existe en Catalogo de Cuentas" )
     AADD( aData,"La Cuenta es: xxxxxxxxxx. Revise el documento descrito y modifiquelo.")
     AADD( aData," ")

xBrowse(aData,"Documentacion erronea")

Return nil


A alguien le ha sucedido? Como lo ha solucionado? Mi version en FWH 10.06
Gracias.

Saludos.

Re: XBROWSE con array

PostPosted: Thu Mar 29, 2012 11:12 am
by horacio
No he usado esa función pero me parece que el Array está mal conformado. He trabajado extensamente xbrowse con vectores y me dá que tendrías que armarlo de esta manera

Code: Select all  Expand view

Function prueba()
locaL aData:={}
     AADD( aData, { "Documento Numero tal... contiene codificacion incompleta, en blanco, o no existe en Catalogo de Cuentas" } )
     AADD( aData,{"La Cuenta es: xxxxxxxxxx. Revise el documento descrito y modifiquelo."})
     AADD( aData,{" "})

xBrowse(aData,"Documentacion erronea")
Return nil
 

No sé si es lo que necesitas, Saludos

Re: XBROWSE con array

PostPosted: Thu Mar 29, 2012 3:55 pm
by FranciscoA
Horacio, gracias por contestar.
¿Probaste mi ejemplo?... ¿Y el tuyo?... Ambos presentan el mismo error. Si arrastras el Scroll horizontal hacia la derecha hasta el limite, verás el error que te digo. Creo que debe haber un pequeño bug en XBROWSER.PRG que esta en la carpeta \SOURCE\FUNCTIONS. (FWH Ver. 10.06)

De la manera en que construyo el array, la function MSGLIST() funciona correctamente, pero he decidido cambiar a xBrowse(aData) por cuestiones de presentación y la posibilidad de ejecutar otras opciones desde el xBrowse().

Saludos.

Re: XBROWSE con array

PostPosted: Thu Mar 29, 2012 4:47 pm
by Francisco Horta
Tocayo,
No lo he revisado, pero si mientras quieres salir al quite, haz este pequeño truco a ver si te funciona,

locaL aData:={}
AADD( aData, { "Documento Numero tal... contiene codificacion incompleta, en blanco, o no existe en Catalogo de Cuentas" ,""} )
AADD( aData,{"La Cuenta es: xxxxxxxxxx. Revise el documento descrito y modifiquelo.",""})
AADD( aData,{" ",""})

oBrw := TXBrowse():New( oDlg )

oBrw:SetArray(aData)
oBrw:aCols[2]:lHide := .T.

saludos
paco

Re: XBROWSE con array

PostPosted: Thu Mar 29, 2012 5:15 pm
by FranciscoA
Hola tocayo. Gracias por tu amabilidad.

Francisco Horta wrote:Tocayo,
No lo he revisado, pero si mientras quieres salir al quite, haz este pequeño truco a ver si te funciona,

locaL aData:={}
AADD( aData, { "Documento Numero tal... contiene codificacion incompleta, en blanco, o no existe en Catalogo de Cuentas" ,""} )
AADD( aData,{"La Cuenta es: xxxxxxxxxx. Revise el documento descrito y modifiquelo.",""})
AADD( aData,{" ",""})

oBrw := TXBrowse():New( oDlg )

oBrw:SetArray(aData)
oBrw:aCols[2]:lHide := .T.

saludos
paco


Estoy de acuerdo contigo, si yo creara el oBrw tal como lo indicas.

El caso es que estoy haciendo uso directo de la Function XBROWSE que viene incluida en \SOURCE\FUNCTIONS.
Como expliqué en el primer post, trabaja muy bien con objetos ( xBrowse(oTabla) ), pero cuando es un array de una sola columna falla. Aquí, parte de la function referida:

Code: Select all  Expand view
#include 'fivewin.ch'
#include 'xbrowse.ch'

// This function supports XBROWSER command
// Can be used directly or through XBROWSER command

//----------------------------------------------------------------------------//

function XBrowse( uData, cTitle, lAutoSort, bSetUp, aCols, bSelect, lExcel, lFastEdit )

   local oDlg, oBrw, oFont, nSaveSelect
   local nWd, nHt
   local cDbf, cAlias
   local lAddCols := Empty( aCols )
   local bInit

   DEFAULT  uData    := Alias(), ;
            cTitle   := If( ValType( uData ) == 'C', uData, ;
                        If( ValType( uData ) == 'O', uData:ClassName(), ;
                        'XBROWSE' ) ), ;
            lAutoSort:= .f., ;
            bSetUp   := { || nil },;
            lExcel   := .t.


En cuanto tenga tiempo voy a revisar esta function, y si encuentro algo lo posteo.

Saludos.

Re: XBROWSE con array

PostPosted: Thu Mar 29, 2012 8:48 pm
by horacio
Francisco, como te dije no he probado esa funcionalidad. Supongo, tal vez me equivoque, que el funcionamiento debe ser similar si parametrizaras el browser desde el inicio. Cuál es la versión de FWH que utilizas ??? Un Saludo

Re: XBROWSE con array

PostPosted: Thu Mar 29, 2012 9:03 pm
by FranciscoA
Horacio, gracias por tu interes. Bueno tuve que recurrir a un objeto cargando una sentencia Sql, y asi si funciona.

Code: Select all  Expand view
oDocuError:=oServer:Query("SELECT fechemis,codicont,td,numdoc FROM " + cTbImporte + " WHERE codicont NOT IN (SELECT codicont FROM catalogo);")

xBrowse(oDocuError,"DOCUMENTOS CON CODIFICACION ERRONEA (Tome nota y corrijalos)")


Gracias a todos.

Saludos.

Re: XBROWSE con array

PostPosted: Fri Apr 06, 2012 4:19 pm
by nageswaragunupudi
There was a bug in xbrowse in older versions. Using Horizontal scroll in a browse with single column was giving runtime error. This was fixed quite sometime back.

Workaround is to either set oBrw:lHScroll := .f. in the older versions.

Re: XBROWSE con array

PostPosted: Sat Apr 07, 2012 3:08 pm
by FranciscoA
Gracias Nages.
Saludos.