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"