FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Error en Xbrowse
Posts: 470
Joined: Fri Feb 05, 2010 11:30 AM
Error en Xbrowse
Posted: Mon Nov 17, 2014 08:07 PM
Amigos,
me está dando el siguiente error en algunos browses después que cambié a la versión 14.09:

Application
===========
Path and name: D:\Univ@c.SGE\UNIVAC.EXE (32 bits)
Size: 7,717,888 bytes
Compiler version: Harbour 3.2.0dev (r1406271520)
FiveWin Version: FWH 14.09
Windows version: 6.1, Build 7601 Service Pack 1

Time from start: 0 hours 0 mins 18 secs
Error occurred at: 17-11-2014, 17:04:15
Error description: Error BASE/1081 Error de argumento: +
Args:
[ 1] = U
[ 2] = N 2

Stack Calls
===========
Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:LASTDISPLAYPOS( 2177 )
Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:PAINT( 1424 )
Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:DISPLAY( 1367 )
Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1699 )
Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:HANDLEEVENT( 12584 )
Called from: .\source\classes\WINDOW.PRG => _FWH( 3341 )
Called from: => DIALOGBOX( 0 )


Que puedo estar haciendo mal o debo corregir?
Gracias!
Roberto
Univ@c I.S.I.
Desarrolladores de Software
http://www.elcolegioencasa.ar
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: Error en Xbrowse
Posted: Tue Nov 18, 2014 02:10 AM

Le estas sumando a un campo numerico, un objeto, si estas usando TDolphin, lo mas seguro es que tu campo aunque es de tipo numerico, esta predeterminado como NIL, si es eso, avisa para darte como lo solucione, si no usas TDolphin, entonces fijate que tu campos o var sumados, tengan valor numerico, saludos... :shock:

Dios no está muerto...



Gracias a mi Dios ante todo!
Posts: 470
Joined: Fri Feb 05, 2010 11:30 AM
Re: Error en Xbrowse
Posted: Tue Nov 18, 2014 11:18 AM

Gracias José Luis,
si uso TDolphin, y es probable que uso campos numéricos en mis xbrowses, el tema
que antes no daba error, es a partir que comencé a utilizar la versión 14.09.
La consulta es:
tengo que modificar todos mis browses donde tengo campos numéricos?
y,
como debería definirlos?

Muchas Gracias!
Roberto

Univ@c I.S.I.
Desarrolladores de Software
http://www.elcolegioencasa.ar
Posts: 470
Joined: Fri Feb 05, 2010 11:30 AM
Re: Error en Xbrowse
Posted: Tue Nov 18, 2014 11:36 AM
Antonio/Rao:
me está dando en muchos de mis browses: (fw14.09)

Time from start: 0 hours 0 mins 31 secs
Error occurred at: 18-11-2014, 08:28:41
Error description: Error BASE/1081 Error de argumento: +
Args:
[ 1] = U
[ 2] = N 2

Stack Calls
===========
Called from: HARBOUR\XBROWSE.PRG => TXBROWSE:ISDISPLAYPOSVISIBLE( 2148 )
Called from: HARBOUR\XBROWSE.PRG => TXBROWSE:GORIGHT( 2695 )
Called from: HARBOUR\XBROWSE.PRG => TXBROWSE:HSCROLL( 2539 )
Called from: => TWINDOW:HANDLEEVENT( 0 )
Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1733 )
Called from: HARBOUR\XBROWSE.PRG => TXBROWSE:HANDLEEVENT( 12902 )
Called from: .\source\classes\WINDOW.PRG => _FWH( 3341 )
Called from: => DIALOGBOXINDIRECT( 0 )
Called from: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE( 283 )
Called from: .\source\function\ERRSYSW.PRG => ERRORDIALOG( 420 )
Called from: .\source\function\ERRSYSW.PRG => (b)ERRORSYS( 23 )
Called from: HARBOUR\XBROWSE.PRG => TXBROWSE:ISDISPLAYPOSVISIBLE( 2148 )
Called from: HARBOUR\XBROWSE.PRG => TXBROWSE:GORIGHT( 2695 )


Que estoy haciendo mal? O que me está faltando definir?
Roberto
Univ@c I.S.I.
Desarrolladores de Software
http://www.elcolegioencasa.ar
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: Error en Xbrowse
Posted: Tue Nov 18, 2014 03:40 PM

Ok, fijate, para probar, en tu tabla, a los campos que son de tipo numerico y que su valor sea NIL hasle un UPDATE por cero(0), si no usas ese valor para validar algo en tu sistema, tuve que hacer actualizaciones pero en mis tablas, como la forma de definir mis campos en el DEFAULT, los tipo char y varchar, los defini como Empty String y los int y decimal en mi caso, los defini en cero(0), prueba por los momentos con esa tabla donde alimentas tu xbrowse haber si eso te resuelve, sino, se buscara otra solucion haber cual es tu detalle, recuerda lo que te comente de inicializar las VAR que se suman que no queden de tipo NULL, saludos... :shock:

