PDA

Ver la Versión Completa : Posicion de un registro en un DBGrid


VRO
26-10-2004, 10:11:19
Hola, mi pregunta e la siguiente,

¿Hay alguna forma de saber cual es el numero de la fila en que se encuentra un registro de terminado?, lo necesito para una vez ínsertado un registro en el foco del DBgrid se situe en ese ultimo insertado, sería facil si el dataset que rige el dbgrid no estuviera ordenado por numero ya que me posicionaría en el último registro.

¿Seria una forma similar al TTreeView?, en el cual me posiciono siempre en el nodo padre y hago de la sguiente forma

posicion:=TTreview.parent.AbsolutedIndex;
TTreeView.selected:=TTreeView.Items.Item[posicion];


No se sai me habre explicado con claridad.

Gracias por si rartito de atención.

Investment
26-10-2004, 10:26:28
Creo que te estas complicando un poco la vida:

Si al terminar de insertar haces un locate sobre el valor del ultimo insertado ya estras posicionado en el ultimo registro insertado


Tabla.locate('CampoClave',ValorCampoClave_DelUltimoInsertado,[locaseinsensitive])

Neftali [Germán.Estévez]
26-10-2004, 10:49:12
Otra opción que puedes probar son Bookmarks; Antes de insertar añade uno y después de insertar recuperalo y avanza; De todas formas no lo he probado y depende de si el sistema que estés utilizando los soporta.

VRO
26-10-2004, 12:22:44
gracias por vuestras repuestas, con el locate ya habia probado, pero lo que me pasa es que en el DBgrid no me aparece seleccionado el ultimo que he insertado sino el primero del DBgrid, lo hago con DBgrid.setfocus;, se supone ó eso cre yo que si hago el locate y luego pongo el foco en la rejilla tendría que seleccionar el registro del que he hecho al locate.

Neftali [Germán.Estévez]
26-10-2004, 12:59:18
Deberías "refrescar" el Grid antes de hacer un Locate, ya que el Locate va sobre la tabla y el Grid debe estar actualizado con respecto a ella. Otra cosa, asegurate de que el Locate te devuelve TRUE.

VRO
26-10-2004, 16:47:26
esta hecho el refresh y el LOCATE tambien esta a true pero no consiguo que me seleccione la fila el registro que se encuentra con el locate en el dbgrid.

VRO
27-10-2004, 10:22:57
Ya encontre la solucion, el locate estaba a tru pero no me seleccionaba la fila porque, en vez de hacer el refresh yo lo que hago es cargar los datos que quiero mostrar de nuevo ya que con el refresh no me va muy bien, entonces lo que me pasaba es que les cargo y hago el locate y cuando salgo de ese formulario los volvía a cargar.

Muchas gracias por su ayuda a los foreros del club delphi