Bonjour

alors voila :

J'ai une table qui s'appelle "AP" qui ressence tout les automates de mon client, et un autre, "Standards" qui recense touts les standards de programmation de ce même client. Entre les 2, il y a une Table "StandardsInstalles" qui fait le lien, pour savoir quel standard est installé dans quel AP, en se liant sur les n°identifiants de "AP" et "Standards" ("AP" et "Standards" sont du coté 1 de la relation avec "StandardsInstalles")

Jusque là tout va bien

J'ai un formulaire "VueAP" qui me permet de voir les info d'un AP à la fois, qui contient un sous-formulaire qui va chercher dans une requête les données qui correspondent aux standards installées (en allant taper dans des tables derrière "Standards"). La requête fonctionne bien.

La où ça se complique, c'est quand je veux ajouter un standard à un AP (soit un nouveau champ dans "StandardsInstalles")
Pour ça, j'ai un listbox dans mon formulaire principale qui liste les standards, et un bouton à coté qui contient le code
Ca marche bien, sauf pour (c'est dans le titre) récupérer le n° d'identifiant de l'AP. J'utilise la méthode GetRows avec Me.CurrentRecord, et je vais piocher dans le résultat de la méthode
Et là, ça me retourne (ligne 24 du code) le n° d'Id de 143 ligne en dessous de celui que j'attends.

J'ai tendance à penser que ça ne viens pas du code, car j'ai recopié cette technique d'une autre partie de la base fonctionnant de la même manière, après, je suis pas expert en BDD

Si vous avez des pistes pour corriger ça, où même une autre solutions, je suis preneur
Merci d'avance

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
Private Sub BtnInsertStd_Click()
 
    Dim dbBCV As Database
    Dim rctStdAP As Recordset
    Dim rctAPs As Recordset
    Dim vAPData As Variant
    Dim vIdAP As Variant
    Dim lActiveData As Long
 
    'Récupération du n° d'AP
    lActiveData = Me.CurrentRecord
 
    'Test d'un std bien sélectionné
    If Not IsNumeric(LstBxStandards.Value) Then Exit Sub
 
'Ajout du standard au projet
    'définition de la base et ouverture des tables
    Set dbBCV = CurrentDb
    Set rctStdAP = dbBCV.OpenRecordset("StandardsInstalles", dbOpenTable)
    Set rctAPs = dbBCV.OpenRecordset("AP", dbOpenTable)
 
    'récupération de l'Id AP
    vAPData = rctAPs.GetRows(lActiveData)
    vIdAP = vAPData(iAPChampIdAP, lActiveData - 1)
 
    'Ajout du std dans l'AP
 
    With rctStdAP
        .AddNew
        .Fields(iStdAPChampIdAP).Value = vIdAP
        .Fields(iStdAPChampIdStd).Value = LstBxStandards.Value
        .Update
    End With
 
    'fermeture tables et base
 
    rctStdAP.Close
    Set rctStdAP = Nothing
 
    rctAPs.Close
    Set rctAPs = Nothing
 
    dbBCV.Close
    Set dbBCV = Nothing
 
    'actualisations des données du formulaire
    Me.Requery
    Me.Refresh
 
End Sub
Merci d'avoir lu ce roman. Je serai en dédicace à la Fnac St. Lazare demain vendredi 32 Juillet rayon CD black métal