Dios no está muerto...



Gracias a mi Dios ante todo!
Posts: 470
Joined: Fri Feb 05, 2010 11:30 AM
Re: Error en Xbrowse
Posted: Thu Nov 20, 2014 08:54 PM
Y nada.... :-)
Llevo haciendo mil pruebas con campos numéricos, alfabéticos, null, not null y siempre da el error.
El error se produce en los xbrowse donde les borro todas las columnas y las vuelvo a crear en tiempo
de ejecución:

Cuando las borro hago:

FOR V:=LEN(oBrw:aCols) TO 1 STEP -1
oBrw:DelCol(V)
NEXT


y después recargo de la siguiente manera:

RECARGA(oBrw,TITULO,ANCHO,DATOS,JUSTIFI)

le cargo datos según lo que necesite.

STAT FUNC RECARGA(oBrw,TITULO,ANCHO,DATOS,JUSTIFI)
oBrw:AddCol()
oBrw:aCols[nCol]:=TITULO
oBrw:aCols[nCol]:nWidth :=ANCHO
oBrw:aCols[nCol]:bClrStd :={|| {COLOR,CLR_WHITE}}
oBrw:aCols[nCol]:bStrData :=DATOS
oBrw:aCols[nCol]:nDataStrAlign:=JUSTIFI
RETURN NIL


Y cuando recarga, da el error que expuse más arriba:
Stack Calls
===========
Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:LASTDISPLAYPOS( 2177 )
Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:PAINT( 1424 )
Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:DISPLAY( 1367 )
Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1699 )
Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:HANDLEEVENT( 12584 )
Called from: .\source\classes\WINDOW.PRG => _FWH( 3341 )
Called from: => DIALOGBOX( 0 )


Una ayuda... porfa.....
Muchas gracias!
Roberto
Univ@c I.S.I.
Desarrolladores de Software
http://www.elcolegioencasa.ar
Posts: 470
Joined: Fri Feb 05, 2010 11:30 AM
Re: Error en Xbrowse
Posted: Fri Nov 21, 2014 11:20 AM

Antonio/Mr Rao... please....!
Gracias!
Roberto

Univ@c I.S.I.
Desarrolladores de Software
http://www.elcolegioencasa.ar
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: Error en Xbrowse
Posted: Fri Nov 21, 2014 12:56 PM

Roberto,

Si el error es en la línea 2148 el código es este en xbrowse.prg:

  nWidth += ::ColAtPos( nPos ):nWidth + COL_SEPARATOR

revisando por que da error...

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: Error en Xbrowse
Posted: Fri Nov 21, 2014 12:59 PM

En la línea 2177 tenemos:

do while nPos <= nLen .and. nWidth < nMaxWidth

Roberto, puedes comprobar si tienes el mismo código en tu xbrowse.prg en esas líneas ? gracias

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: Error en Xbrowse
Posted: Fri Nov 21, 2014 01:10 PM

Y pudes comprobar este valor ?

Msginfo( oBrowse:nRecSelWidth )

gracias!

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 470
Joined: Fri Feb 05, 2010 11:30 AM
Re: Error en Xbrowse
Posted: Fri Nov 21, 2014 01:51 PM

Antonio, gracias por responder, y disculpas por las molestias.
Si, tengo el mismo código porque uso el xbrowse nativo de la 14.09,

Msginfo( oBrw:nRecSelWidth ) me devuelve 25

Roberto

Univ@c I.S.I.
Desarrolladores de Software
http://www.elcolegioencasa.ar
Posts: 470
Joined: Fri Feb 05, 2010 11:30 AM
Re: Error en Xbrowse
Posted: Sat Nov 22, 2014 12:42 PM
Amigos,
puede que el error esté en la definición de mi browse?
mi diálogo es así:

DEFINE DIALOG oDlg RESOURCE "CONTROL" FONT oFont
REDEFINE XBROWSE oBrw ID 111 HEADERS "" COLSIZES 0 ;
ARRAY NOTAS LINES CELL NOBORDER OF oDlg
oBrw:nMarqueeStyle :=MARQSTYLE_HIGHLROW
oBrw:lMultiSelect :=.F.
oBrw:lRecordSelector:=.F.
oBrw:bClrSel :={|| {CLR_BLUE,CLR_FONDO}}
oBrw:nFreeze :=1
REDEFINE BUTTON IF 112 OF oDlg ACTION RECARGA()
ACTIVATE ....

Y en esa función RECARGA(), relleno el browse con las columnas que necesito de acuerdo a mis necesidades.

Por ejemplo:

