IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

erreur lors de l'insertion des données [AC-2007]


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Guinée

    Informations forums :
    Inscription : Avril 2012
    Messages : 13
    Points : 11
    Points
    11
    Par défaut erreur lors de l'insertion des données
    Salut tout le monde,
    Je développe une application pour la première fois sous visual studio 2010 et j’ai fais un formulaire d’inscription pour insérer des données dans ma base de données (Access 2007).
    La table qui reçoit les données du formulaire à 16 champs dont la clé primaire (id_elev) est un champ auto-incrémente c'est-à-dire NuméroAuto et je ne sais pas comment codé en VB pour définir les types de données pour un champ NuméroAuto et si je clique sur le bouton Ajouter de mon formulaire j’ai le message d’erreur suivant : L’exception OleDbException n’a pas été gérée
    Type de données incompatible dans l’expression du critère.
    Voici mes codes :
    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    Imports System.Data
    Imports System.Data.OleDb
    Public Class Form1
     
        Private Sub prenom_pere_elev_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles prenom_pere_elev.TextChanged
     
     
        End Sub
     
     
        Private Sub prof_pere_elev_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles prof_pere_elev.TextChanged
     
        End Sub
     
        Private Sub prenom_mere_elev_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles prenom_mere_elev.TextChanged
     
        End Sub
     
        Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles genre_elev.CheckedChanged
     
        End Sub
     
        Private Sub cmdajout_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdajout.Click
            Call chaine_connection()
            Dim varins As New OleDbCommand("insert into eleves values (@id_elev,@num_mat_elev,@nom_elev,@prenom_elev,@genre_elev,@date_nais_elev,@prenom_pere_elev,@prof_pere_elev,@prenom_mere_elev,@nom_mere_elev,@prof_mere_elev,@num_tel_par,@adres_par_elev,@nom_tuteur_elev,@num_tel_tuteur,@adres_tuteur_elev)")
            varins.Connection = connexion
            Dim param1 As New OleDbParameter
            param1.ParameterName = "@num_mat_elev"
            param1.OleDbType = OleDbType.LongVarChar
            param1.Value = num_mat_elev.Text
            varins.Parameters.Add(param1)
     
            Dim param2 As New OleDbParameter
            param2.ParameterName = "@nom_elev"
            param2.OleDbType = OleDbType.LongVarChar
            param2.Value = num_mat_elev.Text
            varins.Parameters.Add(param2)
     
            Dim param3 As New OleDbParameter
            param3.ParameterName = "@prenom_elev"
            param3.OleDbType = OleDbType.LongVarChar
            param3.Value = num_mat_elev.Text
            varins.Parameters.Add(param3)
     
            Dim param4 As New OleDbParameter
            param4.ParameterName = "@genre_elev"
            param4.OleDbType = OleDbType.LongVarChar
            param4.Value = genre_elev.Text
            varins.Parameters.Add(param4)
     
            Dim param5 As New OleDbParameter
            param5.ParameterName = "@date_nais_elev"
            param5.OleDbType = OleDbType.LongVarChar
            param5.Value = date_nais_elev.Text
            varins.Parameters.Add(param5)
     
            Dim param6 As New OleDbParameter
            param6.ParameterName = "@prenom_pere_elev"
            param6.OleDbType = OleDbType.LongVarChar
            param6.Value = prenom_pere_elev.Text
            varins.Parameters.Add(param6)
     
            Dim param7 As New OleDbParameter
            param7.ParameterName = "@prof_pere_elev"
            param7.OleDbType = OleDbType.LongVarChar
            param7.Value = prof_pere_elev.Text
            varins.Parameters.Add(param7)
     
            Dim param8 As New OleDbParameter
            param8.ParameterName = "@prenom_mere_elev"
            param8.OleDbType = OleDbType.LongVarChar
            param8.Value = prenom_mere_elev.Text
            varins.Parameters.Add(param8)
     
            Dim param9 As New OleDbParameter
            param9.ParameterName = "@nom_mere_elev"
            param9.OleDbType = OleDbType.LongVarChar
            param9.Value = nom_mere_elev.Text
            varins.Parameters.Add(param9)
     
            Dim param10 As New OleDbParameter
            param10.ParameterName = "@prof_mere_elev"
            param10.OleDbType = OleDbType.LongVarChar
            param10.Value = prof_mere_elev.Text
            varins.Parameters.Add(param10)
     
            Dim param11 As New OleDbParameter
            param11.ParameterName = "@num_tel_par"
            param11.OleDbType = OleDbType.LongVarChar
            param11.Value = num_tel_par.Text
            varins.Parameters.Add(param11)
     
            Dim param12 As New OleDbParameter
            param12.ParameterName = "@adres_par_elev"
            param12.OleDbType = OleDbType.LongVarChar
            param12.Value = adres_par_elev.Text
            varins.Parameters.Add(param12)
     
            Dim param13 As New OleDbParameter
            param13.ParameterName = "@nom__tuteur_elev"
            param13.OleDbType = OleDbType.VarChar
            param13.Value = nom_tuteur_elev.Text
            varins.Parameters.Add(param13)
     
            Dim param14 As New OleDbParameter
            param14.ParameterName = "@num_tel_tuteur"
            param14.OleDbType = OleDbType.LongVarChar
            param14.Value = num_tel_tuteur.Text
            varins.Parameters.Add(param14)
     
            Dim param15 As New OleDbParameter
            param15.ParameterName = "@adres_tuteur_elev"
            param15.OleDbType = OleDbType.LongVarChar
            param15.Value = adres_tuteur_elev.Text
            varins.Parameters.Add(param15)
     
            Dim param16 As New OleDbParameter
            param16.ParameterName = "@id_elev"
            param16.OleDbType = OleDbType.Decimal
            param16.Value = id_elev.AutoCompleteSource
            varins.Parameters.Add(param16)
     
     
            varins.ExecuteNonQuery()
            MessageBox.Show("l'élève à été correctement enregistrer", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information)
            connexion.Close()
     
        End Sub
     
        Private Sub id_elev_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles id_elev.KeyPress
            If (IsNumeric(e.KeyChar)) Then
                e.Handled = False
            Else
                If (e.KeyChar = vbBack) Then
                    e.Handled = False
                Else
                    e.Handled = True
                End If
            End If
        End Sub
     
    End Class
    Et si je change le type de données du champ id_elev en text dans la base de données (c'est-à-dire sous access ) et que je remplace ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim param16 As New OleDbParameter
            param16.ParameterName = "@id_elev"
            param16.OleDbType = OleDbType.Decimal
            param16.Value = id_elev.AutoCompleteSource
            varins.Parameters.Add(param16)
    Par celui-ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim param16 As New OleDbParameter
            param16.ParameterName = "@id_elev"
            param16.OleDbType = OleDbType.LongVarChar
            param16.Value = id_elev.Text
            varins.Parameters.Add(param16)
    dans ce cas il insère les données convenablement.

  2. #2
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    Bonsoir,
    Dans Access, le numéro auto n'est jamais inscrit dans l'instruction insert. il faut que tu précises tous les champs à insérer sauf le numéro auto qui s'incrémentera automatiquement. Cela fonctionne un peu comme avec le rowid dans Oracle, si tu connais, l'avantage dans Oracle c'est que le rowid est caché.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into eleves (num_mat_elev, nom_elev, prenom_elev,...) values (@num_mat_elev,@nom_elev,@prenom_elev, ...);
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] erreur lors de l'insertion des données
    Par bamoussa dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 11/06/2012, 02h02
  2. [Dojo] Erreur lors de la récupération des données JSON
    Par benoxy dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 21/05/2010, 18h12
  3. [MySQL] message d'erreur lors de l'envois des données du formulaires
    Par paolo129 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 16/12/2008, 17h14
  4. [XML] Probleme lors de l'insertion des données XML
    Par Lyna2007 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 11/03/2007, 16h26
  5. Réponses: 7
    Dernier message: 15/11/2006, 10h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo