PDA

Ver la Versión Completa : update de un AdoQuery


fmonte
31-08-2004, 01:49:37
Hola que tal?
Mi inquietud es esta, yo tengo un dbgrid que esta asociado a un Adoquery y me problema es que cuando cambio algo del dbgrid me actualiza recien cuando cambio de fila o no despues de modificar algun valor.
No existe el metodo Onchange y no se realmente si el Medodo OnAfterPost es el que tengo que usar.
Gracias por su ayuda.

oscorm
31-08-2004, 02:02:23
a ver, que es lo quieres actualizar, porque desde luego que si existen eventos de validacion a nivel de registo y también a nivel de campo, basicamente el OnValidate. En cuanto al evento AfterPost este se dispara despues de actualizar el que se dispara antes de actualizar en el evento BeforePost, vale?

un saludo.

fmonte
01-09-2004, 01:53:55
Creo que no me entendiste!!!
Yo tengo un Dbgrid que como habia dicho esta asocido a un dbgrid. Por ejemplo si yo me posiciono en un campo de una fila y lo modifico, la unica manera que me actualice en la base de datos es seleccionando otra fila del dbgrid, porque si yo cambio cualquier valor y luego salgo de la aplicacion no me hace nada, pero si selecciono otra fila del dbgrid y salgo si me actualiza, entendes?
Por eso, yo quisiera saber cual es el evento que cuando termino de modificar algun campo me actualice la base de datos, asi no tengo q seleccionar otra fila.
Muchas gracias por su ayuda
Francisco

roman
01-09-2004, 02:26:37
Puedes hacer tú mismo la actualización usando el método Post del DataSet (Table, Query, etc.) asociado al DBGrid. Podrías llamarlo en el OnExit del DBGrid, en el OnClose del formulario o en ambos según convenga.

// Saludos

fmonte
01-09-2004, 02:40:05
Hola Roman!!!
Si esta bien, los medodos Onclose del Formulario o OnExit del Dbgrid me servirian, pero el procedimiento de actualizar no puedo hacer un SQL con la sentencia Update, sino que tendria que hacer algo con el Adoquery que esta asociado el dbgrid, no se si existe alguna funcion update o algo por el estilo o en el dbgrid, la verdad no se cual seria la funcion.
Si la sabes, te agradeciria tu ayuda.
Muchas Gracias
Francisco

roman
01-09-2004, 02:44:10
pero el procedimiento de actualizar no puedo hacer un SQL con la sentencia Update

¿Y quién está hablando de una sentencia UPDATE? Usa AdoQuery.Post.

// Saludos

fmonte
01-09-2004, 02:53:06
Hola de nuevo!!
AH, joya, despues lo pruebo y te digo, mucha gracias por tu ayuda.
Un abrazo, Roman
Francisco

fmonte
02-09-2004, 05:16:57
Hola Roman??
Me andubo lo que me dijiste pero surgio otro problema.
Mi problema ahora, es en el caso que yo selecciono otra fila del Dbgrid despues de modificar algun valor de otra fila de la seleccionada, como habia explicada anteriormente, viste que yo habia dicho que cuando hago eso, me actualiza la base de datos. Bueno ahora me tira un error cuando luego salgo de la aplicacion, porque yo hice el evento OnExit del Dbgrid y puse este codigo:

if (Cambio=1) then
Adoquery1.Post;

La variable Cambio, la seteo en uno cuando cambio algun valor del dbgrid.

El error q me tira es este: 'Adoquery1:Dataset not in edit or insert mode'
o sea hacer un Post si antes lo hice automatico cuando seleccione otra fila del dbgrid.
No se me entendes mi problema.
Cualquier cosa avisame.
Nos vemos
Francisco

roman
02-09-2004, 06:26:29
Simplemente verifica antes de hacer el post que esté en modo de inserción o edición:


if AdoQuery.State in [dsInsert, dsEdit] then
AdoQuery.Post;


// Saludos

fmonte
02-09-2004, 06:51:04
Muchas Gracias Roman, me anduvo joya

Un abrazo y muchas gracias por tu ayuda

Francisco