Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Insertar en una posición (https://www.clubdelphi.com/foros/showthread.php?t=25701)

felixgo 30-09-2005 17:32:13

Insertar en una posición
 
Hola ,
tengo un clientDataSet que toma los datos de una SQLquery mediante un datasetprovider. A su vez tengo enlazado un datagrid a este clientdataset.
NEcesito que el usuario pueda introducir lineas en el grid en la posición que quiera, y hasta que no aplique los cambios los registro no se muevan del lugar en que los inserto. Ahora cuando salgo del registro nuevo se me coloca en penúltimo lugar.

gracias

Lepe 01-10-2005 14:22:13

Lo único que se me ocurre es añadir un campo entero (orden de inserción), al añadir registros, ordenarlos por ese número. Tienes más trabajo, ya que al añadir tienes que modificar ese número para todos los registros que vienen despues... No sé, espero que sea viable.

Un saludo

felixgo 03-10-2005 09:31:08

Así lo hago pero me los desordena

jmariano 04-10-2005 14:26:44

El problema es que al salir del registro nuevo antes de validarlo, el DBGrid valida los campos de forma automática (salvo que el foco lo posicionemos fuera del DBGrid). Una posible solución a esto sería crear una variable booleana que almacenara si el ClientDataSet está en edición o inserción (la pondríamos a True en los eventos AfterInsert y AfterEdit) y que sólo almacenara False cuando el usuario aplicó explícitamente los cambios (es decir, en el evento del botón u opción de menú que tengamos para ello) y, tambien, cuando se canceló o se eliminó el registro. (Otra solución sería crear nuestro propio DBGrid para controlar este caso)

Otra cosa, para que la solución de Lepe funcione, tendrías que crear un índice local (es decir, en el ClientDataSet) basado en el campo de ordenación.

Saludos!

felixgo 04-10-2005 19:21:37

No entiendo muy bien la solución, Qué hago con la variable booleana?, como hago que el datagrid no me recoloque los registros?

gracias


La franja horaria es GMT +2. Ahora son las 06:45:33.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi