SEEK en Tdolphin y Mysql indice campo NUMERICO (SOLUCIONADO)

User avatar
MarioG
Posts: 1356
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

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

Post by MarioG »

Estimado;
No he tenido necesidad de cambiar el Orden.
Esperemos que Daniel lea y nos comente

Saludos
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
Francisco Horta
Posts: 845
Joined: Sun Oct 09, 2005 5:36 pm
Location: la laguna, mexico.

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

Post by Francisco Horta »

Retomando un poco el tema, estoy probando tdolphin y me encuentro con una serie de problemitas que aparentemente estan resuletos, perooo no me funcionan

esoty probando usar el SEEK, FIND y LOCATE para ver diferencias de uso,

voy explicar mi ejemplo muy sencillo:

Code: Select all

Tengo esta consulta:
dFec := "20141217"
oQry := oServer:Query("SELECT c.id,c.fechareserva,c.fecha,d.nombre" + ;
                            " FROM s_citas c" + ;
                            " INNER JOIN s_clientes d ON d.id = c.idcliente" + ;
                            " WHERE c.fechareserva = '" + dFec + "'" + ;
                            " ORDER BY c.inicio")

      DEFINE DIALOG oDlg TITLE "xbrowse / tdolphin" FROM 5, 5 TO 30, 90

         @ 9.5,3  BUTTON oBtn PROMPT "SetWhere" OF oDlg ACTION( dFec2 := ( VAL(dFec) + 1 ),;
                                                                dFec := Alltrim(Str(dFec2)),;
                                                                oQry:SetWhere("c.fechareserva = '" + dFec + "'"),;
                                                                oBrw:Refresh(),;
                                                                oBrw:SetFocus() )

         @ 9.5,12 BUTTON oBtn PROMPT "Varios" OF oDlg ACTION( msginfo(oQry:nRecNo(),oQry:nRecCount()),;
                                                              oBrw:SetFocus() )

         @ 9.5,21 BUTTON oBtn PROMPT "Locate" OF oDlg ACTION( cTime := Time(),;
                                                              nPos := oQry:Locate( { "27830" }, { "id" } ),;
                                                              msginfo( "Time " + ElapTime( cTime, Time() ), nPos ),;
                                                              oBrw:SetFocus() )

         @ 9.5,30 BUTTON oBtn PROMPT "Seek" OF oDlg ACTION( cTime := Time(),;
                                                            nPos := oQry:Seek( "27833", "id" ),;
                                                            msginfo( "Time " + ElapTime( cTime, Time() ), nPos ),;
                                                            oBrw:SetFocus() )

         @ 9.5,39 BUTTON oBtn PROMPT "Find" OF oDlg ACTION( cTime := Time(),;
                                                            nPos := oQry:Find( { "27835" }, { "id" } ),;
                                                            msginfo( "Time " + ElapTime( cTime, Time() ), nPos ),;
                                                            oBrw:SetFocus() )

         @ 0,0 XBROWSE oBrw OF oDlg SIZE 330,160


         WITH OBJECT oBrw
            :SetDolphin( oQry )
            :nMarqueeStyle    := MARQSTYLE_HIGHLROW
            :CreateFromCode()
            :aCols[3]:bLClickHeader   := { || oQry:LoadQuery(), oBrw:Refresh() }
         END

      ACTIVATE DIALOG oDlg CENTERED ON INIT oBrw:SetFocus()

     oQry:End()
     oServer:End()

 
bien ahora que utilizo:

descargue de bitbucket la ultima actualizacion de tdolphin, y genere la dolphin.lib y utilice la libmysql.lib que viene en esa version con fecha 19/09/2014 02:20pm asi como la libmysql.dll que viene tambien incluida con fecha 19/09/2014 02:20pm y que parece ser la ultima version de tdolphin ya que todos los archivos tienen esa misma fecha y hora.

Genero el .exe de mi ejemplo y coloque de antemano la libmysql.dll que viene incluida, asi tambien inclui la libmysql.lib y la dolphin.lib que genere y las inclui en la compilacion de mi ejemplo, hasta ahi todo bien.

los problemas son:
mi campo "id" es de tipo numerico

LOCATE: me saca del programa al dar click sin enviar algun error
SEEK: no me encuentra el registro
FIND: me sasa del programa al dar click sin enviar algun error

nota: en todos _ los codigos 27830, 27833, 27835 existen en mi consulta.

todo lo estoy haciendo con harbour 3.2 de diciembre 2014 que recomendo antonio, ya que mi intencion es pasar a harbour + dolphin y dejar xharbour + tmysql
para confirmar lo que comento agrego la imagen de mi xbrowse con mi consulta.

http://www.subirimagenes.net/i/150218061411658497.jpg

Image

a alguien le sigue sucediendo? Daniel me puedes apoyar ?

Gracias
Saludos
____________________
Paco
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

el ORDER BY de la consulta debe ser el mismo de la busqueda con SEEK

Code: Select all

ORDER BY c.id
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
Francisco Horta
Posts: 845
Joined: Sun Oct 09, 2005 5:36 pm
Location: la laguna, mexico.

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

Post by Francisco Horta »

Daniel,

