Alias

Alias

Postby Sebastián Almirón » Mon May 24, 2021 9:06 am

Hola a todos, recientemente he actualizado FW,Harbour,C Borland... desde una versión antigua (la 13.8), y tengo un problema que supongo que a alguno le habrá pasado.

Tengo una aplicación multiempresa, en el que los nombres de las dbfs están repetidos dentro de la carpeta de cada empresa. En algunos procesos necesito abrir dbfs con el mismo nombre pero de distinta carpeta, pero algo ha cambiado que ahora no puedo darle un alias tal y como lo hacía antes, algo así:
Code: Select all  Expand view
   for x = 1 to len(aempresas)
        cvarcli := dirutaexe()+'\EMP'+aempresas[x,1]+'\database\cliruta'
        caliascli := 'cliruta'+aempresas[x,1]
        use &cvarcli shared new alias &caliascli
        sele &caliascli
        set order to 1

esto en versiones anteriores me funcionaba, con la nueva en la línea del sele, me dice que no existe el alias
¿Ya no se puede indicar un alias mediante &alias?

Saludos
User avatar
Sebastián Almirón
 
Posts: 157
Joined: Mon Dec 12, 2005 9:56 am
Location: Moralzarzal - Spain

Re: Alias

Postby hmpaquito » Mon May 24, 2021 9:15 am

Hola,

Recomiento encarecidamente el uso de paréntesis en vez del operador macroexpansion & que es más lento en ejecucion.

Asi es mejor práctica poner
Code: Select all  Expand view

USE (cVarCli) SHARED NEW ALIAS (cAliasCli)
SELECT (cAliasCli)
 


Con respecto al asunto de fondo, USE es un comando standard de Harbour y no creo que fivewin lo haya renombrado.
Me inclino porque el problema esté en tu código y podría ser este:

Es una mala practica poner directamente USE, es mejor usar Net_Use() para que informe si no se puede abrir una bb.dd. Asi pudo ocurrir que (cAliasCli) estuviera abierta en otro proceso / usuario y no la abriera, luego el comando SELECT falló

Así el código más correcto sería:
Code: Select all  Expand view
SELECT 0
IF !Net_Use(cVarCli, .f., 5, cAliasCli)
   mMsgInfo("No se pudo abrir !!", cVarCli)
   RETURN NIL
ENDIF
SELECT (cAliasCli)
...
 
Saludos
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Alias

Postby Sebastián Almirón » Mon May 24, 2021 9:52 am

hmpaquito wrote:Hola,

Recomiento encarecidamente el uso de paréntesis en vez del operador macroexpansion & que es más lento en ejecucion.

Asi es mejor práctica poner
Code: Select all  Expand view

USE (cVarCli) SHARED NEW ALIAS (cAliasCli)
SELECT (cAliasCli)
 


Con respecto al asunto de fondo, USE es un comando standard de Harbour y no creo que fivewin lo haya renombrado.
Me inclino porque el problema esté en tu código y podría ser este:

Es una mala practica poner directamente USE, es mejor usar Net_Use() para que informe si no se puede abrir una bb.dd. Asi pudo ocurrir que (cAliasCli) estuviera abierta en otro proceso / usuario y no la abriera, luego el comando SELECT falló

Así el código más correcto sería:
Code: Select all  Expand view
SELECT 0
IF !Net_Use(cVarCli, .f., 5, cAliasCli)
   mMsgInfo("No se pudo abrir !!", cVarCli)
   RETURN NIL
ENDIF
SELECT (cAliasCli)
...
 
Saludos


Gracias, solucionado, efectivamente tenía una dbf abierta con Foxpro y no me había dado cuenta (es lunes y aun no ando concentrado :oops: )
User avatar
Sebastián Almirón
 
Posts: 157
Joined: Mon Dec 12, 2005 9:56 am
Location: Moralzarzal - Spain


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Marcelo Via Giglio and 47 guests