Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-02-2012
agustinbus agustinbus is offline
Miembro
 
Registrado: ago 2007
Posts: 44
Poder: 0
agustinbus Va por buen camino
Error: IBQuery: cannot modify a read-only dataset

Hola como estan? estoy realizando una aplicacion con BD Firebird y utilizo los componentes IB.
Al tratar de insertar o modificar un registro me aparece el error:

IBQuery: cannot modify a read-only dataset

EDITO: El IBTransaction lo tengo en Read Commited


Espero puedan ayudarme en solucionarlo. Saludos!

Última edición por agustinbus fecha: 27-02-2012 a las 01:34:47.
Responder Con Cita
  #2  
Antiguo 27-02-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola agustinbus.

¿ Podrías poner la parte del código donde realizas la modificación o inserción ?

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 27-02-2012
agustinbus agustinbus is offline
Miembro
 
Registrado: ago 2007
Posts: 44
Poder: 0
agustinbus Va por buen camino
Hola ecfisa! claro que si, gracias por responder tan rapidamente. En un boton tengo este codigo:

Código:
if fAddTable.Caption = 'Add table' then
    begin
      if (JvEdit1.Text = '') then
        begin
          MessageBox(handle,'Table ID field are required','Required fields',MB_OK);
        end
      else
        begin       
          Form1.QMesas.Open;
          Form1.QMesas.Insert;
          Form1.QMesasSECTOR.Value := Form1.QSectoresCODIGO.Value;
          Form1.QMesasESTADO.Value := 'READY';
          Form1.QMesasPERSONAS.Value := StrToInt(JvSpinEdit1.Text);
          Form1.QMesasCODIGO.Value := JvEdit1.Text;
          Form1.QMesasWIDTH.Value := 60;
          Form1.QMesasHEIGHT.Value := 60;
          Form1.QMesasLEFT.Value := 300;
          Form1.QMesasTOP.Value := 300;
          if RadioButton1.Checked = TRUE then
            begin
              Form1.QMesasFUMADOR.Value := RutaFumador;
            end
          else
            begin
              Form1.QMesasFUMADOR.Value := RutaNoFumador;
            end;
          Form1.QMesas.Post;
          fAddTable.Close;
Explico un poco mas del problema. Estaba realizando el proyecto en access pero decidi cambiar a firebird ya que no es una bd de escritorio como access, y es mas sencilla la distribucion del sistema.

Ese es el codigo que tenia ccuand hacia las inserciones en access, pero ahora siguiendo un poco el tutorial para novatos creado por caral(si bien recuerdo) coloque unIBDatabase enlazado a un IBTransaction y los IBQuery correspondientes con Datasources enlazados a ellos para poder mostrarlos en una grilla. La coneccion funciona correctamente pero al querer insertar un registro aparece el error.
Responder Con Cita
  #4  
Antiguo 27-02-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola agustinbus.

Si estas usando un TIBQuery, el uso más o menos sería así:
Código Delphi [-]
...
  with QMesas do
  begin
    Close;
    SQL.Clear;
    SQL.Add('INSERT INTO TU_TABLA (SECTOR,ESTADO,PERSONAS,CODIGO,WIDTH,HEIGHT,ALEFT,TOP)');
    SQL.Add('VALUES(:SEC,:EST,:PER,:COD,:WID,:HEI,:LEF,:TOP)');
    ParamByName('SEC').Value:=  Form1.QSectoresCODIGO.Value;
    ParamByName('EST').Value:=  'READY';
    ParamByName('PER').Value:=  StrToInt(JvSpinEdit1.Text);
    ParamByName('COD'.Value:=   JvEdit1.Text;
    ParamByName('WID').Value:=  60;
    ParamByName('HEI').Value:=  60;
    ParamByName('LEF').Value:=  300;
    ParamByName('TOP').Value:=  300;
    ExecSQL;
    Close;
  end;
end;
Donde "TU_TABLA" es el nombre de la tabla y el resto son los campos cuyos nombres y tipos intenté que correspondieran lo más posible con los tuyos.

Pero si te interesa trabajar en forma similar a un TTable con las ventajas de un TQuery con los componentes IBX yo usaría un TIBDataSet.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 28-02-2012
agustinbus agustinbus is offline
Miembro
 
Registrado: ago 2007
Posts: 44
Poder: 0
agustinbus Va por buen camino
Muchas gracias por la respuesta, estube probando con una actualizacion y sale un error. Adapte tu codigo y busque en google como es la sintaxis de update. Pero me sale el siguiente error:

'Dynamic SQL Error SQL error code= -104
token unknown -line 1, column 55
LEFT'.


y despues de darle a continue me sale otro error:

'Unknown SQL data type (0)'.


el codigo que tengo es el siguiente:

Código:
with QMesas do
        begin
          Close;
          SQL.Clear;
          SQL.Add('UPDATE MESAS SET WIDTH = :WID, PERSONAS = :PER, HEIGHT = :HEI, LEFT = :LEF, TOP = :TO ');
          SQL.Add('WHERE CODIGO = :COD');
          ParamByName('WID').Value := ctrl.Width;
          ParamByName('HEI').Value := ctrl.Height;
          ParamByName('PER').Value := ctrl.Tag;
          ParamByName('LEF').Value := ctrl.Left;
          ParamByName('TO').Value := ctrl.Top;
          ParamByName('COD').Value := Form1.QMesasCODIGO.Value;
          ExecSQL;
          Open;
        end;

Si saco el campo LEFT de la sentencia SQL no sale ningun error, pero no realiza la actualizacion.

Espero puedas ayudarme. Saludos!
Responder Con Cita
  #6  
Antiguo 28-02-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Agustín.
Cita:
'Dynamic SQL Error SQL error code= -104
token unknown -line 1, column 55
LEFT'.
Ese error te está diciendo que no existe un campo llamado "LEFT" en la tabla "MESAS".

En un principio me llamó la atención que la tabla "MESAS" que supongo almancena la cantidad de personas, el sector de ubicación, etc. de un grupo de mesas, tenga como nombres de campo a LEFT,WIDTH, HEIGHT, TOP...
Disculpame si te hago una pregunta tonta ¿ No estarás intentando darle las propiedades Left,Width,Height,Top de TControl al componente de datos TIBQuery ?

Aclararía mucho que nos dieras una brebe descripción sobre que almancenan los campos de la tabla "MESAS" (a que concepto corresponde lo que se guarda en TOP , LEFT o WIDTH por ejemplo )

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Error DataSet is read Only mightydragonlor Lazarus, FreePascal, Kylix, etc. 10 08-11-2008 21:43:16
Error 'Cannot modify a read-only dataset' karaoke Varios 8 10-12-2007 06:38:31
Al intentar modificar un campo me dice "Cannot modify a read-only dataset" raulahol SQL 1 22-01-2007 05:16:53
error cannot modify a read-only dataset Renees Varios 2 30-09-2006 00:39:27
Query1 cannot modify a read-only dataset Nbull SQL 14 14-12-2004 10:29:35


La franja horaria es GMT +2. Ahora son las 10:23:29.


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
Copyright 1996-2007 Club Delphi