PDA

Ver la Versión Completa : Duda sobre IBQuery...


Repelus
13-08-2005, 20:32:09
Muy buenas, señores del foro....
Soy novato en Interbase y sus respectivos componentes para Delphi y tengo un problema con el componente IBQuery, espero puedan ayudarme.

Utilizo D6, Interbase 6 y los componentes Interbase (TIB...).
Tengo la base de datos creada y en la aplicacion muestro un dbgrid con los datos de una consulta (IBQuery). El problema es que cuando intento hacer un insert o un edit a traves de los metodos IBQuery.Insert/Edit aparece un error que indica que no puedo modificar un dataset de tipo 'read-only'. ¿Acaso no se puede insertar o modificar sobre este componente enlazado a DBEdits o similares?, ¿es obligatorio realizar estas acciones a traves de sentencias SQL?.
¿Pueden sacarme de esta oscuridad en la que estoy sumido?, gracias compañeros.

Mick
13-08-2005, 23:33:35
Un TIBQuery solo ejecuta la query que le hayas indicado. Si quieres poder insertar o modificar registros, tienes que:

* añadir un objeto TIBUpdateSQL, este objeto es el que se encargara de ejecutar las querys de modificacion, insercion, etc.

* Enlazar el componente TIBQuery con el TIBUpdateSQL , para ello en la propiedad UpdateObject del IBQuery le indicas el objeto IBUpdateSQL que acabas de añadir.

* Hacer un doble-click sobre el componente TIBUpdateSQL que acabas de añadir, y te sale una ventana de dialogo de configuracion donde debes indicar las 4 queries que se necesitan, la de insercion, la de modificacion, la de borrado, y la de refresco.
No es necesario teclearlas manualmente (aunque se puede), basta pulsar el boton "Generate SQL" para que se generen automaticamente a partir de la informacion del IBQquery.
Pero antes de pulsar "Generate SQL" debes indicar en ese dialogo que campos quieres que se puedan modificar, asi como los campos que forman la clave primaria de la tabla.

SAludos

Repelus
14-08-2005, 01:21:14
Gracias Mick por la informacion.
De todas formas he visto que el TIBDataset hace él solo las funciones de TIBQuery y de TIBUpdateSQL, pero por lo visto siempre hay que indicar las 4 queries que se necesitan. Esto no pasaba con las querys de ADO creo recordar y es lo que me despistaba.