Page 1 of 2
Error en Xbrowse
Posted:
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
Posted:
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...
Re: Error en Xbrowse
Posted:
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
Posted:
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
Posted:
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...
Re: Error en Xbrowse
Posted:
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)
NEXTy 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 NILY 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
Posted:
Fri Nov 21, 2014 11:20 am
by TOTOVIOTTI
Antonio/Mr Rao... please....!
Gracias!
Roberto
Re: Error en Xbrowse
Posted:
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
Posted:
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
Posted:
Fri Nov 21, 2014 1:10 pm
by Antonio Linares
Y pudes comprobar este valor ?
Msginfo( oBrowse:nRecSelWidth )
gracias!
Re: Error en Xbrowse
Posted:
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
Posted:
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
Posted:
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
Posted:
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
Posted:
Mon Nov 24, 2014 1:24 am
by TOTOVIOTTI
Gracias Adhemar, entonces como sería un ejemplito? muchas gracias!