PROBLEMA PARA BUSCAR PRIMEROS REGISTROS CON SEEK

PROBLEMA PARA BUSCAR PRIMEROS REGISTROS CON SEEK

Postby rbecares » Fri Mar 23, 2007 2:11 pm

Amigos:

Antes de escribir esto les aseguro que hice todas las pruebas posibles, ya que en 17 años de clipper jamas me paso algo parecido y parece que fuera un principiante por esta consulta.

Trabajando con clipper / fivewin / dbfcdx tengo el siguiente problema:

si hago un gotop y un seek a una determinada clave que queda entre los primeros registros de ese orden de clave encuentra el dato y se posiciona bien.

si hago lo mismo con el puntero abajo en la tabla NO LO ENCUENTRA.

si hago lo mismo, con un gotop o con el puntero abajo en la tabla y busco un registro que esta luego de ese grupo inicial de registros, lo encuentra siempre bien.

Al encontrar esto, lo repeti en distintas tablas, indices, etc y pasa lo mismo, tablas grandes y chicas, la clave es una clave normal, compuesta de 4 o 5 campos todos pasados llevados a string, etc, todo normal.

Es decir encuentro que el seek no esta encontrando registros de los primeros en el orden cuando el seek no se hace desde arriba en la tabla.

Todas las cosas posibles ya estan hechas, borrar los indices, regenerarlos, revisar todo, etc.

LA CONSULTA ES SI ALGUNO SABE DE ALGUN PROBLEMA CON ALGUNA VERSION DE LA LIBRERIA DBFCDX Y ME ORIENTA DONDE CONSEGUIR LA QUE FUNCIONA BIEN.
rbecares
 
Posts: 77
Joined: Wed Oct 12, 2005 5:36 pm

Postby A&C » Fri Mar 23, 2007 8:00 pm

Amigo,, yo siempre he esado el seek ,, con un gotop antes,,,, ya q sino no encuentra nada.... q este arriba del puntero de la DBF


La realidad no se si esto sera una anomalia,,, como te digo aprendi a usarlo asi...y considero q es lo correcto de hacer


no se q opinan los demas ???
Mi segundo amor es Programar
User avatar
A&C
 
Posts: 214
Joined: Sat Aug 19, 2006 1:37 pm
Location: Chile

Postby rbecares » Mon Mar 26, 2007 1:01 pm

Gracias, pero si es una anomalía, tiene que haber una libreria DBFCDX que funcione bien, esa es mi búsqueda.
rbecares
 
Posts: 77
Joined: Wed Oct 12, 2005 5:36 pm

Postby manuramos » Tue Mar 27, 2007 6:45 pm

Es la primera véz que escucho esto. Siempre usé SEEK desde cualquier lugar y siempre trabajó perfectamente. Tanto con NTX como ultimamente con CDX.

¿Qué utilizas SEEk o DBSEEK?
¿Qué clave has creado? El problema debe de andar por ahí.
¿Utilizas SOFTSEEK? a lo mejor ese es el problema.

En el ejemplo siguiente, busco el primer registro válido de una base de datos para listarlos (desde cualquier posición de la base de datos):

METHOD ExtremoS() CLASS NEOLIST
LOCAL lASeek := SET(_SET_SOFTSEEK,.T.)
*
IF ::uVal1 = NIL
(::cAlias)->( DbGoTop() )
ELSE
(::cAlias)->( DbSeek(::uVal1,.T.) )
ENDIF
IF (::cAlias) -> (EOF())
::PRIM_REG := 0
::ULTM_REG := 0
RETURN NIL
ENDIF
....


