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)
-   -   Modificación de varios registros a la vez (https://www.clubdelphi.com/foros/showthread.php?t=87316)

ginesgomezlopez 11-12-2014 23:22:25

Modificación de varios registros a la vez
 
Hola muy buenas,

Tengo una base de datos creada, con ella trabajo registro a registro, alta, baja, modificaciones lo que sea necesario registro a registro, pero ahora quisiera trabajar con un contenedor donde pueda modificar varios registros y con un botón poder grabar esos registros modificados de una vez, así les pedía opinión para ver cómo es la mejor manera posible si la mejor manera es utilizar un DbGrid o un StringGrid, donde en la primera columna escribiría el código Maestro y con un intro aparecieran los campos que yo eligiera asociados a ese registro, modificar el campo pertinente y en la segunda fila el siguiente codigo maestro y la misma operación.... , un click al button y quedar grabados todos los registros, ¿Es posible hacerlo con un StringGrid o DbGrid? o existe otra forma de hacerlo,

Gracias.

TiammatMX 11-12-2014 23:55:07

¿Y si utilizas UPDATE de SQL? TDbGrid es solamente una MUESTRA de los datos...

Neftali [Germán.Estévez] 12-12-2014 11:29:42

Independientemente de la forma, que es lo de menos, no me queda claro lo que quieres hacer (que es lo más importante).
¿A qué refieres con " varios registros a la vez"?
¿Te refieres en que estén en la misma transacción (o todos o ninguno)?

ginesgomezlopez 13-12-2014 22:48:57

Me refiero a poder modificar varios registros de una vez (los registros que yo elija), primero los busco uno a uno, en un formato de rejillas como "dbgrid", en la primera columna introduzco el número de registro y me aparecen los distintos campos, en la segunda linea introduzco otro registro con sus campos, modificando el mismo campo en cada uno de los registros, una vez finalizado la introducción de registros y modificados, grabarlos todos ellos en un click de button, entonces la pregunta era cual sería el modo de hacerlo más sencillo, me parecía que tenía que ser implementarlo en un stringGrid pero no estoy seguro:

TiammatMX, nunca he probado con UPDATE de SQL, me informaré cómo funciona y ver si esta es buena opcion.

Gracias.

ginesgomezlopez 15-12-2014 23:18:35

Sería el mismo caso que cuando voy a comprar varios artículos en una tienda, y se ve en pantalla una cuadrícula con varias columnas y filas, en la columna de la izquierda introducen el código y en las siguientes aparecen su caracteristicas, como por ejemplo en una ferretería, compro 30 tornillos, introduzco el código en la primera columna, y ya aparecen en el resto de columnas sus características, como puede ser en en una columna el material que está hecho, en otra la longitud, en otra la forma etc, etc, y en la última introduce cantidad que compro, luego en la siguiente fila introducen el código de por ejemplo sierras en la siguiente otro artículo, y al final con un click me sale el ticket y se queda grabado todos los articulos con las cantidades compradas.

Pero en un dbgrid no lo puedo hacer, en un stringrid tampoco, en un drawgrid tampoco, como podría conseguirlo.

Casimiro Notevi 15-12-2014 23:25:44

http://www.clubdelphi.com/foros/showthread.php?t=38055

fidel 18-12-2014 17:36:59

No está claro lo que quieres: modificas el mismo campo pero la modificación es la misma en todos los registros o es distinta, si es dintinta haz que se guarde al salir de cada campo modificado y si la modificación es la misma en todos los campos sería como te dice TiammatMX, es lenguaje SQL que por lo que dices no conoces. Aquí tienes algunos tutoriales:
http://www.asptutor.com/sql/
http://deletesql.com/viewforum.php?f...66dae8489bb0eb
http://www.aulaclic.es/sql/f_sql.htm

ginesgomezlopez 18-12-2014 23:27:53

Vamos a ver, tengo una tabla con cinco campos y ya tengo grabados 100 registros, ahora bien, en un formulario nuevo inserto un Dbgrid y un Button 1, el Dbgrid lo configuro para que esté vacío sin ningún dato, aunque sí me aparezca en la parte superior el nombre de los cinco campos de la tabla, el primer campo es el código, quiero modificar el campo 3 de los siguientes registros el 18 el 20 el 60 el 75 y el 90, pues bien introduzco en la columna 1 que corresponde al campo 1, que seria la celda (1,1) introduzco el 18 (pulso intro) y automáticamente me salgan los datos de la tabla del campo 2,3,4 y 5 modifico el campo 3 y me voy a la fila 2 (celda 2,1) e introduzco el codigo 20 (pulso intro) me vuelven a salir los datos del registro 20 campo 2,3 4 y 5 y modifico el campo 3 de ese registro por que sólo quiero modificar el campo 3 de estos registros, y así sucesivamente el registro 60,75 y 90. Finalizo de introducir todos los registros de los cuales sólo he modificado el campo 3 de cada uno de ellos, pulso Button 1 y me graba los cinco registros con la modificación del campo 3 de todos los registros de una sóla vez.

Está claro que con un Dbgrid no lo puedo hacer, la pregunta es si la posibilidad es implementarlo con un stringgrid ó TDrawGrid que reconociera el click de la celda [1.1] y me rellenara los campos que pido, luego reconocer la celda [2,1] volviera a llenar los campos en la fila 2..., y una vez finalizado pulsar el Button 1 y que fuera reconociendo las celdas para grabar todos los registros que he introducido y los grabara todos juntos con la modificación del campo 3. o bien existe otra forma más sencilla, por eso os lo pido para no estar perdiendo el tiempo, Gracias.

TiammatMX 18-12-2014 23:36:06

Cita:

Empezado por ginesgomezlopez (Mensaje 486815)
...por eso os lo pido para no estar perdiendo el tiempo, Gracias.

¡Hombre, así de amable!...

Tu solución: Generar un campo a tu tabla (ya sea calculado o permanente) el cual será boolean, y pondrás al principio de tu TDbGrid. Si pulsas sobre él, su contenido cambiará al estado contrario, así podrás tener control sobre los marcados/no marcados.

Procesas los registros de tu preferencia basado en el estado de éste campo y ¡listo!, problema resuelto.

ginesgomezlopez 19-12-2014 23:38:33

Si es una buena solución, pero pensé que delphi tenía algún desarrollo para este caso, ya que lo veo en todos los establecimientos donde voy y está muy extendido, lo de partir de una especie de DbGrid vacío y hacer click en la celda [1,1] crear el evento para implementar y rellenar la fila [1,2], [1,3],.... según los campos elegidos de una tabla y luego en la celda de abajo [2,1] lo mismo y rellenar las celdas [2,2],[2,3] y así sucesivamente..., pero se ve que no han considerado este caso los de delphi, de todas formas muchas gracias.

TiammatMX 19-12-2014 23:41:33

Cita:

Empezado por ginesgomezlopez (Mensaje 486897)
Si es una buena solución...

De hecho, es LA ÚNICA SOLUCIÓN..., y sí, los desarrolladores de Delphi piensan en todo, pero no cumplen caprichos, algunos de ellos muy necesarios...

Tristemente.

Casimiro Notevi 20-12-2014 09:37:05

Cita:

Empezado por TiammatMX (Mensaje 486898)
De hecho, es LA ÚNICA SOLUCIÓN..., y sí, los desarrolladores de Delphi piensan en todo, pero no cumplen caprichos, algunos de ellos muy necesarios...
Tristemente.

^\||/
.


La franja horaria es GMT +2. Ahora son las 12:26:08.

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