et j'ai vérifié par une autre requête, l'enregistrement a bien été créé
dans la table.
En revanche, il arrive que dans le contrôle Data, l'enregistrement
n'apparaisse pas, ce qui pose problème lorsqu'on veut le sélectionner.
Logiquement, l'instruction qui devrait se charger de faire apparaître le
nouvel enregistrement dans le formulaire est Data1.UpdateControls, si je
ne m'abuse ?
Si je la déclenche à ce moment-là, en mode pause, pas de succès, le
nombre d'enregistrements de Data1.Recordset ne change pas, et n'inclut
toujours pas l'enregistrement qui vient d'être créé, même si j'ajoute
Data1.Refresh.
A vrai dire c'est quelque chose de pas très catholique que je vous
demande de m'aider à faire, puisque je synchronise deux
sous-formulaires, sur un formulaire MDI. ça marche dix fois, vingt fois,
et à l'improviste l'adresse n'a pas été créée. C'est plus souvent lors
de la première création après ouverture de l'application que le problème
se pose. Une fois que j'ai réussi à créer un enregistrement, je peux le
supprimer et le recréer vingt fois sans problème.
Me serais-je trompé sur le rôle de Data1.UpdateControls, ou la table
risquerait-elle d'être verrouillée par un formulaire pendant que je
cherche à la mettre à jour sur l'autre ?
Pour un truc qui arrive une fois tous les X, je suis tenté de m'obstiner
quelque peu, pour trouver ce qui fait que cette fois-là la
synchronisation n'est pas possible, alors que toutes les autres fois si.
Déjà, pour commencer, ai-je bien compris le rôle de Data1.UpdateControls ?
Ce dernier jeu d'enregistrements ne contient que l'enregistrement qui vient d'être créé, lequel ne peut pas être atteint à partir de Data1.
J'ai mis dbSeeChanges comme dit la fiche, j'ai fermé le jeu d'enregistrements pour plus de sûreté, et en le rouvrant je trouve bien le nouvel enregistrement, mais rien d'autre avec (en n'oubliant pas MoveLast bien sûr). J'ai dû louper un épisode, non ?
J'ai aussi fait un essai avec une requête INSERT INTO.
Toujours pareil : une fois que l'utilisateur a créé une fois un enregistrement (la deuxième adresse dans la table), il doit passer deux fois dans chaque sens d'un formulaire à l'autre pour déclencher la synchronisation deux fois. La première fois, il a une erreur 3426, "méthode annulée par un objet associé", et ensuite tout se passe bien.
Si l'utilisateur saisit quelque chose dans les champs avant la deuxième synchronisation, la saisie est perdue.
Si je tente de faire les deux synchronisations automatiquement c'est comme si je flutais ...
L'idée commence à germer dans ma tête d'imposer un minimum de deux enregistrements dans la table d'adresses (dont un vide par exemple), mais j'aimerais quand même bien comprendre ce qui se passe ...
Voici la tronche de la table : Base de données: C:Documents and Settings etc ...
Définition de la table pour AdressePostale
Champs: (Nom - Type - Taille Propr.) ------------------------------------------------------------ Adresse2 - Text - 50 AllowZeroLength Adresse3 - Text - 50 AllowZeroLength Adresse4 - Text - 50 AllowZeroLength Adresse5 - Text - 50 AllowZeroLength BureauDistributeur - Text - 50 AllowZeroLength CodeAdresse - Text - 5 Required FixedLength CP - Text - 10 AllowZeroLength
Ce dernier jeu d'enregistrements ne contient que l'enregistrement qui
vient d'être créé, lequel ne peut pas être atteint à partir de Data1.
J'ai mis dbSeeChanges comme dit la fiche, j'ai fermé le jeu
d'enregistrements pour plus de sûreté, et en le rouvrant je trouve bien
le nouvel enregistrement, mais rien d'autre avec (en n'oubliant pas
MoveLast bien sûr). J'ai dû louper un épisode, non ?
J'ai aussi fait un essai avec une requête INSERT INTO.
Toujours pareil : une fois que l'utilisateur a créé une fois un
enregistrement (la deuxième adresse dans la table), il doit passer deux
fois dans chaque sens d'un formulaire à l'autre pour déclencher la
synchronisation deux fois. La première fois, il a une erreur 3426,
"méthode annulée par un objet associé", et ensuite tout se passe bien.
Si l'utilisateur saisit quelque chose dans les champs avant la deuxième
synchronisation, la saisie est perdue.
Si je tente de faire les deux synchronisations automatiquement c'est
comme si je flutais ...
L'idée commence à germer dans ma tête d'imposer un minimum de deux
enregistrements dans la table d'adresses (dont un vide par exemple),
mais j'aimerais quand même bien comprendre ce qui se passe ...
Voici la tronche de la table :
Base de données: C:Documents and Settings etc ...
Définition de la table pour AdressePostale
Champs: (Nom - Type - Taille Propr.)
------------------------------------------------------------
Adresse2 - Text - 50 AllowZeroLength
Adresse3 - Text - 50 AllowZeroLength
Adresse4 - Text - 50 AllowZeroLength
Adresse5 - Text - 50 AllowZeroLength
BureauDistributeur - Text - 50 AllowZeroLength
CodeAdresse - Text - 5 Required FixedLength
CP - Text - 10 AllowZeroLength
Ce dernier jeu d'enregistrements ne contient que l'enregistrement qui vient d'être créé, lequel ne peut pas être atteint à partir de Data1.
J'ai mis dbSeeChanges comme dit la fiche, j'ai fermé le jeu d'enregistrements pour plus de sûreté, et en le rouvrant je trouve bien le nouvel enregistrement, mais rien d'autre avec (en n'oubliant pas MoveLast bien sûr). J'ai dû louper un épisode, non ?
J'ai aussi fait un essai avec une requête INSERT INTO.
Toujours pareil : une fois que l'utilisateur a créé une fois un enregistrement (la deuxième adresse dans la table), il doit passer deux fois dans chaque sens d'un formulaire à l'autre pour déclencher la synchronisation deux fois. La première fois, il a une erreur 3426, "méthode annulée par un objet associé", et ensuite tout se passe bien.
Si l'utilisateur saisit quelque chose dans les champs avant la deuxième synchronisation, la saisie est perdue.
Si je tente de faire les deux synchronisations automatiquement c'est comme si je flutais ...
L'idée commence à germer dans ma tête d'imposer un minimum de deux enregistrements dans la table d'adresses (dont un vide par exemple), mais j'aimerais quand même bien comprendre ce qui se passe ...
Voici la tronche de la table : Base de données: C:Documents and Settings etc ...
Définition de la table pour AdressePostale
Champs: (Nom - Type - Taille Propr.) ------------------------------------------------------------ Adresse2 - Text - 50 AllowZeroLength Adresse3 - Text - 50 AllowZeroLength Adresse4 - Text - 50 AllowZeroLength Adresse5 - Text - 50 AllowZeroLength BureauDistributeur - Text - 50 AllowZeroLength CodeAdresse - Text - 5 Required FixedLength CP - Text - 10 AllowZeroLength