Bonjour à tous,
j'adapte un projet Access vers VB.NET en conservant les données dans une base ACCDB.
Pour me connecter à cette base j'utilise le provider "Microsoft.ACE.OLEDB.12.0".
Jusque là tout va bien, tout est adapté correctement ... ou presque.
Un détail me chagrine, je me suis embêté à mettre des jolies requêtes paramétrées, j'ai donné de jolis noms aux paramètres ... mais le provider semble se moquer totalement des noms !
Il prend en compte l'ordre des paramètres.
ça par exemple pas de soucis
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 Private connectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=""""mabase.accdb"""" " Dim connexion As New System.Data.OleDb.OleDbConnection(connectionString) connexion.Open() Dim requete as string = "UPDATE environnements " & _ "SET nom = ParamNom, libelle = ParamLibelle" & _ "WHERE nom=ParamOldNom;" Dim commande As System.Data.OleDb.OleDbCommand commande = New system.Data.OleDb.OleDbCommand(requetes.qry_environnement, connexion) commande.Parameters.AddWithValue("ParamNom", nom) commande.Parameters.AddWithValue("ParamLibelle", libelle) commande.Parameters.AddWithValue("ParamOldNom", oldNom) commande.ExecuteNonQuery() commande.Dispose() connexion.Close()
Si je change l'ordre d'ajout des paramètres à la commande, la paramètre libellé de la requete va recevoir le nom, et le paramètre nom de la requêtre va recevoir le libelle :
J'ai testé avec d'autres syntaxe pour qu'il prenne en compte le nom des paramètres, et non leur ordre, mais sans succès :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 commande.Parameters.AddWithValue("ParamLibelle", libelle) commande.Parameters.AddWithValue("ParamNom", nom) commande.Parameters.AddWithValue("ParamOldNom", oldNom)
L'effet est le même
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Dim requete as string = "UPDATE environnements " & _ "SET nom = @Nom, libelle = @Libelle" & _ "WHERE nom=@OldNom;" commande.Parameters.AddWithValue("@Libelle", libelle) commande.Parameters.AddWithValue("@Nom", nom) commande.Parameters.AddWithValue("@OldNom", oldNom)
Le "?" provoque une erreur de syntaxe ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Dim requete as string = "UPDATE environnements " & _ "SET nom = ?Nom, libelle = ?Libelle" & _ "WHERE nom=?OldNom;" commande.Parameters.AddWithValue("?Libelle", libelle) commande.Parameters.AddWithValue("?Nom", nom) commande.Parameters.AddWithValue("?OldNom", oldNom)
Est-ce que je suis condamné à respecter l'ordre des paramètres avec ce provider ?
Si non : quelle syntaxe utiliser ?
Si oui : un provider "plus intelligent" corrige-t-il ce défaut ?
Merci de votre aide, bien que ce soir un détail et que ça ne soit pas bloquant, je n'aime pas ce genre de petits défauts.
Partager