Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   cxGrid con consulta externa(left outer join), no guarda (https://www.clubdelphi.com/foros/showthread.php?t=79968)

CHECHE81 24-08-2012 18:58:27

cxGrid con consulta externa(left outer join), no guarda
 
Saludos camaradas
Pues aqui les traigo un detalle para ver que sucede, lo que pasa es lo siguiente:

Tengo un SQLDataSet donde tengo la sigiente
consulta combinada externa::D

Código SQL [-]
SELECT p.*, sd.idCategoria  
from plantel as p 
left outer join dictamenp  as sd on sd.idP = p.id  
where  p. iA= 1   
and  p.sPNombre LIKE : pnom  
and   p.sClas LIKE : pclas order by   p.id


De la cual me traigo la categoria de cada registro de la tabla "plantel" que se encuentra
en otra tabla "dictamenp" hasta ahi todo bien, dicho SQLDataSet está ligado a un
DataSetProvider y a su vez este con un ClientDataSet, estos tres estan en un DataModule
junto con muchos más, exite una ventana Catálogos planteles donde tengo un un
DataSource el cual se conecta al ClientDataSet del DataModule y a su vez tengo
un cxGrid que se conecta al DataSource, el detalle es que cuando intento modificar
algún dato desde el cxGrid cualquiera que sea el cambio, y le doy guardar en su
navegador que habilite en las propiedades del cxGrid no me lo refleja en la base
de datos a menos que cambie la consulta del SQLDataSet a:

Código SQL [-]
SELECT p.* from plantel as p 
where  p. iA= 1   
and  p.sPNombre LIKE : pnom  
and  p.sClas LIKE : pclas 
order by   p.id

y entonces si me deja guardar los datos. No se si sea alguna propiedad de alguno de los
componentes que utilizo que me este faltando o asi sea su comportamiento original.

Cualquie dato es bienvenido ¡¡¡Saludos!!! ¡¡Gracias por su tiempo!!;)

AzidRain 24-08-2012 20:22:39

Las consultas que involucran a mas de una tabla no son editables. Por eso sí puedes hacerlo con el segundo código y no con el primero. Y nuevamente la misma aclaración, el grid no es más que la representación visual de los datos, no es quien en realidad los manipula (aunque lo parezca). Lo que tienes que hacer es de dos formas:

1.- La más fácil
En el grid solo muestras datos pero no editas nada y mediante un boton o click abres una ventana para editar el dato mostrado utilizando una sola tabla.

2.- La más compleja:
En el dataset introducir códigos SQL para cada caso: inserción, borrado y edición de datos de manera que puedas editarlo directamente en el grid.


La franja horaria es GMT +2. Ahora son las 21:21:21.

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