PDA

Ver la Versión Completa : dbgrid para actualizar


speter
20-08-2007, 04:41:37
Hola a todos los del foro!!!!

Ya habia participado antes, pero ahora tengo una duda(sigo siendo novato:D), alguien me podria decir como puedo actualizar una tabla, en la cual primero antes de actualizar uso un query de busqueda el cual despliega los datos dentro de un dbgrid, y dentro de este mismo quiero poder alterar su contenido y volver a guardar el contenido(actualizar).
Estoy usando SQL server 7, supongo que tengo que usar ALTER, pero no se como guardar los datos desde dbgrid:confused:

Bueno de antemano Gracias por el momento

krlosrp
20-08-2007, 18:31:46
Hola, si quieres guardar cambios directamente usando una Query, pon a true la propiedad RequestLive. Esto funcionará solo si incluyes una sola tabla en la sentencia SQL. (si no usas join) y seleccionas todos los campos.

Saludos.

Caral
20-08-2007, 18:40:17
Hola speter
Para actualizar una tabla con un Query este tiene que contener todos los registros y en tal caso de actualizar mas de una tabla a la vez, este query tiene que tener incluidos los campos clave, si no, no actualizara.
Sin mayor problema se puede usar un Componente DBNavigator, este ya hace todo lo que se necesite.
Hay muchas formas, uncluidas las value, para actualizar, hay que pensar en lo que se quiere hacer.
Siempre es bueno proporcionar codigo, asi se ven mejor las cosas.
Saludos

speter
21-08-2007, 21:12:20
Bueno, agradesco lo que dice krlosrp, pero hay algo raro en la propiedad... en el query no me sale esa propiedad:confused:(uso delphi version 7), y tambien habia pensado en usar el dbnavigator, tal vez paresca muy terco, pero lo que pienso hacer es que por medio de la sentencia UPDATE(me equivoque en el post anterior:p), en la cual su sintaxis es esta:

UPDATE "nombre_tabla"
SET "columna_1" = [nuevo valor]
WHERE {condición}

Donde anteriormente pense en hacerlo de esta manera:


UPDATE Alumnos
SET Nombre_alumno = :nombreAl
WHERE No_folio = :miVariableFolio


He venido haciendo esto pero con las otras sentecias(INSERT INTO y SELECT), estos comandos los habia ejecutado con las variables que uso dentro del programa, por ejemplo esta consulta(este codigo lo tengo en propiedad SQL del adoquery):


SELECT No_cuenta , Nombre_alumno,Apellido_alumnoP,Apellido_alumnoM,sexo,status,Grupo FROM alumnos
WHERE Nombre_alumno=:nom1


En donde 'nom1' es la referencia que uso del dato en el programa, por medio del comando que Caral puso en un tutorial para nosotros los novatos(muchas gracias Caral!)

q1.Parameters.ParamByName('nom1').Value:= edit1.Text;

y en este caso pienso que puedo hacer lo mismo con el comando UPDATE, pero la duda es:
Ahora, digamos que despues de hacer una consulta ya me despliega la informacion en el dbgrid, en mi caso digamos que quiero cambiar el nombre del alumno, hago doble click en el dbgrid y lo modifico y al momento de guardarlo usar la misma tecnica que he usado, en otras palabras que pueda pasar el registro del campo del dbgrid 'alumno' a una variable string y poder hacer esta linea de codigo:

q1.Parameters.ParamByName('nombreAl').Value:= miVariable;
//q1 es el nombre del adoquery que uso

En donde 'miVariable' contiene el nombre que escribi en el dbgrid y entonces ahora si, escribir el codigo sql:


UPDATE Alumnos
SET Nombre_alumno = :nombreAl
WHERE No_folio = :miVariableFolio


Esto es solo un prototipo que he pensado para actualizar "a pie", tengo la seguridad de que servira, pero no se como sacar el dato del dbgrid y ponerlo en una variable string:(