SEEK en Tdolphin y Mysql indice campo NUMERICO (SOLUCIONADO)

User avatar
joseluisysturiz
Posts: 2024
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela
Contact:

SEEK en Tdolphin y Mysql indice campo NUMERICO (SOLUCIONADO)

Post by joseluisysturiz »

Saludos, crei tenia la solucion, pero ahora se me presenta el mismo problema que el colega, mi campo clave es numericoy por ese mismo tengo mi ordenamiento del Query, "SELECT * FROM inscripcion ORDER BY numero ASC", si uso Query:Seek(MiVar, "nom_campo"), para el Seek nunca existe ningun valor y si hago el Query:Seek(MiVar, "nom_campo", , , .t. ) para el lSoft, entonce me muestra el valor mas coincidencia como si fuese una busqueda secuencial, ejemplo si mi valor en mi campo es 3450 y le digo al Seek que busque el 345 dice que existe aunque no exista, toma en cuenta los 3 primeros valores del valor del campo del query y para el ningun valor por debajo de 100 existe, como si solo trabajara con valores de 3 digitos, a ver si alguien le ha pasado y ha resuelto, esto solo sucede si el campo de la tabla es NUMERICO, espero alguna ayuda o si Daniel le puede dar una revisada a ver que pasa con el SEEK, gracias y saludos...


joseluisysturiz wrote:
José Ríos wrote:Buen dia.

Siguiendo con muis pruebas en tdophin me encontre con un caso en que el metodo seek con datos numericos no encuentra numeros de mas de un digito.

Por ejemplo si tengo dados de alta los registros:

Numero Nombre
1 A
3 B
11 C

Y hago el siguiente query y despues 3 busquedas seek cobre el query

Code: Select all

                DEFINE QUERY oQry "SELECT * FROM vendedores order by numero" 

               // y despues despues hago la siguientes busquedas:

                
                If oQry:seek(2, 'Numero' ) > 0
                     msginfo('encontrado')
                else
                      msginfo('no encontrado')
                endif

                If oQry:seek(1, 'Numero' ) > 0
                     msginfo('encontrado')
                else
                      msginfo('no encontrado')
                endif

                 If oQry:seek(11, 'Numero' ) > 0
                     msginfo('encontrado')
                else
                      msginfo('no encontrado')
                endif
 
En los dos _ (numero =1 y numero=2 ), el resultado de la busqueda es exitoso, pero cuando numero=11 el registro no es encontrado.

Haciendo pruebas con find el resultado de la busqueda para numero=11 es correcto.

¿Esto significa que seek no debe usarse con campos numericos?.

Saludos.

Jose Rios.
Saludos, me habia pasado algo parecido, yo llenaba los datos manualmente a la tabla y a veces no los encontraba, es como si la tabla se embasura, prueba limpiar la tabla o cambiar el 1 o el 2 por el valor 11, ya que si te acepto el 1 y el 2, debe aceptarte el 11 ya que todos los valores son numericos, igualmente las busqueda las hago es con el valor en una VAR, intentalo de esta manera a ver..

nNum := 11

IF oQry:SEEK(nNum, "numero") = 0
.....
saludos... :shock:
Last edited by joseluisysturiz on Sat Mar 03, 2012 1:06 am, edited 2 times in total.
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
Posts: 2024
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela
Contact:

Re: Problemas con SEEK en Tdolphin y Mysql indice campo NUMERICO

Post by joseluisysturiz »

Por favor, no respondan todos juntos que no se cual de las ideas tomar, gracias... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
interwin
Posts: 33
Joined: Wed Jan 25, 2012 9:30 pm

Re: Problemas con SEEK en Tdolphin y Mysql indice campo NUMERICO

Post by interwin »

Jose luis yo ya habia detectado ese problema y lo plantee en el foro e incluso le mande un mail a Daniel. Parece que el problema es con el algoritmo que se usa con seek (busqueda binaria). Sucede que cuando haces una busqueda numerica _ arriba de cierto valor se localizan correctamente y bajo ese valor no se localizan correctamente y el puntero se pone en un registro incorrecto.


Pueden hacer la prueba siguiente: generen 32,000 registros ordenados por un campo que represente el numero de registro. Luego hagan una busqueda con seek para cualquier valor mayor a 16000 y otra para valores menores a 16000. Notaran que en el primer caso los valores son localizados correctamente y los menores a 16000 no. Sucede con cualquier rango, aunque varia el valor a partir del cual los registros son encontrados correctamente.

Ya le habia planteado este detalle a Daniel, pero como nadie mas lo habia notado parece que penso que era solo un caso particular.

Saludos.
User avatar
joseluisysturiz
Posts: 2024
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela
Contact:

Re: Problemas con SEEK en Tdolphin y Mysql indice campo NUMERICO

Post by joseluisysturiz »

Saludos, si ya me di cuenta de todo lo que me dices, es mas, anteriormente alguien toco este mismo tema y le respondi, igual le hice un comentario a Daniel por msn y espero que tenga algun tiempo para ver esete detalle y ofrecer alguna solucion, por los momentos medio resolvi con una idea de un colega y me quedara esperar...saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
sysctrl2
Posts: 833
Joined: Mon Feb 05, 2007 7:15 pm
Contact:

Re: Problemas con SEEK en Tdolphin y Mysql indice campo NUMERICO

Post by sysctrl2 »

coisido con ustede colegas,

oQry:Seek , oQry:Locate NO funcionan,

si busco el numero: 7280,

el puntero se mueve al 72800

Los metodos son muy buenos, ya que funcionan sobre el oQry. actual,

y funcionan dentro de un xbrowse,

ojala Daniel nos pueda dar una manita para corregir el projecto DolPhin.

Saludos..
Cesar Cortes Cruz
SysCtrl Software
Mexico

' Sin +- FWH es mejor "
User avatar
Daniel Garcia-Gil
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita
Contact:

Re: Problemas con SEEK en Tdolphin y Mysql indice campo NUMERICO

Post by Daniel Garcia-Gil »

Hola

Saludos a todos

Hoy tratare de dedicarle el tiempo necesario para tratar de solucionarlo, por ser TDolphin es un proyecto libre al que todos tenemos acceso, si alguien quiere aportar alguna posible solucion sera bienvenida

Gracias y disculpen las demoras sobre este tema :oops:
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
User avatar
joseluisysturiz
Posts: 2024
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela
Contact:

Re: Problemas con SEEK en Tdolphin y Mysql indice campo NUMERICO

Post by joseluisysturiz »

Daniel Garcia-Gil wrote:Hola

Saludos a todos

Hoy tratare de dedicarle el tiempo necesario para tratar de solucionarlo, por ser TDolphin es un proyecto libre al que todos tenemos acceso, si alguien quiere aportar alguna posible solucion sera bienvenida

Gracias y disculpen las demoras sobre este tema :oops:
Saludos Daniel y gracias por responder, nose mucho por no decir que no se nada de lenguaje C, pero viendo un poco la funcion MySeek2, me di cuenta que se repite mucho -1 y eso aparentemente es lo que sucede que se le esta restando un valor al campo con el cual se quiere la coincidencia, como ejmplo si se busca el valor 340 y existe en la tabla el valor 3407, para el SEEK hay coincidencia por los 3 primero numero de izquierda a derecha, considerando asi que el valor existe, como que es falsa y todo valor por debajo de 100, para el SEEK nunca existe, en mi caso sucede si el campo clave de la tabla es de cualquier tipo numero(int, numerico, integer, decimal, etc),como ejemplo de lineas donde se usa el -1 esta esta:

ChkInverted( &uiEnd, &uiStart, ( ISNUM( 4 ) ? ( unsigned int ) hb_parni( 4 ) - 1 : 0 ), bInverted );

siempre en la funcion hb_parni.

Gracias, que estes bien al igual que los tuyos, saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
Daniel Garcia-Gil
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita
Contact:

Re: Problemas con SEEK en Tdolphin y Mysql indice campo NUMERICO

Post by Daniel Garcia-Gil »

Saludos

descargen del SVN y hagan las pruebas respectivas... espero este solucionado
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
User avatar
joseluisysturiz
Posts: 2024
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela
Contact:

Re: Problemas con SEEK en Tdolphin y Mysql indice campo NUMERICO

Post by joseluisysturiz »

Daniel Garcia-Gil wrote:Saludos

descargen del SVN y hagan las pruebas respectivas... espero este solucionado
Excelente Daniel, de mi parte muchas gracias por la ayuda, hice todas las pruebas respectivas que me daban falla y ahora todo trabajo como debe ser, no esperaba menos de ti...saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
Ariel
Posts: 309
Joined: Wed Nov 29, 2006 1:51 pm
Location: Rosario - Argentina

Re: SEEK en Tdolphin y Mysql indice campo NUMERICO (SOLUCIONADO)

Post by Ariel »

Daniel,

a mi tambien me funciona ok ahora.

salu2, ariel
User avatar
sysctrl2
Posts: 833
Joined: Mon Feb 05, 2007 7:15 pm
Contact:

Re: SEEK en Tdolphin y Mysql indice campo NUMERICO (SOLUCIONADO)

Post by sysctrl2 »

