Hola.
Cita:
Empezado por Toni
Una vez funcionando esto añado los componentes DataSetProvider y los dos ClientDataSet
|
Supongo que solo añades un TDatasetProvider, el que va a usar el ClientDataset de cabecera.
Cita:
Empezado por Toni
No se el porque todavia pero si intento abrir el ClientDataSet1 (cabecera) me da un error (cannot perform this operation on a closet dataset), lo curioso es que abro el ClientDataSet2 y me abre los 2.
|
Curioso. Parece como si la relación estuviese al revés. Al abrir el ClientDataset de cabecera, debería abrir los dos.
En cambio no debe permitir abrir el ClientDataset de detalles (puesto que va unido al ClientDataset de cabecera), y si no recuerdo mal, el error que debe dar es el que comentas.
Cita:
Empezado por Toni
Para que me medio funcionase tuve que poner en los campos persistentes de los clientDataSet el flag pfInWhere a false en todos los campos que no pertenecian a la clave principal, eso al tener puesto en el DataSetProvider la porpiedad UpdateMode a upWhereKeyOnly (es esto normal?)
|
En absoluto, una vez configurado el UpdateMode a WhereKeyOnly, el único flag que debería tener en cuenta es el pfInKey. Es como si no se usará el DatasetProvider en el que has configurado el UpdateMode.
Cita:
Empezado por Toni
Otra cosa estraña que me hace es cuando doy de alta un nuevo detalle, si no es el primer detalle de esa cabecera me lo guarda sin problemas, si resulta que NO es el primer detalle de la cabecera no me lo guarda.
|
Esto tampoco es normal.
Tén en cuenta de que los campos de relación (IdEmpresa, IdLibro, IdDocumento) no los rellena automaticamente el ClientDataset. Por lo que tienes que hacerlo manualmente. Yo utilizo el
AfterInsert del ClientDataset de detalles.
Saludos.