PDA

Ver la Versión Completa : Actualización Query con Join en DBExpress


ibarrols
26-06-2003, 00:11:42
Hola foro !!

Mi problema es que sale un error al momento de realizar cualquier
actualización en la base de dato cuando tengo un query que utiliza también
otra tabla relacionada.

Estoy trabajando con DBEXPRESS y D7.
Tengo definido un TSQLDataSet con un query, por ejemplo:
SELECT cliente.idCliente, cliente.nombre, pais.nombre
FROM cliente
JOIN pais USING (idPais)

También tengo definido un TDataSetProvider, un TClientDataSet y un
TDataSource.
Al trabajar de esta manera el insert o Edit en el ClientDataSet funciona
bien, pero al momento de realizar un ApplyUpdate me sale un mensaje de error
diciéndome que el campo 'pais.nombre' no existe en la tabla 'cliente' cuando
en realidad pertenece a la tabla país y solo lo tengo a los fines de
mostrarlo.

¿Qué es lo que estoy haciendo mal? ¿como puedo utilizar un query con join
pero que en la actualización no me exiga los campos que pertenecen al join y
que no es mi intenciòn actulizar?

Gracias por la ayuda

jlcasih
26-06-2003, 15:41:01
Te envio un link en donde te explican bien el tema aunque es en midas la logica es la misma:

http://community.borland.com/article/0,1410,22571,00.html#Joins

Mucha suerte.Espero te sirva.
Saludos..

linsua
26-06-2003, 17:03:55
Hola, no se si ya tienes la respuesta, pero el problema es facil de solucionar, debes tocar las Flags de los Campos que los DataSet. Poner la propiedad Update = False

un saludo y suerte

ibarrols
26-06-2003, 18:33:58
>debes tocar las Flags de los Campos que los DataSet. Poner la
>propiedad Update = False

como se utilizan los Flags? Creo que la solucion es la que me dices pero no logro implementarlo.

Les agradecere la ayuda para entender este tema.

linsua
26-06-2003, 19:31:26
Hola, si creas los campos explicitamente en tiempo de diseño con el editor de campos de los DataSet, no tienes mas que seleccionar el campo que no requiere actualizacion y en el inspector de objetos buscar la propiedad Flags

un saludo

ibarrols
26-06-2003, 21:13:56
Problema solucionado. El flag que mencionas es el ProviderFlags
Mil gracias por la ayuda !!!