Error DataSet is read Only
Hola a todos, este es un error que probablemente nos pase a muchos, estoy trabajando con Lazarus-Firebird, la conexion la hago con TIBConnection que está ligado a un TSQLTransaction, las consultas a las tablas con TSQLQuery, a travez de un TDatasource vinculo los datos a un formulario, ahora cuando trato de abrir el DataSet para insertar o eliminar me saca el error de
DataSet is read-only Reviso que el TSQLTransaction esté activo y que las propiedad Readonly del TSQLQuery esté en false, ademas tengo esté código en un boton para abrir el TSQLQuery Por favor ayudenme si pueden. Gracias. |
Hola...
No conozco de Lazarus ni de los componentes TSQLQuery, pero checa si tiene una propiedad llamada RequestLive, si es así, establece su valor a True y eso debería funcionarte. Ahora, si el select que estás usando tiene joins, esto no te va a funcionar... Saludos... |
Gracias por responder maeyanes, he buscado la propiedad que me dices pero no la tiene, el consulta que estoy ejecutando es un Select simple, seguiré intentando para ver si logro algo.
|
Hola...
Pues si no tiene esa propiedad, mejor usa un TSQLDataSet (me imagino que habrá un componente llamado así). Si es equivalente a las IBX, este componente te debe permitir especificar las sentencias SQL para hacer inserciones (insert), actualizaciones (update) y borrados (delete). Saludos... |
Pues la verdad no las tiene, así que voy a tratar con los Componentes Zeos.
|
Mightydragonlor, las propiedades que menciona maeyanes para el componente TSQLQuery son InsertSQL, UpdateSQL y DeleteSQL, no importa que utilices Zeos, FIBL, FBLib (con estos no estoy muy seguro) o SQLdb, siempre tendrás que llenar estas propiedades ya sea en el mismo DataSet o mediante otro componente. Si tienes duda en como Llenar estas propiedades congusto te ayudamos.
Saludos |
boreg, muchas gracias por tu respuesta y la verdad es que voy a necesitar vuestra ayuda sobre como llenar estas propiedades.
|
En tiempo de diseño, desde el panel de propiedades de tu SQLQuery buscas las propiedades que te mencioné en el mensaje anterior, le das doble click y escribes lo siguiente según la propiedad que modifiques (bueno, lo modificas según los datos que tengas)
y ya está, la otra es hacerlo con codigo, de preferencia desde el evento oncreate del formulario en que tengas tu SQLQuery:
Saludos Creo que no aclaré, son 2 formas distintas de hacerlo, una es desde diseño y la otra en tiempo de ejecución. |
Ok, muchas gracias, me dispongo a hacerlo y mas tarde comento como me fue.
|
Hola boreg , Ahora ya no me aparece el error, sin embargo ahora no graba, me refiero a que apesar que en tiempo de ejecución no aparece ningún error al momento del post, si reviso la base de datos no aparecen los registros que he insertado.
|
Hola Mightydragonlor, tienes que hacer commit en tu componente de transaccion despues de hacer post
donde, SQLTransaction es el componente que tienes ligado a tu SQLQuery. Avisanos si tienes mas dudas. |
La franja horaria es GMT +2. Ahora son las 16:15:50. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi