Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus-es / 2012-10

actualizar consulta en grid

11 messages · 4 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Paola Bruccoleri

Hola todos.
Estoy rehaciendo el form donde mostraba la tabla entera con todos los registros; ahora hice una consulta (qryForm03). La misma obviamente es una consulta que involucra varias tablas, donde saco el nombre del operario, etc.

Hay un bot�n MODIFICAR donde cargo un form de edici�n donde tengo 3 rxdblookupcombos para mostrar los nombres de esos campos y los otros campos son edits que cargo con los datos de la consulta. Debo usar combos porque el usuario est� acostumbrado a usarlos para cargar datos.

Para grabar ejecuto un query que hace el update...

qryGrabarForm.ParamByName('numero').AsInteger:= StrToInt(edtNumero.Text);
qryGrabarForm.ParamByName('fecha').AsDate:= edtFecha.Date;
qryGrabarForm.ParamByName('cod_ruta').AsInteger:=
StrToInt(cboRuta.KeyValue);
qryGrabarForm.ParamByName('tramo_km').AsString:= edtTramo.Text;
qryGrabarForm.ParamByName('cod_equipo').AsInteger:=
StrToInt(cboEquipo.KeyValue);
qryGrabarForm.ParamByName('cod_operario').AsInteger:=
StrToInt(cboOperario.KeyValue);
......
qryGrabarForm.ExecSQL;
// actualizo el grid donde est�n los registros
ABMF03b.qryForm03.Refresh;

Cuando modifico cualquier dato menos los correspondientes a los dblookupcombos y acepto, no pasa nada, PERO, cuando quiero cambiar por ej de operario, al aceptar, salta este error al hacer el REFRESH del qryForm03 donde muestro los registros:

Aclaro que los datos quedan bien actualizados en la bd. Si saco el refresh, no sale el error, pero el grid NO se actualiza.

�C�mo lo podr� solucionar?
muchas gracias!

------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20121025/60e5d044/attachment-0001.html> ------------ pr�xima parte ------------
A non-text attachment was scrubbed...
Name: moz-screenshot-2.png
Type: image/png
Size: 6072 bytes
Desc: no disponible
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20121025/60e5d044/attachment-0001.png>

Reply by email

Martin Gomez
to Paola Bruccoleri

Es solo una corazonada, pero estar�s levantando los datos para los combos desde la misma consulta que la grilla?
Al modificarlos, el motor (Zeos) cree que cambiaste cosas en la grilla e intenta enviar al server un update por su cuenta, y la consulta es compuesta (varias tablas) y no puede ejecutarse.

Quizas si antes del Refresh pusieras un Cancel, descartar�a los cambios locales al query (que de todas formas es solo lectura) y traer�a la informaci�n nuevamente de la base.

Espero que te sea de ayuda, no he trabajado con Zeos pero algo similar tuve con BDE hace tiempo.

Si el problema es ese que imagino, cambiando los DbLookupCompo por LookupCombo (sin asociarlos al query de la grilla) solucionar�as tu problema de forma mucho m�s elegante.

Try not to become a man of success but rather to become a man of value. *Albert Einstein* ------------ pr�xima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20121025/61f69fe5/attachment.html>

Reply by email

German
to Paola Bruccoleri: Hola todos. Estoy rehaciendo el form donde mostraba la tabla entera con todos los…

El 25/10/2012 08:26 p.m., Paola Bruccoleri escribi�:

