Problème requête SQL INSERT INTO

jjg65 Messages postés 28 Date d'inscription mercredi 23 mars 2011 Statut Membre Dernière intervention 16 août 2011 - 25 juil. 2011 à 19:54
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 - 25 juil. 2011 à 20:38
Bonjour à tous,
A partir d'une application VB.Net je voudrais introduire des données d'un tableau dans une table en Access.
Je ne réussi pas à assurer le transfert de données puisque j'ai le message suivant à la compilation à la ligne suivante :
OLECmd.ExecuteNonQuery()
Une petite fenêtre signale "OleDBException was unhandled" et un autre message en français Aucune valeur donnée pour un ou plusieurs des paramètres requis.
Je ne sais pas où se trouve l'erreur. Dans ma table Access j'ai en clé primaire le champ NumeroCorpsArbitral_NumeroFonctionArbitraleTerrain un NuméroAuto que j'incrémente via une valeur maximale et un compteur.
Quand le programme tourne je me rends compte dans la requête quand j'amène la souris sur les valeurs à exporter qu'elles ne sont pas nulles et qu'elles sont exactes.
Je ne vois pas où se trouve l'erreur j'ai essayé des tas de combinaisons différentes.
Avec les quotes, avec les val(), sans les val, etc. Toujours le même message d'erreur.
Quelqu'un aurait une idée ?
Merci d'avance.


Public Sub insert_table_CoArb_FonArbiTer(ByVal var_valeur_maximale_id_numerotation_automatique)
Dim i As Integer
Dim var_un, var_deux As Integer
For i = 0 To 7
If (TabArb(i).IdArbitres <> 0) Then
var_un = TabArb(i).IdArbitres
var_deux = TabArb(i).IdFonctionArbitreTerrain
Dim OLECon As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source= C:\Users\jean-jacques\Desktop\EI 2011\EI 24.05.2011\EI\Delegue.mdb;")
Dim OLECmd As New OleDb.OleDbCommand
Dim OLEStr As String
OLEStr "INSERT CoArb_FonArbiTer VALUES(NumeroCorpsArbitral_NumeroFonctionArbitraleTerrain " & Val(var_valeur_maximale_id_numerotation_automatique) & " , NumeroCorpsArbitral = " & Val(var_un) & " , NumeroFonctionArbitraleTerrain = " & Val(var_deux) & ", NumeroFicheRencontre_CompetionStadeCompetition = " & Val(id_fiche_rencontre) & ") ;"
OLECmd = New OleDb.OleDbCommand(OLEStr, OLECon)
OLECon.Open()
OLECmd.ExecuteNonQuery()
OLECon.Close()
var_valeur_maximale_id_numerotation_automatique = var_valeur_maximale_id_numerotation_automatique + 1
End If
Next i

1 réponse

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
25 juil. 2011 à 20:38
Bonjour,

Déjà on va commencer par faire un code plus propre :
- Actives Option Explicit et Option Strict et corriges les erreurs.
- Ensuite, évite les imports de Microsoft.VisualBasic (à décocher dans les propriétés du projet, section "références")
- Puis, quand tu postes un code, pense à la coloration syntaxique (3ième icône à droite : ) et Indentes ton code, ça le rendra plus clair.
- à la place de Val(QuelqueChose) pour ensuite convertir en chaine, préfère utiliser QuelqueChose.ToString()
- Un champ NuméroAuto sur Access n'a pas besoins d'être définit, cette erreur peut survenir si tu as oublié un champ ou si il manque un enregistrement si tu as lié 2 tables dans Access.

0
Rejoignez-nous