FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Query1 cannot modify a read-only dataset
Hola, voy directo al grano tenia mi programa basado todo en Ttable,pero, las busquedas con muchos registros se hacen muy lentas, entonces decidi pasarlo a Tquery por que me comentasteis algunos del foro que al realizar las busquedas bajo Sql iria mucho más rapido.Esto es verdad y asi lo solucione, lo que pasa es que cuando quiero insertar o eliminar registros de mis tablas me sale:
'Query1: cannot modify a read-only dataset' En principio pense que seria por que no habia puesto el query en edit o en insert pero me sigue pasando igual,asi que no se como solucionarlo. Para añadir mis registros hago : Query1.post; igual que con las Ttables no se si lo hago bien o esta ahi el problema. Muchas Gracias a Todos. Un Saludo |
#2
|
|||
|
|||
has probado a usar qyr de ADO.??????
a mi me estan funcionando sin problema. |
#3
|
|||
|
|||
Pues la verdad es que no he probado, en principio debe ser igual que el Query normal, nada mas que lo tienes que conectar con la base de datos no?
De todas formas ¿se trabaja de la misma forma con los querys que con las tables? |
#4
|
|||
|
|||
Bueno yo soy bastante novato en todos estos temas. pero por las pruebas que he echo me he encontrado que con los qry estandar tienes que generar parametros insert o Update independientes. dirigiendolos a las tablas. pero con los ADO es mas sencillo de echo si tu añades a un qryADO un DBNavigator veras que automaticamente te añade las funciones de insercion y modificacion lo que no pasa con los qry estandar.
|
#5
|
|||
|
|||
Muchas gracias Ramonibk, de momento ya me deja hacer un post y me ha habilitado los botones del DbNavigator que se me habian anulado el de borrar registros y de refrescar la tabla.
Ahora me ha surjido otro problema, no se como se borran registros de la tabla.Tengo un dbgrid y un botón y el codigo que he usado es el siguiente: No se que puede estar mal pero me dice que no puede borrar varios recordset.A ver si me puedes ayudar. Lo dicho muchas gracias y un Saludo Última edición por Nbull fecha: 10-12-2004 a las 09:46:08. |
#6
|
|||
|
|||
Query1 cannot mod...
Hola.
Bueno yo uso los Objetos Querys Standard incluso para hacer un mantenimiento completo a una tabla en específico (SELECT, INSERT, UPDATE, DELETE) y funcionan bien. Por la parte del código que publicas veo que quieres hacer un open (Query2.open), pero estas utilizando una sentencia SQL para actualización, como el Delete, y tanto el Delete, como el Insert y el UpDate, cuando se usan en Objetos Querys, lo correcto es ejecutar un “ExecSQL”, osea, tendrías (Query2.ExecSQL) porque usas un Delete, si fuerea un Select, entonces si deberias hacer un “Open”. Por otra parte y en el mismo orden , veo que estás utilizando un “Where” como condición del borrado que quieres hacer, pero por lo menos en el código que enviaste noto el siguiente error: Tu código Incorrecto: Query2.SQL.Text:='DELETE * FROM agenda WHERE Nombre'); Lo correcto: Ejemplo: Quieres Borrar Un Registro que tiene entre otras cosas un campo llamado Nombre que tiene almacenado --> ‘Juan’… Entonces para que tengas la idea, podría ser: VariableNombre:= ‘Juan’; y sustituye tu línea de código por esta: Query2.SQL.Text:='DELETE * FROM agenda WHERE Nombre = ' + QuotedStr(VariableNombre) ); En Resumen yo utilizaría los Querys Standar, y sería algo como esto: Query2.Close; Query2.Clear; Query2.SQL.Text:='DELETE * FROM agenda WHERE Nombre = ' + QuotedStr(VariableNombre) ); Query2.ExecSQL; // Borramos el registro activo. Y si lo quieres un poco más decente: With Query2 Do Begin Close; Sql.Clear; Sql.Text:='DELETE * FROM agenda WHERE Nombre = ' + QuotedStr(VariableNombre)); ExecSQL; End; Suerte...
__________________
"La unión del Código hace la Fuerza" LMCV |
|
|
|