Show quoted text 41 lines
Hola todos. Estoy rehaciendo el form donde mostraba la tabla entera con todos los registros; ahora hice una consulta (qryForm03). La misma obviamente es una consulta que involucra varias tablas, donde saco el nombre del operario, etc. Hay un bot�n MODIFICAR donde cargo un form de edici�n donde tengo 3 rxdblookupcombos para mostrar los nombres de esos campos y los otros campos son edits que cargo con los datos de la consulta. Debo usar combos porque el usuario est� acostumbrado a usarlos para cargar datos. Para grabar ejecuto un query que hace el update... qryGrabarForm.ParamByName('numero').AsInteger:= StrToInt(edtNumero.Text); qryGrabarForm.ParamByName('fecha').AsDate:= edtFecha.Date; qryGrabarForm.ParamByName('cod_ruta').AsInteger:= StrToInt(cboRuta.KeyValue); qryGrabarForm.ParamByName('tramo_km').AsString:= edtTramo.Text; qryGrabarForm.ParamByName('cod_equipo').AsInteger:= StrToInt(cboEquipo.KeyValue); qryGrabarForm.ParamByName('cod_operario').AsInteger:= StrToInt(cboOperario.KeyValue); ...... qryGrabarForm.ExecSQL; // actualizo el grid donde est�n los registros ABMF03b.qryForm03.Refresh; Cuando modifico cualquier dato menos los correspondientes a los dblookupcombos y acepto, no pasa nada, PERO, cuando quiero cambiar por ej de operario, al aceptar, salta este error al hacer el REFRESH del qryForm03 donde muestro los registros: Aclaro que los datos quedan bien actualizados en la bd. Si saco el refresh, no sale el error, pero el grid NO se actualiza. �C�mo lo podr� solucionar? muchas gracias!

Hola Paola, el error que mostras parece indicar que armaste un query con joins o algo por el estilo (por eso lo del "complex query") y lo queres modifcar directamente (sin usar un UpdateSql).
Si me equivoco en la suposicion y si armaste el updatesql, fijate si efectivamente lo asignaste al query (es algo tonto pero con el apuro puede pasar!), yo revisaria por ese lado.

Suerte!

------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20121025/21d16ca1/attachment.html> ------------ pr�xima parte ------------
A non-text attachment was scrubbed...
Name: no disponible
Type: image/png
Size: 6072 bytes
Desc: no disponible
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20121025/21d16ca1/attachment.png>

Reply by email

Paola Bruccoleri
to Martin Gomez: Es solo una corazonada, pero estar�s levantando los datos para los combos desde la…

El 25/10/2012 10:08 p.m., Martin Gomez escribi�:

Show quoted text 18 lines
Es solo una corazonada, pero estar�s levantando los datos para los combos desde la misma consulta que la grilla? Al modificarlos, el motor (Zeos) cree que cambiaste cosas en la grilla e intenta enviar al server un update por su cuenta, y la consulta es compuesta (varias tablas) y no puede ejecutarse. Quizas si antes del Refresh pusieras un Cancel, descartar�a los cambios locales al query (que de todas formas es solo lectura) y traer�a la informaci�n nuevamente de la base. Espero que te sea de ayuda, no he trabajado con Zeos pero algo similar tuve con BDE hace tiempo. Si el problema es ese que imagino, cambiando los DbLookupCompo por LookupCombo (sin asociarlos al query de la grilla) solucionar�as tu problema de forma mucho m�s elegante.

Hola Mart�n..
gracias por el tip..
la grilla de los registros es readonly; los datos si los levanto desde la misma grilla..
voy a probar lo que dices.. y ver� tb de cambiar los dblookupcombo por el lookupcombo.. pero c�mo le cargo los valores de la tabla SIN asociarlos a la grilla? no se si tendr� alg�n ejemplo de eso porque creo que ni los he usado....
byeeeee

------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20121027/ac8b45d2/attachment.html>

Reply by email

Paola Bruccoleri
to Martin Gomez: Es solo una corazonada, pero estar�s levantando los datos para los combos desde la…

El 25/10/2012 10:08 p.m., Martin Gomez escribi�:

Show quoted text 17 lines
Es solo una corazonada, pero estar�s levantando los datos para los combos desde la misma consulta que la grilla? Al modificarlos, el motor (Zeos) cree que cambiaste cosas en la grilla e intenta enviar al server un update por su cuenta, y la consulta es compuesta (varias tablas) y no puede ejecutarse. Quizas si antes del Refresh pusieras un Cancel, descartar�a los cambios locales al query (que de todas formas es solo lectura) y traer�a la informaci�n nuevamente de la base. Espero que te sea de ayuda, no he trabajado con Zeos pero algo similar tuve con BDE hace tiempo. Si el problema es ese que imagino, cambiando los DbLookupCompo por LookupCombo (sin asociarlos al query de la grilla) solucionar�as tu problema de forma mucho m�s elegante.