de esa forma el SEEK si funciona, pero en ocasiones se realizan querys mas complejos con un orden de _ o diferente al dato a veces a buscar, ahi que aplica?

el LOCATE y el FIND me sacan del sistema sin error

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

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

Post by joseluisysturiz »

Francisco Horta wrote:Daniel,

de esa forma el SEEK si funciona, pero en ocasiones se realizan querys mas complejos con un orden de _ o diferente al dato a veces a buscar, ahi que aplica?

el LOCATE y el FIND me sacan del sistema sin error

Gracias
Saludos
Creo lo mejor en _ es hacer un setwhere() y si el oQry es mayor a cero, entonces hubo la coincidencia, sino, no existe...ya podra decirnos Daniel si hay otra forma mas facil o algun methodo para ello...saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
acuellar
Posts: 1312
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

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

Post by acuellar »

Debes usar

Code: Select all

 oQry:SetOrder("CAMPO")
 
Luego tu búsqueda.

Saludos,

Adhemar
Saludos,

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

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

Post by joseluisysturiz »

El detalle de usar el setorder() es que te deja el qry ordenado por ese campo, asi que deberia de volver al order by anterior si estas haciendo algun ordenamiento, lista por browse o reporte, etc...por lo menos pasa en mi caso, no se si sera que hago algo mal, por eso tengo el where original en una VAR, realizo mi where como si fuese busqueda, pero solo cuando la busqueda es coincidencia por mas de un campo y luego llamo de nuevo mi where original, no he intentando hacerlo con el order by...saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
Francisco Horta
Posts: 845
Joined: Sun Oct 09, 2005 5:36 pm
Location: la laguna, mexico.

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

Post by Francisco Horta »

Adhemar,

si puede ser una solucion,

cOldOrder := oQry:cOrder
oQry:SetOrder(minuevoorden)
oQry:Seek(loquebusco)
oQry:SetOrder(cOldOrder)

mas o menos algo asi.

Jose Luis,

el setwhere es bueno y funciona bien cuando en tu query tiene solo un where, pero si tienes mas de un where en un query complejo, ya no funciona, esto es para consultas simples, imagino que asi funcionan los demas SETs

y locate y find? veo que usas arreglos para varios datos, pero sigue sin funcionar y no he podido probar

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

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

Post by joseluisysturiz »

A lo que me refiero es que el seek, locate y find te sirve solo si buscas por un campo, pero si quieres busqueda por lo menos por fechas o que coincidan mas de un campo, entonces lo que te recomendaria es un where, puedes guardar el WHERE viejo y luego reestrablecerlo, bueno, es solo una idea y solucion funcional, cada quien dicen tiene su manera de matar piojos...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: SEEK en Tdolphin y Mysql indice campo NUMERICO (SOLUCIONADO)

Post by Daniel Garcia-Gil »

Francisco Horta wrote:Adhemar,

si puede ser una solucion,

cOldOrder := oQry:cOrder
oQry:SetOrder(minuevoorden)
oQry:Seek(loquebusco)
oQry:SetOrder(cOldOrder)

mas o menos algo asi.

Jose Luis,

el setwhere es bueno y funciona bien cuando en tu query tiene solo un where, pero si tienes mas de un where en un query complejo, ya no funciona, esto es para consultas simples, imagino que asi funcionan los demas SETs

y locate y find? veo que usas arreglos para varios datos, pero sigue sin funcionar y no he podido probar

Gracias
Saludos
Eso es exactamente, como he dicho el blog anteriormente, Dolphin es una herramienta que te ayuda a iniciarte en el mundo SQL y logres ir entendiendo como funciona, te brinda metodos de clase simples para consultas simples mientras vas avanzando encontraras metodos que te ayudaran en el avance, pero al final hay que entender que SQL no es DBF, es una premisa que para mi punto de vista (y otros) es importante, Dolphin te permitira sacar provecho de la mayoria de las cualidades de MySql, hasta los momentos la limitante son las sentencias preparadas

La idea del seek es como en los indices de las DBFs, ordenar la consulta por el campo de busqueda, los indices son una diferencia notable entre SQL y DBFs, aparte cuando cambias el orden de una consulta (query) re-envias la consulta al servidor y te devolvera al nuevo puntero (handle) del ese resultado, nada funciona localmente, a menos que uses un servidor incrustado (embebbed server) a consecuencia el proceso se hace mas lento por que todo pasa de forma remota.

Hay que estar pendiente a la hora de usar los SET..., FIND, LOCATE, SEEK

Hace tiempo atras hable sobre el tema de los subselect y aporte una solucion para el manejo de ellos donde el usuario practicamente llevaba el control de las partes del query,
http://forums.fivetechsupport.com/viewt ... 02#p108702
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
Francisco Horta
Posts: 845
Joined: Sun Oct 09, 2005 5:36 pm
Location: la laguna, mexico.

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

Post by Francisco Horta »

Daniel,

De hecho al ir entendiendo mejor el SQL las sentencias se van puliendo y ala vez quieres mas en un solo query, tdolphin trae metodos muy completos y que ire probando para tratar de explotarlo al maximo, siempre son excelentes tus aportes. Por lo demas ire viendo soluciones desde SQL, a toda marcha.

Gracias
Saludos
____________________
Paco
Post Reply