Ir a una fila en un Query

Ir a una fila en un Query

Postby TOTOVIOTTI » Thu Oct 16, 2014 1:59 pm

Hola,
tengo una consulta de una tabla hecha con un query,
cada vez que añado una fila, necesito mover mi puntero
a esa nueva posición.
Uso Dolphin y hago el Insert, y luego Refresh para actualizar la consulta, pero como muevo
el puntero a ese last_insert_id?
Hago nombre_tabla:Goto() pero a donde?

Espero que se entienda lo que necesito...
Gracias
Roberto
Univ@c I.S.I.
Desarrolladores de Software
http://www.elcolegioencasa.edu.ar
User avatar
TOTOVIOTTI
 
Posts: 387
Joined: Fri Feb 05, 2010 11:30 am
Location: San Francisco - Córdoba - Argentina


Re: Ir a una fila en un Query

Postby TOTOVIOTTI » Thu Oct 16, 2014 6:16 pm

Karinha,
gracias pero no me sirve lo del last_insert_id, sé que existe, lo utilizo.
"Last_insert_id" arroja el id de la última fila agregada, pero la consulta es:
Como hago mover el puntero a esa fila??
Gracias
Roberto
Univ@c I.S.I.
Desarrolladores de Software
http://www.elcolegioencasa.edu.ar
User avatar
TOTOVIOTTI
 
Posts: 387
Joined: Fri Feb 05, 2010 11:30 am
Location: San Francisco - Córdoba - Argentina

Re: Ir a una fila en un Query

Postby ricardog » Thu Oct 16, 2014 6:37 pm

Buenas tardes.
Y no te sirve oRs:MoveLast() ?

http://www.w3schools.com/asp/ado_ref_recordset.asp


Saludos.
ricardog
 
Posts: 158
Joined: Tue Oct 11, 2005 3:10 pm

Re: Ir a una fila en un Query

Postby TOTOVIOTTI » Thu Oct 16, 2014 6:43 pm

Ricardo,
gracias por la respuesta, no uso ADO, estoy usando TDolphin, no me sirve esa función...

Gracias!
Roberto
Univ@c I.S.I.
Desarrolladores de Software
http://www.elcolegioencasa.edu.ar
User avatar
TOTOVIOTTI
 
Posts: 387
Joined: Fri Feb 05, 2010 11:30 am
Location: San Francisco - Córdoba - Argentina

Re: Ir a una fila en un Query

Postby karinha » Thu Oct 16, 2014 7:06 pm

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7446
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Ir a una fila en un Query

Postby TOTOVIOTTI » Thu Oct 16, 2014 7:12 pm

Karinha y los que me puedan ayudar, ahora estoy haciendo:


oServer:Insert("ausentes",aFields,aValues)
oQuery:=oServer:Query("SELECT LAST_INSERT_ID() AS nLast FROM ausentes LIMIT 1")
MOVEDOR:=oQuery:nLast
oQuery:End()
ausentes:refresh() // para refrescar el query

y, para hacer mover el puntero a MOVEDOR, que es donde necesito, hago:

ausentes:find(MOVEDOR,"id")

pero éste find, cuando las tablas son grandes, demora mucho, por eso, necesito
buscar otra forma de mover el puntero como si fuera un goto(), pero ésta función
no me sirve, porque no sé el recno() del registro insertado.

Espero haber sido un poco más claro.
Gracias!
Roberto
Univ@c I.S.I.
Desarrolladores de Software
http://www.elcolegioencasa.edu.ar
User avatar
TOTOVIOTTI
 
Posts: 387
Joined: Fri Feb 05, 2010 11:30 am
Location: San Francisco - Córdoba - Argentina

Re: Ir a una fila en un Query

Postby ricardog » Thu Oct 16, 2014 7:16 pm

Seria algo asi:

oQuery:Goto( oQuery:LastRec() )

Saludos.
ricardog
 
Posts: 158
Joined: Tue Oct 11, 2005 3:10 pm

Re: Ir a una fila en un Query

Postby karinha » Thu Oct 16, 2014 7:51 pm

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7446
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Ir a una fila en un Query RESUELTO

Postby TOTOVIOTTI » Thu Oct 16, 2014 8:17 pm

Gracias Ricardo y Karinha.

Opté por oQuery:Goto(oQuery:Lastrec()), no creí que el LastRec() funcionara de ésta manera,
mi duda estaba en que si la fila que insertaba, se iba al ppio de la consulta por el order by, igual
sigue manteniendo el Lastrec().

Gracias!
Roberto
Univ@c I.S.I.
Desarrolladores de Software
http://www.elcolegioencasa.edu.ar
User avatar
TOTOVIOTTI
 
Posts: 387
Joined: Fri Feb 05, 2010 11:30 am
Location: San Francisco - Córdoba - Argentina

Re: Ir a una fila en un Query

Postby Biel EA6DD » Fri Oct 17, 2014 6:47 am

Asumo que la tabla tiene como clave primaria el campo "id" y que es autonumérico.

oQuery:Goto(oQuery:Lastrec()) es lo mismo que oQuery:GoBottom(). Y si no me falla la teoria esto se posiciona en el último registro de la consulta, y SI se ve afectado por el order. LastRec() devuelve el total de filas en la consulta, no el último id introducido.

El problema de find es que la búsqueda es secuencial, y la velocidad depende directamente del número de registros. Se puede usar seek que es mucho más rápido, pero necesita que este ordenado por el campo que vamos a buscar, en este caso si esta ordenado por ID, sera casi lo mismo hacer GoBottom(), con la salvedad de que otros usuario hayan introducido registros, en ese caso tiene sentido hacer un seek, pues puede que el registro que acaba de introducir el usuario ya no sea el último, Last Inert Id es local a cada cliente.

Suponiendo que esta ordenado por Id, puedes hacerlo como habías expuesto al principio, pero cambiando find por seek.
Code: Select all  Expand view

oServer:Insert("ausentes",aFields,aValues)
MOVEDOR:=oServer:LastInsertId()
ausentes:refresh() // para refrescar el query
ausentes:Seek(MOVEDOR,"id")
 
Saludos desde Mallorca
Biel Maimó
http://bielsys.blogspot.com/
User avatar
Biel EA6DD
 
Posts: 682
Joined: Tue Feb 14, 2006 9:48 am
Location: Mallorca

Re: Ir a una fila en un Query

Postby TOTOVIOTTI » Mon Oct 20, 2014 12:38 pm

Biel,
lo estuve probando, y aparentemente sale bien con el LastRec(), voy a seguir probando para ver si
está correcto lo que estoy haciendo.
No obstante, no me sirve la opción de ORDEN BY id, porque tengo mis queries hechos y ordenados,
se trata de insertar e ir a esa fila en el orden que está la consulta...
Creí que debía ser más fácil...

Gracias!
Roberto
Univ@c I.S.I.
Desarrolladores de Software
http://www.elcolegioencasa.edu.ar
User avatar
TOTOVIOTTI
 
Posts: 387
Joined: Fri Feb 05, 2010 11:30 am
Location: San Francisco - Córdoba - Argentina


Return to FiveWin para Harbour/xHarbour

Who is online

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