Busqueda selectiva por nombre en un DBF

Busqueda selectiva por nombre en un DBF

Postby Loren » Fri Oct 07, 2016 11:23 am

Buenos días:

Tengo un sistema con indices DBF-CDX, en red local, funcionando bien. Sin embargo, algunas vez, NO siempre, en la opción de poder filtrar una DBF por nombres, me genera el siguiente error:

Error: NO existe la variable "nom_cli"

... cuando realmente SI existe, y de hecho de probado incluso por declararla pública.

Code: Select all  Expand view
index on nombre tag &(camino+"tempofac") to &(camino+"tempofac") ADDITIVE for upper(alltrim(nom_cli)) $ upper(factura->nombre)
&& camino = ruta del PC local
&& nom_cli = texto o cadena a buscar y que teclea el usuario
 


La cuestión es que genera error algunas vez, NO siempre. Por cierto, las búsquedas me las hace rapidísimas y por cualquier cadena que escriba el usuario.

¿Qué estoy haciendo mal?

Gracias.
Un saludo.
Loren
 
Posts: 479
Joined: Fri Feb 16, 2007 10:29 am
Location: Cadiz - España

Re: Busqueda selectiva por nombre en un DBF

Postby karinha » Fri Oct 07, 2016 1:06 pm

Error: NO existe la variable "nom_cli"


Declare:

FIELD NOM_CLI en el modulo, si realmente ejiste en el .DBF.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7343
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Busqueda selectiva por nombre en un DBF

Postby acuellar » Fri Oct 07, 2016 1:20 pm

Loren

Tenes que ponerle el Alias de la base
Ej:
Code: Select all  Expand view

 ALIAS->NOM_CLI
 
Saludos,

Adhemar C.
User avatar
acuellar
 
Posts: 1594
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: Busqueda selectiva por nombre en un DBF

Postby cmsoft » Fri Oct 07, 2016 2:07 pm

Por lo que entiendo la variable nom_cli es una variable de memoria, no es un campo de la DBF.
Asegurate de que la variable es accesible desde el modulo que llama a la funcion, sino declarala como MEMVAR y hacer referencia a ella como M->nom_cli
User avatar
cmsoft
 
Posts: 1204
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Busqueda selectiva por nombre en un DBF

Postby jrestojeda » Fri Oct 07, 2016 4:07 pm

Hola,
Debes quitar el ALIAS de la creación del TAG. Ya que ponerlo no debería generar error, pero si te obliga a que siempre la tabla sea abierta con el alias facturas.

Ya que si por ejemplo abres la tabla así:

Code: Select all  Expand view
USE TABLA NEW ALIAS OTROALIAS // Al querer indexar va a generar error ya que el alias "factura" no va a existir en esa instancia.


Y si abres la tabla como:

Code: Select all  Expand view
USE TABLA NEW ALIAS OTROALIAS // Al poner seleccionar el SET ORDER que corresponde a ese TAG tambien va a generar error.


Siempre es recomendable al momendo de generar un índice no usar ALIAS ni en la apertura ni en la creación del TAG

Code: Select all  Expand view
USE TABLA NEW
INDEX ON Campo1 + Campo2 + etc   TAG TuTag TO "TABLA"
CLOSE
 


Luego de crear el índice y cerrar la tabla vuelve a abrirla y ahí si pone el alias que quieras.

En fin... prueba quitar el ALIAS en la apertura de la tabla y el alias-> de la creación del tag y luego comenta los resultados.

Saludos,
Ojeda Esteban Eduardo.
Buenos Aires - Argentina.
FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport
Skype: jreduojeda
User avatar
jrestojeda
 
Posts: 593
Joined: Wed Jul 04, 2007 3:51 pm
Location: Buenos Aires - Argentina

Re: Busqueda selectiva por nombre en un DBF

Postby AngelSalom » Sun Oct 09, 2016 7:37 am

Cuando he obtenido este tipo de error casi siempre ha coincidido con un error al crear el fichero temporal (falta de espacio, pérdida de conexión en red, fichero existente, etc..) Comprueba cuando obtengas el error si se conseguido crear el índice temporal.
Angel Salom
Visionwin Software - https://www.visionwin.com
------------------------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.4
User avatar
AngelSalom
 
Posts: 708
Joined: Fri Oct 07, 2005 7:38 am
Location: Benicarló (Castellón ) - España

Re: Busqueda selectiva por nombre en un DBF

Postby Loren » Tue Oct 11, 2016 7:08 pm

compañeros, buenas noches:

- Quité el ALIAS de la creación del TAG
- nom_cli es una variable de memoria que incluso la declaro como PUBLICA y la variable es accesible desde el modulo que llama a la funcion
- Cuando genera el error es imposible comprobar si genera el indice temporal porque siempre que genera el error lo hace desde los equipos del cliente. Nunca desde el mío, a pesar de las mil pruebas que hago. El error es aleatorio y nunca es fijo.

Creo que solución pasa por cambiar la forma de indexar y el entorno de RED local, aunque el indice lo genera en el PC local (NO en el servidor).

Code: Select all  Expand view
index on nombre tag &(camino+"tempofac") to &(camino+"tempofac") ADDITIVE for upper(alltrim(nom_cli)) $ upper(nombre)


Sigo sin solución.
Saludos.
LORENZO.
Loren
 
Posts: 479
Joined: Fri Feb 16, 2007 10:29 am
Location: Cadiz - España

Re: Busqueda selectiva por nombre en un DBF

Postby jrestojeda » Thu Oct 13, 2016 2:55 pm

Otro tip...
Teniendo en cuenta que es un índice temporal, podrías antes de generar tu índice asegurarte que no existe ya índice con ese nombre, ya que en caso de existir, lo que estás haciendo va a agregar el TAG al índice existente.
Podrías antes de generar el índice, agregar un FErase( camino+"tempofac" ) así en caso de existir lo borra. Y el que tu creas luego es otro CDX nuevo.
Saludos,
Ojeda Esteban Eduardo.
Buenos Aires - Argentina.
FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport
Skype: jreduojeda
User avatar
jrestojeda
 
Posts: 593
Joined: Wed Jul 04, 2007 3:51 pm
Location: Buenos Aires - Argentina


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 31 guests