2009-11-17 10 views
3

Je voudrais savoir s'il est possible d'imbriquer un ensemble de données dans un ensemble de données, puis d'imbriquer cet ensemble de données avec un autre ensemble de données. Donc 3 niveaux de nidification. Actuellement, je n'arrive à imbriquer qu'un jeu de données dans l'autre. Lorsque vous tentez d'imbriquer le troisième niveau, la base de données parvient à s'exécuter correctement la première fois que je compile mon programme et que je peux entrer des données. Lorsque je tente ensuite d'exécuter le programme la seconde fois, je lance une exécution provoquée par EDBClient avec le message "discordance dans le datapacket".Imbrication de jeux de données avec TClientdatasets à plus de deux niveaux?

Donc je voudrais savoir s'il est possible d'imbriquer 3 niveaux d'ensembles de données les uns dans les autres?

Sincères salutations Riaan

Répondre

1

réponse simple est oui, vous pouvez avoir trois niveaux de jeux de données imbriquées les unes dans les autres. J'ai des exemples de ClientDataSets où l'imbrication descend 6 niveaux. En fait, je ne pense pas qu'il y ait une limite à la profondeur d'imbrication, autre que celle imposée par les contraintes de mémoire.

+1

Voir le message de jachguate. –

2

histoire courte:

Essayez avec Delphi XE ... pour mon projet principal aujourd'hui cette résolu le bug.

longue histoire:

je fait face au même problème que vous avez avec 3 ou plusieurs niveaux de jeux de données imbriquées quand il y a une erreur sur le côté de la base de données avec Delphi 2010.

La précédente dernière version I fortement J'ai utilisé Delphi 2007 sans problèmes, donc il y a une chance que le mauvais comportement ait été introduit dans Delphi 2009 ou Delphi 2010.

J'ai remonté ce problème à midas.dll côté client, et cela arrive peu importe si vous êtes reliant statiquement Midas en utilisant MidasLib. Midas "pense" que le paquet qu'il reçoit du serveur est mal formé, et déclenche l'exception. Cette exception casse le processus de réconciliation d'erreur "normal", donc il n'y a aucun moyen d'essayer de récupérer à partir d'une erreur: OnReconcileError ne déclenche jamais et le processus est annulé en raison de l'absence de blocs try/except dans cette partie de la VCL.

Je suis sûr que c'était un bug, mais pas si cela se produit sur le serveur ou sur le côté client, Lorsque je travaillais à produire un projet pour mettre un ticket de support, tout en essayant de le réduire au minimum , il arrive Delphi XE a été libéré et je suis sous SA, donc je l'obtiens à la dernière minute.

Télécharger, installer, configurer ... puis, j'ai compilé mon pour soutenir le projet et tout a bien fonctionné. J'ai compilé mon projet principal: celui où j'étais confronté à de réels problèmes avec les utilisateurs et le fait que j'utilise des exceptions dans les déclencheurs de bases de données et les procédures stockées en raison des dernières validations ou changements d'état/condition. Tout a bien fonctionné. L'utilisateur reçoit des messages d'erreur significatifs et l'application a récupéré sa capacité à effectuer des transformations de données et à réessayer à la volée, ou à demander à l'utilisateur quoi faire dans certaines circonstances.

Désolé,, je n'ai trouvé aucune solution de contournement lors de mes efforts pour diagnostiquer et signaler ce problème à Embarcadero, peut-être que quelqu'un d'autre peut vous aider à mieux sans suggérer de mise à niveau.