Tengo un módulo que visualiza datos de un DBF.
Para establecer los datos a mostrar utilizo el OrdScope:
//Aplica límites de lectura.
SELECT 1
SET SOFTSEEK ON
DBSEEK(cNroCUIT+DTOS(dDesde))
SET SOFTSEEK OFF
IF EOF()
ALERT("Cliente
sin movimientos.")
RESTSCREEN(,,,,Pant_Princ)
END
ORDSCOPE(TOPSCOPE,cNroCUIT+DTOS(dDesde))
ORDSCOPE(BOTTOMSCOPE,cNroCUIT+DTOS(dHasta))
Luego de esto genero el objeto TBrowse:
oObj:= TBrowseDB(5,1,22,78)
oObj:colSep := COLSEP
oObj:headSep := HEADSEP
oObj:footSep := FOOTSEP
//TBColumn
objects
column := TBColumnNew( " Fecha ", {|| Fecha_Vta
})
oObj:addColumn( column )
column := TBColumnNew( "Tp", {|| TipCom_Vta})
oObj:addColumn( column )
//…… y otros campos más
WHILE .T.
WHILE ( !oObj:stabilize() )
END
IF ( oObj:stable
)
nKey
:= InKey()
END
// Process key
IF !TBMoveCursor(
oObj, nKey )
IF ( nKey == K_ESC )
EXIT
END
END
END
Al ejecutar el programa en modo protegido, el browser solo visualiza las 2 primeras columnas, dejando en
blanco las siguientes, y luego de intentar navegar 3 o 4 registros sale dis sistema con el siguiente error:
Called line 0 in (b)MENU_CREAT
Called line 0 in REQUER_AFI
BLX286 : 1313 : exception error 0D : general protection fault,
code = 0000h
Active host is DPMI (v5.10
iP6 15360 Kb)
Reg Value Limit Base
Flags Segment Module
File
CS 0257
F719 02A064CC FB00
0B SISTEMA C:\SPI\V60\SISTEMA.EXE
DS 02AF
FFFF 029F64CC F300
16 SISTEMA C:\SPI\V60\SISTEMA.EXE
ES 05DF
3FFF 02B6AA40 F300
****
SS 02AF
FFFF 029F64CC F300
16 SISTEMA C:\SPI\V60\SISTEMA.EXE
[Code byte
CS] C5 76 0A 8B 4E 0E D1 E9 [IP] F3 A5 73 01 A4 1F 5E 5F 8B E5
[Registers] AX=0004 BX=0276 CX=0002
DX=05DF CS:IP=0257:2510
SI=6A36 DI=4138 BP=69F2
SP=69EC
FL=3212 NV UP EI NT PL NZ AC
[Stack value SS] 69F2 69F2 0085 0277 1426 6A40 69EA 75A2 0257 02E8 02AF 69FA
[SP] 02AF 1426 6A40
6A50 0C7B 0277 4138 05DF 6A36 02AF 0004 001E
[Stack frame
SS] 0277 1426 6A40 69EA 75A2 0257 02E8 02AF 69FA 02AF 1426 6A40
[BP] 6A50
0C7B 0277 4138 05DF 6A36 02AF 0004 001E 6E4E 0024 0260
Si el mismo programa lo compilo en modo real aparece el
siguiente error:
Unrecoverable error 415:
Cannot open overlay file '
run-time error R6001
- null
pointer assignment
Aparentemente el error se produce en la siguiente línea:
WHILE ( !oObj:stabilize() )
Si al código le saco los OrdScope
y los reemplazo por Set Filter,
todo funciona muy bien, pero el problema es que con el Set
Filter en un ambiente de red es extremadamente lento.
Me falta algo en el código para compatibilizar el OrdScope con el TBrowse?
Gerardo J. Biagiotti
Analista de Sistemas
Marcos Juárez - Córdoba
Argentina
biagiotti@...