Componentes Bdd

Hola,
Tengo un componente TIBQuery que hace una consulta a una bdd. Después un TDatasource conectado a este TIBquery i una DBGrid i un DBNavigator conectados al TDatasource. Funciona bien pero no puedo editar los datos desde la grid.
En cambio, si utilizo un componentes de la BDE, el TQuery tiene una propiedad RequestLive que me permite hacer lo mismo pero después si que puedo editar los datos desde la grid.
¿Hay alguna forma de editar desde la grid utilizando TIBQuery?
Muchas gracias

1 respuesta

Respuesta
1
Si por supuesto, y no te recomiendo el requestLive, porque este cuando haces un update en el where mete todos los campos siendo que solo debería estar la llave primaria.
Bueno para hacer insert, update, delete y hasta refresh con el IBQuery haces lo siguiente:
Pones un TIBUpdateSQL y en el TIBQuery en la propiedad UpdateObject ahí se lo pones. Luego le das doble click sobre el TIBUpdateSQL, te pedirá que selecciones la llave primaria luego presionas el botón Generate SQL y esto generara los SQL de Insert, update etc...
Y por ultimo en el TIBQuery en la propiedad CachedUpdates la pones en true y listo podrás editarlo en el grid.
Esto mismo funciona con los del BDE también ahí hay un TUpdateSQL.
Nota: una vez generados los sql's en el TIBUpdateSQL, revizalos y los puedes modificar a tu gusto o eliminar por ejemplo el de delete si no quieres que el usuario borre.
Hola,
Al hacer el ApplyUpdates me da error. Error de "arithmetic exception, or string truncation, etc ...". He probado también de substituir el componente IBQuery-IBUpdateSQL por un IBDataSet pero sigue dando el mismo error. A lo mejor el problema viene de otro sitio. ¿Se te ocurre de donde puede venir?
Muchísimas gracias
Hola,
Muchas gracias por la respuesta, he probado esto que me dices y ahora me deja editar la grid pero al salir del programa o al refrescar la grid los cambios de pierden. ¿Tengo qué hacer algo más para conservar los cambios?
Muchas gracias
Ah si!
En el TIBQuery tiene un evento llamado AfterPost ahí dentro pones el siguiente código:
IBQuery. ApplyUpdates; esto significa darle commit a la base de datos, cuando borras un registro este evento no se dispara así que tendrás que ponerlo también en el evento AfterDelete.
He encontrado el error, era porque habían caracteres como la ñ y acentos. Los he quitado y ahora funciona perfectamente. ¿Cómo tengo que hacer para que acepte estos caracteres?
Realmente no tienes que hacer nada, ya que no debería marcarte error por eso, yo tengo un sistema donde capturas ciertos comentarios y puedo poner palabras con ñ o acentuadas y no hay ningún problema.
Intenta abrir la base de datos con la consola de Interbase e inserta directamente a la tabla información con ñ o acentuada. Y a ver que te marca.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas