SEEK en Tdolphin y Mysql indice campo NUMERICO (SOLUCIONADO)

SEEK en Tdolphin y Mysql indice campo NUMERICO (SOLUCIONADO)

Postby joseluisysturiz » Mon Feb 27, 2012 6:36 pm

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  Expand view

                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 primeros casos (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: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

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

Postby joseluisysturiz » Thu Mar 01, 2012 3:05 am

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!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

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

Postby interwin » Thu Mar 01, 2012 4:50 am

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 los campos 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.
interwin
 
Posts: 33
Joined: Wed Jan 25, 2012 9:30 pm

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

Postby joseluisysturiz » Thu Mar 01, 2012 1:20 pm

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
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

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

Postby sysctrl2 » Fri Mar 02, 2012 12:42 am

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
sysctrl2
 
Posts: 959
Joined: Mon Feb 05, 2007 7:15 pm

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

Postby Daniel Garcia-Gil » Fri Mar 02, 2012 9:29 am

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:
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

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

Postby joseluisysturiz » Fri Mar 02, 2012 3:49 pm

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
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

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

Postby Daniel Garcia-Gil » Fri Mar 02, 2012 10:11 pm

Saludos

descargen del SVN y hagan las pruebas respectivas... espero este solucionado
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

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

Postby joseluisysturiz » Sat Mar 03, 2012 12:58 am

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!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

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

Postby Ariel » Mon Mar 05, 2012 5:42 pm

Daniel,

a mi tambien me funciona ok ahora.

salu2, ariel
Ariel
 
Posts: 374
Joined: Wed Nov 29, 2006 1:51 pm
Location: Rosario - Argentina

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

Postby sysctrl2 » Thu Mar 08, 2012 6:15 pm

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: 959
Joined: Mon Feb 05, 2007 7:15 pm

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

Postby sysctrl2 » Thu Mar 08, 2012 6:22 pm

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
sysctrl2
 
Posts: 959
Joined: Mon Feb 05, 2007 7:15 pm

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

Postby Daniel Garcia-Gil » Thu Mar 08, 2012 10:07 pm

Hola

cual es el error... puedes verlo en make.log
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

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

Postby sysctrl2 » Thu Mar 08, 2012 11:18 pm

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
sysctrl2
 
Posts: 959
Joined: Mon Feb 05, 2007 7:15 pm

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

Postby Daniel Garcia-Gil » Thu Mar 08, 2012 11:55 pm

Cesar

se esta enlazando una version incorrecta del archivo dolerr.ch alli ddberia etsar definida ERR_INVALIDTABLES_EXPORTTOSQL
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 28 guests