Apertura de Dbf con Nombres largos

Post Reply
servicomver
Posts: 159
Joined: Fri Nov 18, 2005 7:34 pm

Apertura de Dbf con Nombres largos

Post 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
User avatar
JmGarcia
Posts: 654
Joined: Mon May 29, 2006 3:14 pm
Location: Madrid - ESPAÑA

Re: Apertura de Dbf con Nombres largos

Post 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"
Mi abuelo decía: Los aviones vuelan porque Dios quiere, y los helicópteros ni Dios sabe porque vuelan.
FWH 16.02, xHarbour 1.2.3, Harbour 3.2.0, WorkShop 4.5, AJ Make 0.30, Borlan BCC 7.00, VisualStudio 2013
Post Reply