Bonjour à tous !
Je me tourne vers vous car je n'arrive pas à trouver de solution "solide" à mon problème. Peut être que vous pourriez m'aider ?
Voici le cadre : je voudrais pouvoir créer une commande à partir d'un devis. J'ai une table T_devis (clé primaire ID_devis) et une table T_devis_lignes qui contient les infos sur les articles contenus dans le devis, liée à la table T_devis par le champ ID_devis. La partie "Commandes" est concue de la même facon que la partie "Devis", une table T_commande et une table liée T_commande_lignes. A partir de mon formulaire F_devis qui m'affiche les infos du devis et les lignes associées (grâce à un sous formulaire), j'ai un bouton pour créer une commande à partir de ce devis.
J'ai crée une requête ajout (R_CDE_DP) qui crée un nouvel enregistrement dans ma table T_commande, à partir de la table T_devis, pour le devis affiché dans le formulaire, puis j'ouvre mon formulaire F_commande sur le dernier enregistrement crée. Jusqu'ici tout fonctionne bien. Voici le code VBA associé à mon bouton, qui n'est pas terminé :
une fois sur le dernier enregistrement, dans mon formulaire, je peux récupérer facilement mon ID_commande qui vient d'être crée et l'utiliser pour faire ma requête ajout sur les lignes. (faire une requête ajout dans la table T_commande_lignes avec le champ ID_commande ainsi défini). Voici comment je voyais les choses...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Private Sub btn_commander_Click() Dim ID_CDE DoCmd.OpenQuery "R_CDE_DP" DoCmd.OpenForm "F_commande", acNormal, , , acFormEdit, acWindowNormal DoCmd.GoToRecord acDataForm, "F_commande", acLast End Sub
Le problème c'est que je suis en multi utilisateurs, j'ai peur que le "gotorecord" envoie mon utilisateur 1 sur une commande qui vient d'être crée par mon utilisateur 2 ! C'est en cela que je dis que ma solution ne me parait pas "solide" ! Car la récupération de la clé primaire se fait sur le fomulaire, après la requête. Ainsi j'ai peur d'associer des lignes de commandes de ma commande1 à la commande2.
La question est donc de savoir récupérer la bonne valeur de ID_commande créee par la première requête ajout pour être sur d'ajouter correctement mes lignes ? Faudrait il faire une "Grosse" requête qui ajouterait les enregistrement dans les deux tables presque "simultanément" ?
Sinon j'ai une question subsidiaire, comment pourrais-je récupérer la valeur du ID_commande crée pour l'utiliser en VBA ? J'ai trouvé dans la FAQ ceci :, mais comment utiliser en VBA le résultat de ce code SQL ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part Select @@identity From maTable;
J'espère que mon explication est assez claire, et que vous comprenez quelles sont mes craintes par rapport à cela...
Merci d'avance pour l'aide que vous pourrez m'apporter !
Bien cordialement,
Pierre
Partager