Page 1 of 2

Error en Xbrowse

PostPosted: Mon Nov 17, 2014 8:07 pm
by TOTOVIOTTI
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

Re: Error en Xbrowse

PostPosted: Tue Nov 18, 2014 2:10 am
by joseluisysturiz
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:

Re: Error en Xbrowse

PostPosted: Tue Nov 18, 2014 11:18 am
by TOTOVIOTTI
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

Re: Error en Xbrowse

PostPosted: Tue Nov 18, 2014 11:36 am
by TOTOVIOTTI
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

Re: Error en Xbrowse

PostPosted: Tue Nov 18, 2014 3:40 pm
by joseluisysturiz
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:

Re: Error en Xbrowse

PostPosted: Thu Nov 20, 2014 8:54 pm
by TOTOVIOTTI
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]:cHeader:=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

Re: Error en Xbrowse

PostPosted: Fri Nov 21, 2014 11:20 am
by TOTOVIOTTI
Antonio/Mr Rao... please....!
Gracias!
Roberto

Re: Error en Xbrowse

PostPosted: Fri Nov 21, 2014 12:56 pm
by Antonio Linares
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...

Re: Error en Xbrowse

PostPosted: Fri Nov 21, 2014 12:59 pm
by Antonio Linares
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

Re: Error en Xbrowse

PostPosted: Fri Nov 21, 2014 1:10 pm
by Antonio Linares
Y pudes comprobar este valor ?

Msginfo( oBrowse:nRecSelWidth )

gracias!

Re: Error en Xbrowse

PostPosted: Fri Nov 21, 2014 1:51 pm
by TOTOVIOTTI
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

Re: Error en Xbrowse

PostPosted: Sat Nov 22, 2014 12:42 pm
by TOTOVIOTTI
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]:cHeader:="Dato 1"
oBrw:aCols[1]:nWidth :=20
oBrw:aCols[1]:bStrData:={|| VECTOR[oBrw:nArrayAt][1]}
oBrw:aCols[1]:nDataStrAlign:=AL_CENTER
oBrw:AddCol()
oBrw:aCols[2]:cHeader:="Dato 2"
oBrw:aCols[2]:nWidth :=20
oBrw:aCols[2]:bStrData:={|| VECTOR[oBrw:nArrayAt][2]}
oBrw:aCols[2]:nDataStrAlign:=AL_CENTER
oBrw:AddCol()
oBrw:aCols[3]:cHeader:="Dato 3"
oBrw:aCols[3]:nWidth :=20
oBrw:aCols[3]:bStrData:={|| VECTOR[oBrw:nArrayAt][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

Re: Error en Xbrowse

PostPosted: Sat Nov 22, 2014 6:56 pm
by FranciscoA
Roberto.
Aaqui tenés un ejemplo compilable que puede serte util, o al menos servirte de guia, a vos o alguien mas.

Code: Select all  Expand view
#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.

Re: Error en Xbrowse

PostPosted: Sun Nov 23, 2014 1:45 pm
by acuellar
El xBrowse de FWH 14.09
No está permitiendo campos numéricos, obliga a poner TRANSFORM(NRO,"@Z") antes no era necesario.

Saludos,

Adhemar

Re: Error en Xbrowse

PostPosted: Mon Nov 24, 2014 1:24 am
by TOTOVIOTTI
Gracias Adhemar, entonces como sería un ejemplito? muchas gracias!