Page 1 of 1
abrir un archivo usando nombre un un dato guardado en archiv
Posted: Thu Dec 20, 2007 8:55 pm
by anaysis
Saludos, amigos programo en FW2.7 + clipper 5.3 + blinker, tengo el siguiente problema, necesito abrir un archivo cuyo nombre lo tengo almacenado en una base de datos, es decir:
TABLA-NOM_BAS = char(8)
TABLA-NOM_BAS ( P111 ), (p112), (p304), es decir segun lo que se almacene en TABLA, se crea un archivo con ese nombre y lo hace bien, pero cuando lo quiero abrir como :
use (tabla-nom_bas)
y nada
base = tabla-nom_bas
use (base) nada
use &base
nada
me sale error dbfcdx/1020
Posted: Thu Dec 20, 2007 11:35 pm
by Antonio Linares
Prueba a quitarle los posibles espacios al final del nombre y comprueba si existe el fichero:
MsgInfo( File( AllTrim( tabla-nom_bas ) ) )
A ver si te muestra .T.
antonio, me sale .F.
Posted: Fri Dec 21, 2007 2:48 pm
by anaysis
Antonio, gracias por responder, el resultado es el mismo, me sale como respuesta a:
MsgInfo( File( AllTrim( Tabla->Base ) ) )
.F.
lo malo es que el archivo si existe, es mas cuando yo digito
base="P112", Lo encuentra y abre, pero si dejo a
base=tabla-nom_bas, me sale ese mensaje oy este error
Application
===========
Path and name: C:\EAA\GESTION.dwd
Size: 0 bytes
Max files handles permited: ( SetHandleCount() ) 100
Error ocurred at: 21/12/2007, 11:41:58
Error description: Error _DBFCDX/1020 Data type error: P112
Stack Calls
===========
Called from LOCKERRHAN(0)
Called from (b)INITHANDL$(0)
Called from DBUSEAREA(0)
Called from NET_USE(76)
Called from DAT_PROY(6406)
Called from (b)PROY03(6355)
Called from TSBROWSE:LDBLCLICK(4266)
Called from TSBROWSE:HANDLEEVEN(0)
Called from TSBROWSE:HANDLEEVEN(8604)
Called from DIALOGBOX(0)
Called from TDIALOG:ACTIVATE(0)
Called from PROY03(6383)
Called from (b)BUILDMENU(164)
Called from TMENU:COMMAND(0)
Called from TMDIFRAME:COMMAND(0)
Called from TMDIFRAME:COMMAND(0)
Called from TMDIFRAME:HANDLEEVEN(0)
Called from WINRUN(0)
Called from TMDIFRAME:ACTIVATE(0)
Called from MAIN(121)
System
======
CPU type: 486
Hardware memory: 16128 (15 megas)
Free System resources: % 90
GDI resources: % 90
User resources: % 90
Windows and MsDos versions: 3.95, 5. 0
Windows total applications running: 2
1 Explorer.EXE
2 C:\WINDOWS\SYSTEM32\USER.EXE
3 C:\EAA\GESTION.DLL
4 C:\EAA\GESTION.dwd
5 medcx.exe
6 C:\WINDOWS\SYSTEM32\MMSYSTEM.DLL
7 C:\WINDOWS\SYSTEM32\WOWEXEC.EXE
Variables in use
================
Procedure Type Value
==========================
LOCKERRHAN
Param 1: O Class: ERROR
Param 2: B { || ... } CodeBlock
(b)INITHANDL$
Param 1: O Class: ERROR
DBUSEAREA
Param 1: L .F.
Param 2: U
Param 3: C "P112 "
Param 4: U
Param 5: L .T.
Param 6: L .F.
NET_USE
Param 1: C "P112 "
Param 2: L .F.
Param 3: N 1
Local 1: U
Local 2: U
Local 3: U
DAT_PROY
Posted: Fri Dec 21, 2007 2:57 pm
by Antonio Linares
El nombre tiene un espacio de más:
Param 1: C "P112 " <-- fíjate en el espacio al final del nombre!
haz:
base=AllTrim( tabla-nom_bas )
a ver si entiendo
Posted: Fri Dec 21, 2007 3:43 pm
by Ramon Paredes
Anaysis.
a ver si entendí, tienes una tabla con x cantidad de campos en cada uno de ellos lo que guardas es el nombre de otra tanla ?
sie este es el caso , pues asigna una alias a ese campo y listo ya puedes abrirla, ejemplo
TABLA : Mis Bases de Datos
CAMPO1 : Tabla1
Campo2 : Tabla2 etc,.etc
SELECT A
(ABRO LA TABLA TODA )
INDEX ON POR LO QUE QUIERA
SEEK FILA ( ESCOGO LA FILA DONDE ESTA LA TABLA QUE QUIERO ABRIR)
SI NO HAY MAS QUE UNA FILA NO ES NECESARIO
XBASE = A->CAMPO1
SELECT B
USE ( CAMPO1 )
Y LISTO, DEBE FUNCIONARTE, A MI ME FUINCIONA
Posted: Fri Dec 21, 2007 4:50 pm
by carlos vargas
ramon
soy y estoy en nicaragua para cualquier consulta.
donboscocorp2 @ hotmail.com
salu2
carlos vargas