Bonjour,

Je souhaite ajouter une "Localite" à ma BDD access. Cette dernière génère l'ID, il me faut donc récupérer celui-ci.

Voici mon code :

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
Dim con As New OleDb.OleDbConnection
        Dim cmd As New OleDb.OleDbCommand
        Dim dr As OleDbDataReader
        con.ConnectionString = ModuleGeneral.cheminBDD
        con.Open()
        cmd = New OleDbCommand("insert into Localite(ID_Pays,CP,Denomination) values(" & ID_Pays & "," & CP & ",'" & NomComune & "')", con)
        cmd.ExecuteNonQuery()
        cmd = New OleDbCommand("SELECT ID_Localite FROM Localite WHERE ID_Pays = " & ID_Pays & " AND CP = " & CP & " AND Denomination ='" & NomComune & "'", con)
        dr = cmd.ExecuteReader()
        While dr.Read
            Me.ID_Localite = dr("ID_Localite")
        End While
 
        con.Close()
        listeLocalite.Add(Me)
        MsgBox("Localité correctement ajoutée")
Etant donné qu'il n'y a qu'une localite repondant aux critères de recherches, me suis dit, récupéront la valeur de cette façon :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Me.ID_Localite = dr("ID_Localite")
cependant il faut l'entourer de while.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
While dr.Read
            Me.ID_Localite = dr("ID_Localite")
        End While
Pourquoi ? Y a t'il moyen d'éviter les while ? Faut-il utiliser autre chose que OleDbDataReader lorsqu'on on ne recupère pas un enregistrement mais juste une valeur ? Une alternative pour récupérer l'ID ?

Merci beaucoup !