Hola MArt�n..
reci�n, a las apuraditas, prob� hacer el cancel luego de grabar y ya no sale el error y el grid queda correctamente refrescado: ....

              qryGrabarForm.ExecSQL;
              ABMF03b.qryForm03.Cancel;
              ABMF03b.qryForm03.Refresh;

de todas formas voy a probar de usar un lookupcombo.. byeeeeee

------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20121027/bcaecdad/attachment.html>

Reply by email

Martin Gomez
to Paola Bruccoleri

2012/10/27 Paola Bruccoleri <pbruccoleri en adinet.com.uy>

Show quoted text 12 lines
Hola MArt�n.. reci�n, a las apuraditas, prob� hacer el cancel luego de grabar y ya no sale el error y el grid queda correctamente refrescado: .... qryGrabarForm.ExecSQL; ABMF03b.qryForm03.Cancel; ABMF03b.qryForm03.Refresh; de todas formas voy a probar de usar un lookupcombo.. byeeeeee

Muy bueno!!!
El tema con los dblookupcombo es que acceden a 2 tablas... una en la que sacas los datos para mostrar y otra en la modificas el valor de un campo, partiendo de la lista de la primer tabla.
Podes seguir usando el DbLookupCombo, pero no lo asignes al DataSource de la grilla, le indicas el valor actual a mano al mostrar el formulario, entonces te muestra la lista (sacada del datasource de lookup) pero no modifica la consulta que (por su naturaleza) no puede aplicar los updates.

Espero que se entienda :)

Try not to become a man of success but rather to become a man of value. *Albert Einstein* ------------ pr�xima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20121028/9fabde9b/attachment.html>

Reply by email

Paola Bruccoleri
to Martin Gomez

El 28/10/2012 01:36 p.m., Martin Gomez escribi�:

Show quoted text 29 lines
2012/10/27 Paola Bruccoleri <pbruccoleri en adinet.com.uy <mailto:pbruccoleri en adinet.com.uy>> Hola MArt�n.. reci�n, a las apuraditas, prob� hacer el cancel luego de grabar y ya no sale el error y el grid queda correctamente refrescado: .... qryGrabarForm.ExecSQL; ABMF03b.qryForm03.Cancel; ABMF03b.qryForm03.Refresh; de todas formas voy a probar de usar un lookupcombo.. byeeeeee Muy bueno!!! El tema con los dblookupcombo es que acceden a 2 tablas... una en la que sacas los datos para mostrar y otra en la modificas el valor de un campo, partiendo de la lista de la primer tabla. Podes seguir usando el DbLookupCombo, pero no lo asignes al DataSource de la grilla, le indicas el valor actual a mano al mostrar el formulario, entonces te muestra la lista (sacada del datasource de lookup) pero no modifica la consulta que (por su naturaleza) no puede aplicar los updates. Espero que se entienda :)

Hola Mart�n..
si, claro que entend�.. es mucho m�s prolijo hacerlo as�. Reci�n lo termino de modificar y probar y est� todo ok.

ahora otra pregunta co-lateral...

Me he dado cuenta que estando en la grilla, elijo un reg cualquiera, voy al formulario de edici�n y aunque no modifico nada, acepto y grabo, la grilla queda con el registro seleccionado que eleg� para modificar. Si llego a modificar alg�n dato, sea uno que se muestre en el dblookupcombo, un trxtimeedit, un tcurrencyedit, tedit o trxdateedit que son los controles que uso, al grabar, el registro actual de la grilla queda siempre mostrando el primer registro y no el que eleg� para modificar... y me gustar�a que quedase en el registro donde estaba. �c�mo podr� forzarlo?
muchas gracias de nuevo
SAludos!