Como verás, si no hay valor de búsqueda (::uVal1) se va al GOTOP sino busca el primer registro ::uVal1 (suele estar al principio.
Nunca me falló.
Nos Gusta Programar
manuramos
 
Posts: 219
Joined: Mon Dec 26, 2005 7:25 pm
Location: Jerez de la Frontera (Spain)

Postby Armando Picon » Thu Mar 29, 2007 2:00 pm

Esa particularidad siempre estuvo en Clipper. Por eso los gurús de Clipper antiguamente aconsejaban que para hacer una búsqueda era necesario hacer un previo gotop(). En dBase esto no ocurría (acuerdense que Clipper fue el compilador del codigo dBase).
FWH + BCC582 + WorkShop 4.5 + Resource Hacker + Mingw
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicación via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com
User avatar
Armando Picon
 
Posts: 446
Joined: Mon Dec 26, 2005 9:11 pm
Location: Lima, Peru

Postby manuramos » Thu Mar 29, 2007 9:12 pm

Bueno, empecé con el Summer 87, y no recuerdo esa particularidad. A lo mejor es que ya no me acuerdo. Juraría que no. Aunque si recuerdo algo de mover el puntero trás un reindexado o algo así (nunca utilicé ese comando, prefería reconstruir los indices) o tras un filtraje (que tampoco utilizo, demasiado lento).

De hecho, como el DBEDIT() era demasiado cuadriculado, creé mi propio Browse, que estuve utilizando durante años sin problemas de SEEK. Aun hoy utlizo, básicamente, ese mismo motor para mi propio Listbox, y sigue sin fallar. El trozo de código que mostré en mi post anterior forma parte de dicha CLASS.

Pieno que el problema de nuestro amigo está por otro lado, el Softseek quizá. O algún tipo de filtro. Con CDX a lo mejor el AUTOORDER o algo así. O a lo mejor teneis razón y hay que utilizar el GOTOP(), pero no le veo la lógica, ¿porqué para los primeros registros SÍ y para los demás NO? ¿No resulta ilógico y extraño?
Nos Gusta Programar
manuramos
 
Posts: 219
Joined: Mon Dec 26, 2005 7:25 pm
Location: Jerez de la Frontera (Spain)

Postby Armando Picon » Thu Mar 29, 2007 10:27 pm

Tampoco supee a que se debia, en ese entonces y aún ahora me sigo preguntando el porque de lo que aconsejaban.
FWH + BCC582 + WorkShop 4.5 + Resource Hacker + Mingw
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicación via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com
User avatar
Armando Picon
 
Posts: 446
Joined: Mon Dec 26, 2005 9:11 pm
Location: Lima, Peru

Postby rbecares » Fri Mar 30, 2007 4:53 pm

AMIGOS:

Gracias por preocuparse y contestar. Les hago una pregunta, ¿que sistema de archivos están usando? y ¿como hicieron en caso de algun sql tipo mysql el uso de los comandos? ¿con algun driver de rdd y utilizando comandos xbase o sql embebido?

Esto lo consulto ya que como no tengo transacciones disponibles y los sistemas crecen en datos, tablas, complejidad, creo que aprovecho el momento para iniciar el lento y penoso proceso de cambio de sistema de archivos.

Cualquier consejo u observación son bienvenidos.

Gracias.
rbecares
 
Posts: 77
Joined: Wed Oct 12, 2005 5:36 pm

Postby Armando Picon » Fri Mar 30, 2007 6:40 pm

Hasta el presente sigo utilizando los dbf (no estoy preocupado por la cantidad de registros que pueden caber en las tablas) ni la cantidad de tablas que puedan manejar xHarbour porque no creo que pueda llegar al limite de manejo.

Esto no significa que no estè atento a la posibilidad de utilizar mysql, sql, postgres, etc. sino que hasta el presente no ha sido necesario que los utilice.
FWH + BCC582 + WorkShop 4.5 + Resource Hacker + Mingw
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicación via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com
User avatar
Armando Picon
 
Posts: 446
Joined: Mon Dec 26, 2005 9:11 pm
Location: Lima, Peru

Postby Armando Picon » Fri Mar 30, 2007 6:45 pm

Me falto indicar que en caso del Clipper 5.3b (última versión que utilice con FW2.0) con el apoyo de la libreria DBFCDX puede manejar hasta 4 billones de registros y creo... que sería muuuy dificil llegar a manejar esa cantidad de datos.
FWH + BCC582 + WorkShop 4.5 + Resource Hacker + Mingw
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicación via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com
User avatar
Armando Picon
 
Posts: 446
Joined: Mon Dec 26, 2005 9:11 pm
Location: Lima, Peru

Postby manuramos » Sat Mar 31, 2007 12:28 pm

Yo también utilizo el DBF de toda la vida. Un taller aun utiliza un programa mio que le regalé en 1995 sin haber borrado un sólo registro (ordenes de trabajo, albaranes y facturas) con DBF/NTX y sigue contento. Hace poco conseguí el Clipper 5.3b y me pasé a DBF/CDX. Y no lo hice antes porque no me hgizo falta tanta seguridad en los índices.
Nos Gusta Programar
manuramos
 
Posts: 219
Joined: Mon Dec 26, 2005 7:25 pm
Location: Jerez de la Frontera (Spain)

Postby rbecares » Sun Apr 01, 2007 12:43 pm

Manu y Armando:

Mil gracias.

Un abrazo.
rbecares
 
Posts: 77
Joined: Wed Oct 12, 2005 5:36 pm


Return to FiveWin para CA-Clipper

Who is online

Users browsing this forum: No registered users and 14 guests