Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-04-2007
pjmedina pjmedina is offline
Miembro
 
Registrado: abr 2006
Posts: 84
Poder: 19
pjmedina Va por buen camino
Wink Alguien sabe como hacer que una query sea modificable

Hola a tod@s.
Alguien sabria decirme que diferencia existe entre una Query (TQuery) modificable y una que no lo es.

Os comento el porqué de mi pregunta:

he creado una tquery con la siguiente consulta:
"select * from tabla1 t1 join tabla2 t2 on t1.codigo=t2.cod_referencia". He puesto la propiedad Request Live a true pero dice que la Table is read only.

Se que existe una propiedad llamada CanModify que te dice si permite o no modificar la Query, pero no me ayuda para poder corregirla.

Espero que podais ayudarme.

Saludos y muchas gracias a tod@s por colaborar.
Responder Con Cita
  #2  
Antiguo 11-04-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
La verdad no entiendo muy bien, para que modificar en una consulta la propiedad Request Live, dices que es un query y te dice que la tabla es read only.
Sinceramente no lo entiendo.
Otra sugerencia, el codigo delphi, colocalo con las etiquetas se entendera mejor.
Saludos
Responder Con Cita
  #3  
Antiguo 11-04-2007
pjmedina pjmedina is offline
Miembro
 
Registrado: abr 2006
Posts: 84
Poder: 19
pjmedina Va por buen camino
Smile

A ver intento expresarme mejor....

Tengo un Tquery, un DataSource, y un formulario con un DbGrid. Lo que quiero hacer es poder modificar valores en el grid, pero me dice el siguiente mensaje de error "Table is read only". Pero no estoy utilizando un TTable estoy utilizando un TQuery.

Me gustaría saber el porqué mi consulta no es modificable.


No se si me entenderás ahora.


Saludos y gracias por contestar.
Responder Con Cita
  #4  
Antiguo 11-04-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Que base de datos usas?
Saludos
Responder Con Cita
  #5  
Antiguo 11-04-2007
pjmedina pjmedina is offline
Miembro
 
Registrado: abr 2006
Posts: 84
Poder: 19
pjmedina Va por buen camino
Utilizo Firebird 1.5
Responder Con Cita
  #6  
Antiguo 11-04-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Tienes que utilizar un TUpdateSQL, lo ligas al Query y cambias la propiedad CachedUpdates a True.

En el TUpdateSQL, generas las sentencias SQL dando doble click y te mostrará una pantalla con un boton de Generate SQL, dale click y OK.

Nos comentas que paso.

Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #7  
Antiguo 11-04-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Me quedo un poco en ascuas, no entiendo el porque, pudiera ser que la base de datos tenga alguna restriccion.
Has provado con otro componente como ado?
Saludos
Responder Con Cita
  #8  
Antiguo 11-04-2007
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
En el DataSet tienes que incluir correctamente las propiedades 'InsertSQL', 'ModifySQL', 'DeleteSQL' y 'RefreshSQL'.

Si lo que utilizas es un TIBQuery, lo tienes que relacionar con otro componente TIBUpdateSQL.

Si en cambio utilizas un componente TIBDataSet puedes incluir las sentencias correspondientes a inserción, modificación, borrado y refresco en el mismo componente pulsando el botón derecho y eligiendo 'DataSet Editor'.

Si precisas más información al respecto de como completar esas sentencias, busca en el foro, o simplemente expón de nuevo tus dudas al respecto.

Saludos,
__________________
Piensa siempre en positivo !
Responder Con Cita
  #9  
Antiguo 11-04-2007
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Vaya !!! Cuantas respuestas de golpe !
__________________
Piensa siempre en positivo !
Responder Con Cita
  #10  
Antiguo 11-04-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Bueno, pero varias muy buenas como la tuya y la de egostar.
Yo estoy como en las grandes ligas, dando batazos.
Saludos
Responder Con Cita
  #11  
Antiguo 11-04-2007
pjmedina pjmedina is offline
Miembro
 
Registrado: abr 2006
Posts: 84
Poder: 19
pjmedina Va por buen camino
muchas gracias por preocuparos
Responder Con Cita
  #12  
Antiguo 11-04-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Caral, el problema es una query que incluye Inner joins... y eso será siempre de solo lectura, aquí no sirve la propiedad RequestLive ni CanModify.

Si no tuviese inner joins, y solo recopilara datos de una sola tabla, poniendo a True la propiedad RequestLive, ya podría insertar y modificar datos.

Al tener inner joins, se debe hacer lo propuesto por guglu.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #13  
Antiguo 11-04-2007
pjmedina pjmedina is offline
Miembro
 
Registrado: abr 2006
Posts: 84
Poder: 19
pjmedina Va por buen camino
Question

A ver, parece que si que va a funcionar. Tan solo me queda saber como puedo hacer para que unicamente modifique.
En que evento le paso el valor del campo del grid que yo quiero al MODIFYSQL para que me modifique el valor de la query?


Ah! por cierto utilizo TQuery ,TDataSet
Responder Con Cita
  #14  
Antiguo 11-04-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por Lepe
Caral, el problema es una query que incluye Inner joins... y eso será siempre de solo lectura, aquí no sirve la propiedad RequestLive ni CanModify.

Si no tuviese inner joins, y solo recopilara datos de una sola tabla, poniendo a True la propiedad RequestLive, ya podría insertar y modificar datos.

Al tener inner joins, se debe hacer lo propuesto por guglu.

Saludos
Muy cierto, no vi la sentencia SQL, aunque debo decir que no lo sabia tampoco.

En todo caso lo que necesita solamente seria un TIBDataSet y omitir el TIBQuery, corrijanme si estoy mal.

Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #15  
Antiguo 11-04-2007
avmm2004 avmm2004 is offline
Miembro
 
Registrado: jun 2006
Ubicación: Santa cruz de Tenerife, Islas Canarias
Posts: 500
Poder: 18
avmm2004 Va por buen camino
Por lo general, el resultado de una consulta que implique mas de una tabla es siempre de solo lectura, independientemente de la base de datos, los componentes y de las propiedades que quieras ponerle. Si quieres que el resultado del query sea modificable (asociandolo a un grid, por ejemplo) has de usar una sola tabla o en su caso un view (y en este ultimo con restricciones).
Responder Con Cita
  #16  
Antiguo 12-04-2007
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
Como ya dijo avmm2004 el un query multitabla siempre es de solo lectura. No se puede modificar directamente, para poder hacerlo hay que crear los querys necesarios para cada caso (borrar, insertar y actulizar) como lo dice gluglu.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #17  
Antiguo 12-04-2007
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Cita:
Ah! por cierto utilizo TQuery ,TDataSet
Es mejor que utilices IBX (Interbase), pues las respuestas que te han dado mas arriba estan relacionadas con esos componentes, ademas de que es muchisimo mejor acceder a esa base de datos con esos compoentens que con lo que estas ahora mismo.

Para acceder a Firebird conozco estos compoentes: IBX(Interbase), MDOLIB y FIBPLus. Cualquiera es superior.

Saludos
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #18  
Antiguo 12-04-2007
pjmedina pjmedina is offline
Miembro
 
Registrado: abr 2006
Posts: 84
Poder: 19
pjmedina Va por buen camino
Lightbulb

Finalmente he decidido poner un TTable, y ponerle campos LOOKUP.

Lo que no se si el rendiemiento del programa será el mismo. He añadido unos 6 campos LookUp.
Responder Con Cita
  #19  
Antiguo 12-04-2007
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Un TTable te va a bajar el rendimiento muchísimo. No se debería utilizar nunca en un entorno Cliente-Servidor.

Deberías utilizar siempre un Query (bien en form de TQuery o TDataSet). Aunque sea más fácil trabajar sobre un TTable.
__________________
Piensa siempre en positivo !
Responder Con Cita
  #20  
Antiguo 12-04-2007
pjmedina pjmedina is offline
Miembro
 
Registrado: abr 2006
Posts: 84
Poder: 19
pjmedina Va por buen camino
Cita:
Empezado por gluglu
Un TTable te va a bajar el rendimiento muchísimo. No se debería utilizar nunca en un entorno Cliente-Servidor.

Deberías utilizar siempre un Query (bien en form de TQuery o TDataSet). Aunque sea más fácil trabajar sobre un TTable.
Entonces que me recomiendas, que cambie el TTable por un TQuery, y ponga campos LOOKUP al TQuery?
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
cxGrid, alguien sabe como? sakuragi Impresión 0 12-08-2005 22:50:14
Alguien sabe como hacer que tu aplicacion se ejecute... Supra Varios 7 05-02-2005 21:10:09
Alguien sabe como hacer un ShotDown a Firebird 1.51???? AGAG4 Conexión con bases de datos 3 28-10-2004 18:02:21
¿alguien sabe hacer esto? (conexion a mySQL desde delphi pero sin acceso...) seccion31 Internet 24 27-08-2004 17:14:23


La franja horaria es GMT +2. Ahora son las 16:45:39.


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