STAT FUNC RECARGA()
LOCAL VECTOR:={{"1","2","3"})
oBrw:AddCol()
oBrw:aCols[1]:="Dato 1"
oBrw:aCols[1]:nWidth :=20
oBrw:aCols[1]:={|| VECTOR[oBrw][1]}
oBrw:aCols[1]:nDataStrAlign:=AL_CENTER
oBrw:AddCol()
oBrw:aCols[2]:="Dato 2"
oBrw:aCols[2]:nWidth :=20
oBrw:aCols[2]:={|| VECTOR[oBrw][2]}
oBrw:aCols[2]:nDataStrAlign:=AL_CENTER
oBrw:AddCol()
oBrw:aCols[3]:="Dato 3"
oBrw:aCols[3]:nWidth :=20
oBrw:aCols[3]:={|| VECTOR[oBrw][3]}
oBrw:aCols[3]:nDataStrAlign:=AL_CENTER
oBrw:Refresh()
RETURN NIL


Así sería más o menos la idea de lo que quiero hacer, y, cuando recargo mi browse, da el error mostrado más arriba.
Muchas gracias y disculpas por la insistencia...
Roberto
Univ@c I.S.I.
Desarrolladores de Software
http://www.elcolegioencasa.ar
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: Error en Xbrowse
Posted: Sat Nov 22, 2014 06:56 PM
Roberto.
Aaqui tenés un ejemplo compilable que puede serte util, o al menos servirte de guia, a vos o alguien mas.

Code (fw): Select all Collapse
 #include "FiveWin.ch"
 #INCLUDE "XBROWSE.CH"

//------------------------------------------------
Function RecargarXBrw()
local oDlg, oBrw

local aTits  := {"Nombre","Ciudad"}
local aCols := {{"First"},{"City"}}

local aTitCols := {"Nombre","Apellido","Calle","Ciudad"}
local aCampos  := {"First","Last","Street","City"}

local aTitC := {"Nombre","Calle","Ciudad"}
local aCamp := {"First","Street","City"}

   DEFINE DIALOG oDlg SIZE 640,400 PIXEL 

   @ 30,10 XBROWSE oBrw SIZE -10,-10 PIXEL OF oDlg ;  
      COLUMNS aCols ;
      HEADERS aTits ;
      ARRAY aCols CELL LINES NOBORDER

   oBrw:CreateFromCode()

   @ 10,10 BUTTON "Recargar" SIZE 40,12 PIXEL OF oDlg ACTION ( Recarga(oBrw,aTitCols,aCampos,120) )
   @ 10,70 BUTTON "Recargar2" SIZE 40,12 PIXEL OF oDlg ACTION ( Recarga(oBrw,aTitC,aCamp,150) )

   ACTIVATE DIALOG oDlg CENTERED
return nil

//------------------------------------------
Function Recarga(oBrw,aTitCols,aCampos,nWdCols)
local cAlias, aData:={}

USE CUSTOMER NEW 
DBSELECTAREA("CUSTOMER")
cAlias := Alias()

xDbf2Arr(cAlias,aData,aCampos)  //Convertir dbf a Array

CUSTOMER->(DBCLOSEAREA())

oBrw:SetArray(aData,.t.,1,.t.)
oBrw:cHeaders := aTitCols
AEval(oBrw:aCols,{|o,n,oCol| o:nWidth := nWdCols })
oBrw:Refresh(.t.)
oBrw:SetFocus()

RETURN NIL

//-----------------------------
Function xDbf2Arr(cAlias,aData,aCampos)
local aDat, n

For n := 1 to len(aCampos)   //POR SI ACA...
   aCampos[n]:= Upper(aCampos[n])
Next

(cAlias)->(dbgotop())

While !eof()  
    aDat:={}
    For n:=1 to FCount()
       if ASCAN(aCampos, (cAlias)->(FieldName(n)) ) != 0
          aadd(aDat,(cAlias)->(FieldGet(n)) )
       endif
    Next
    aadd(aData,aDat)
    dbSkip()
Enddo
SysRefresh()
Return nil


Espero te ayude a solucionar tu problema.
Saludos.
Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 1710
Joined: Tue Oct 28, 2008 06:26 PM
Re: Error en Xbrowse
Posted: Sun Nov 23, 2014 01:45 PM

El xBrowse de FWH 14.09
No está permitiendo campos numéricos, obliga a poner TRANSFORM(NRO,"@Z") antes no era necesario.

Saludos,

Adhemar

Saludos,



Adhemar C.
Posts: 470
Joined: Fri Feb 05, 2010 11:30 AM
Re: Error en Xbrowse
Posted: Mon Nov 24, 2014 01:24 AM

Gracias Adhemar, entonces como sería un ejemplito? muchas gracias!

Univ@c I.S.I.
Desarrolladores de Software
http://www.elcolegioencasa.ar