Page 1 of 1

Apertura de Dbf con Nombres largos

Posted: Wed Jun 06, 2007 7:34 pm
by servicomver
Hola:
Requiero abrir bases de datos de un sistema el cual tiene mas de 8 caracteres, por ejemplo:
tb15050701.dbf

hay alguna forma de abrirla sin necesidad de renombrarla o copiarla a 8 caracteres ?????

use fw23,blinker 6.0, clip53

gracias x su ayuda
salu2
veracruz, mexico

Re: Apertura de Dbf con Nombres largos

Posted: Wed Jun 06, 2007 8:12 pm
by JmGarcia
Yo tengo esta funcion que convierte nombres largos en cortos...

Code: Select all

function cShortName( cLong )
local cShort :=space(164)+Chr(0)
local nBuffer:=164
local nLen
nLen  :=GetSPName(cLong,@cShort,nBuffer)
cShort:=left(cShort,nLen)
return cShort
DLL32 STATIC FUNCTION GetSPName(lpszLongPath AS STRING,;
                                lpszShortPath AS STRING,;
                                lBuffer AS LONG ) ;
                      AS LONG PASCAL FROM "GetShortPathNameA" LIB "kernel32"
Haz algo asi dbUseArea(.T.,"",cShortName(cNombreLargo),"DBF"), en tu caso dbUseArea(.T.,"",cShortName("tb15050701.dbf"),"DBF")

Por si quieres te doy la funcion inversa:

Code: Select all

function cLongName(cShort)
local cLong:=space(164)+chr(0)
local nBuffer:=164
local nLen
nLen:=GetLPName(cShort,@cLong,nBuffer)
cLong:=left(cLong,nLen) && Quitar para Windows NT
return cLong
DLL32 STATIC FUNCTION GetLPName(lpszShortPath AS STRING,;
                                lpszLongPath AS STRING,;
                                lBuffer AS LONG) ;
                      AS LONG PASCAL FROM "GetLongPathNameA" LIB "kernel32"