Holas Daniel,

me he bajado la version mas actual de dolphin, y al compilar la libreria me envia el siguiente erro.

Gracias ..


C:\DOLPHIN3>setenvx
# -----------------------------------------------------------------------
# Building dolphin.lib
#
# C COMPILER :BCC
# PRG COMPILER :XHARBOUR
# -----------------------------------------------------------------------
Compiling .\source\prg\tdolpexp.prg
Compiling .\obj\XHARBOUR\BCC\tdolpexp.c
Compiling .\source\prg\tdolpqry.prg
Compiling .\obj\XHARBOUR\BCC\tdolpqry.c
Compiling .\source\prg\tdolpsrv.prg
Compiling .\obj\XHARBOUR\BCC\tdolpsrv.c
Compiling .\source\c\function.c
Compiling .\source\c\gerrapi.c
Compiling .\source\lang\msges.c
win-make: *** [.\obj\XHARBOUR\BCC\msges.obj] Error 1
rm .\obj\XHARBOUR\BCC\tdolpsrv.c .\obj\XHARBOUR\BCC\tdolpqry.c .\obj\XHARBOUR\BC
C\tdolpexp.c

C:\DOLPHIN3>
Cesar Cortes Cruz
SysCtrl Software
Mexico

' Sin +- FWH es mejor "
User avatar
sysctrl2
Posts: 833
Joined: Mon Feb 05, 2007 7:15 pm
Contact:

Re: SEEK en Tdolphin y Mysql indice campo NUMERICO (SOLUCIONADO)

Post by sysctrl2 »

el error esta apartir de esta linea y por ende no crea la lib.
alguna pista?
saldos..

Compiling .\source\lang\msges.c
win-make: *** [.\obj\XHARBOUR\BCC\msges.obj] Error 1rm .\obj\XHARBOUR\BCC\tdolpsrv.c .\obj\XHARBOUR\BCC\tdolpqry.c .\obj\XHARBOUR\BC
C\tdolpexp.c
Cesar Cortes Cruz
SysCtrl Software
Mexico

' Sin +- FWH es mejor "
User avatar
Daniel Garcia-Gil
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita
Contact:

Re: SEEK en Tdolphin y Mysql indice campo NUMERICO (SOLUCIONADO)

Post by Daniel Garcia-Gil »

Hola

cual es el error... puedes verlo en make.log
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
User avatar
sysctrl2
Posts: 833
Joined: Mon Feb 05, 2007 7:15 pm
Contact:

Re: SEEK en Tdolphin y Mysql indice campo NUMERICO (SOLUCIONADO)

Post by sysctrl2 »

gracias Daniel,

el error que viene en make.log es el siguiente.
me marca error al momento que compila MSGES.C

saludos..


c:\bcc582\bin\bcc32 -c -D__WIN__ -D__XHARBOUR__ -DHB_LEGACY_TYPES_ON -tWM -I\xhb1007\include -I.\include -o.\obj\XHARBOUR\BCC\msges.obj .\source\lang\msges.c
Compiling .\source\lang\msges.c
Borland C++ 5.82 for Win32 Copyright (c) 1993, 2005 Borland
.\source\lang\msges.c:
Error E2451 .\source\lang\msges.c 91: Undefined symbol 'ERR_INVALIDTABLES_EXPORTTOSQL' in function LoadMsgsES
Error E2040 .\source\lang\msges.c 91: Declaration terminated incorrectly in function LoadMsgsES
Error E2139 .\source\lang\msges.c 91: Declaration missing ; in function LoadMsgsES
Warning W8070 .\source\lang\msges.c 91: Function should return a value in function LoadMsgsES
Warning W8004 .\source\lang\msges.c 91: 'ErrMsg' is assigned a value that is never used in function LoadMsgsES
Error E2190 .\source\lang\msges.c 91: Unexpected }
Error E2190 .\source\lang\msges.c 101: Unexpected }
Error E2293 .\source\lang\msges.c 103: ) expected
Error E2040 .\source\lang\msges.c 105: Declaration terminated incorrectly
Error E2190 .\source\lang\msges.c 106: Unexpected }
*** 8 errors in Compile ***
Cesar Cortes Cruz
SysCtrl Software
Mexico

' Sin +- FWH es mejor "
User avatar
Daniel Garcia-Gil
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita
Contact:

Re: SEEK en Tdolphin y Mysql indice campo NUMERICO (SOLUCIONADO)

Post by Daniel Garcia-Gil »

Cesar

se esta enlazando una version incorrecta del archivo dolerr.ch alli ddberia etsar definida ERR_INVALIDTABLES_EXPORTTOSQL
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
Post Reply