------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20121029/0d0e40fc/attachment.html>

Reply by email

Maxi
to Paola Bruccoleri

El d�a 29 de octubre de 2012 11:12, Paola Bruccoleri <pbruccoleri en adinet.com.uy> escribi�:

Show quoted text 58 lines
El 28/10/2012 01:36 p.m., Martin Gomez escribi�: 2012/10/27 Paola Bruccoleri <pbruccoleri en adinet.com.uy> > > Hola MArt�n.. > reci�n, a las apuraditas, prob� hacer el cancel luego de grabar y ya no > sale el error y el grid queda correctamente refrescado: > .... > qryGrabarForm.ExecSQL; > > ABMF03b.qryForm03.Cancel; > ABMF03b.qryForm03.Refresh; > > de todas formas voy a probar de usar un lookupcombo.. > byeeeeee Muy bueno!!! El tema con los dblookupcombo es que acceden a 2 tablas... una en la que sacas los datos para mostrar y otra en la modificas el valor de un campo, partiendo de la lista de la primer tabla. Podes seguir usando el DbLookupCombo, pero no lo asignes al DataSource de la grilla, le indicas el valor actual a mano al mostrar el formulario, entonces te muestra la lista (sacada del datasource de lookup) pero no modifica la consulta que (por su naturaleza) no puede aplicar los updates. Espero que se entienda :) Hola Mart�n.. si, claro que entend�.. es mucho m�s prolijo hacerlo as�. Reci�n lo termino de modificar y probar y est� todo ok. ahora otra pregunta co-lateral... Me he dado cuenta que estando en la grilla, elijo un reg cualquiera, voy al formulario de edici�n y aunque no modifico nada, acepto y grabo, la grilla queda con el registro seleccionado que eleg� para modificar. Si llego a modificar alg�n dato, sea uno que se muestre en el dblookupcombo, un trxtimeedit, un tcurrencyedit, tedit o trxdateedit que son los controles que uso, al grabar, el registro actual de la grilla queda siempre mostrando el primer registro y no el que eleg� para modificar... y me gustar�a que quedase en el registro donde estaba. �c�mo podr� forzarlo? muchas gracias de nuevo SAludos! _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es

con un bookmark, como refrescas la consulta trae todo nuevo. Antes de editar guardas el punto/registro donde estas parada, al refrescar volvel al punto anterior.

El que pregunta aprende, y el que contesta aprende a responder. No a la obsolecencia programada: http://dimensionargentina.blogspot.com/2011/01/todo-esta-disenado-para-romperse.html Linux User #495070 http://domonetic.com/blog

Reply by email

Paola Bruccoleri
to Paola Bruccoleri: El 28/10/2012 01:36 p.m., Martin Gomez escribi�: Hola Mart�n.. si, claro que…

El 29/10/2012 12:12 p.m., Paola Bruccoleri escribi�:

Show quoted text 48 lines
El 28/10/2012 01:36 p.m., Martin Gomez escribi�: > > > 2012/10/27 Paola Bruccoleri <pbruccoleri en adinet.com.uy > <mailto:pbruccoleri en adinet.com.uy>> > > Hola MArt�n.. > reci�n, a las apuraditas, prob� hacer el cancel luego de grabar y > ya no sale el error y el grid queda correctamente refrescado: > .... > qryGrabarForm.ExecSQL; > > ABMF03b.qryForm03.Cancel; > ABMF03b.qryForm03.Refresh; > > de todas formas voy a probar de usar un lookupcombo.. > byeeeeee > > > Muy bueno!!! > El tema con los dblookupcombo es que acceden a 2 tablas... una en la > que sacas los datos para mostrar y otra en la modificas el valor de > un campo, partiendo de la lista de la primer tabla. > Podes seguir usando el DbLookupCombo, pero no lo asignes al > DataSource de la grilla, le indicas el valor actual a mano al mostrar > el formulario, entonces te muestra la lista (sacada del datasource de > lookup) pero no modifica la consulta que (por su naturaleza) no puede > aplicar los updates. > > Espero que se entienda :) Hola Mart�n.. si, claro que entend�.. es mucho m�s prolijo hacerlo as�. Reci�n lo termino de modificar y probar y est� todo ok. ahora otra pregunta co-lateral... Me he dado cuenta que estando en la grilla, elijo un reg cualquiera, voy al formulario de edici�n y aunque no modifico nada, acepto y grabo, la grilla queda con el registro seleccionado que eleg� para modificar. Si llego a modificar alg�n dato, sea uno que se muestre en el dblookupcombo, un trxtimeedit, un tcurrencyedit, tedit o trxdateedit que son los controles que uso, al grabar, el registro actual de la grilla queda siempre mostrando el primer registro y no el que eleg� para modificar... y me gustar�a que quedase en el registro donde estaba. �c�mo podr� forzarlo? muchas gracias de nuevo SAludos!

