Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Providers (https://www.clubdelphi.com/foros/forumdisplay.php?f=10)
-   -   Problema con ApplyUpdate en relación maestro/detalle (https://www.clubdelphi.com/foros/showthread.php?t=81672)

Ignacio Gentile 06-12-2012 13:54:06

Problema con ApplyUpdate en relación maestro/detalle
 
Tengo una relación maestro detalle entre la tabla clientes y la tabla lista de precio. Para ello utilizo los siguientes componentes:
  • dtsCliente (TAdoDataSet) --> Tiene asignada la consulta que me trae los registros de la tabla clientes
  • dtsListaPrecioCliente (TAdoDataSet) --> Tiene creado un parámetro (id_cliente). Trae los registros de la tabla lista_precio_clientes que cumplen con la igualdad de id_cliente
  • dtpCliente (TDataSetProvider) --> Asociado al componente dtsCliente
  • cdsCliente (TClientDataSet) --> Asociado al componente anterior.
  • cdsListaPrecioCliente (TClientDataSet) --> Asociado al componente cdsCliente mediante dataSetField=cdsClientedstListaPrecioCliente
  • dsCliente (TDataSource) --> Asociado a dtsCliente.

El primer problema que se me presenta es que al hacer un insert sobre cdsCliente no me autoincrementa el valor de la clave (id_cliente). Para este caso probé poner la propiedad AutoGenerateValue del campo correspondiente en TRUE pero no funciona. También he probado en asignar yo el valor desde una grilla y en dicho caso anda bien (al hacer un insert en el detalle, asigna el valor ingresado a id_cliente en la tabla detalle).
Todo funciona bien hasta que hago el applyUpdate. En este caso sale un error de que no se permite el valor NULL para id_cliente (en caso de que no le asigne manualmente dicho código) o el error de que el valor de id_cliente para la tabla lista_precio_cliente no existe en la tabla Clientes (en caso de asignar manualmente el id desde la grilla).

Otra cosa que he probado es poner pfInKey = True en la propiedad ProviderFlags de los campos que son claves.

No sé por donde probar ya que soy nuevo en esto de trabajar en capas y estoy haciendo mi primera aplicación de prueba!

Gracias por la ayuda!

Rockin 26-12-2012 12:43:36

Deberás crear el campo autoincrement en la Base de Datos, para que lo genera al insertarlo automáticamente.

Saludos.


La franja horaria es GMT +2. Ahora son las 06:03:38.

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