me contesto sola..
encontr� un mensaje m�o de hace a�os y al final me funcion� lo del THackDBGrid aportado por Fredy Gonz�lez..
SAludos!

------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20121029/98629adf/attachment.html>

Reply by email

Paola Bruccoleri
to Maxi: El d�a 29 de octubre de 2012 11:12, Paola Bruccoleri <pbruccoleri en adinet.com.uy>…

El 29/10/2012 12:35 p.m., Maxi escribi�:

Show quoted text 62 lines
El d�a 29 de octubre de 2012 11:12, Paola Bruccoleri <pbruccoleri en adinet.com.uy> escribi�: > El 28/10/2012 01:36 p.m., Martin Gomez escribi�: > > > > 2012/10/27 Paola Bruccoleri<pbruccoleri en adinet.com.uy> >> Hola MArt�n.. >> reci�n, a las apuraditas, prob� hacer el cancel luego de grabar y ya no >> sale el error y el grid queda correctamente refrescado: >> .... >> qryGrabarForm.ExecSQL; >> >> ABMF03b.qryForm03.Cancel; >> ABMF03b.qryForm03.Refresh; >> >> de todas formas voy a probar de usar un lookupcombo.. >> byeeeeee > > Muy bueno!!! > El tema con los dblookupcombo es que acceden a 2 tablas... una en la que > sacas los datos para mostrar y otra en la modificas el valor de un campo, > partiendo de la lista de la primer tabla. > Podes seguir usando el DbLookupCombo, pero no lo asignes al DataSource de la > grilla, le indicas el valor actual a mano al mostrar el formulario, entonces > te muestra la lista (sacada del datasource de lookup) pero no modifica la > consulta que (por su naturaleza) no puede aplicar los updates. > > Espero que se entienda :) > > Hola Mart�n.. > si, claro que entend�.. es mucho m�s prolijo hacerlo as�. Reci�n lo termino > de modificar y probar y est� todo ok. > > ahora otra pregunta co-lateral... > > Me he dado cuenta que estando en la grilla, elijo un reg cualquiera, voy al > formulario de edici�n y aunque no modifico nada, acepto y grabo, la grilla > queda con el registro seleccionado que eleg� para modificar. > Si llego a modificar alg�n dato, sea uno que se muestre en el dblookupcombo, > un trxtimeedit, un tcurrencyedit, tedit o trxdateedit que son los controles > que uso, al grabar, el registro actual de la grilla queda siempre mostrando > el primer registro y no el que eleg� para modificar... y me gustar�a que > quedase en el registro donde estaba. > �c�mo podr� forzarlo? > muchas gracias de nuevo > SAludos! > > > > > > > _______________________________________________ > Lazarus-es mailing list > Lazarus-es en lists.lazarus.freepascal.org > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es > con un bookmark, como refrescas la consulta trae todo nuevo. Antes de editar guardas el punto/registro donde estas parada, al refrescar volvel al punto anterior.

Hola Maxi..
tb prob� con eso y me funcion�!.. creo que dejar� esa forma.. muchas gracias por recordarme a los bookmarks!
byeeeeeee

Reply by email