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

VB.NET Discussion :

Ajout de données dans une table à partir d'un datagridview


Sujet :

VB.NET

  1. #1
    Membre éclairé
    Homme Profil pro
    ETUDE
    Inscrit en
    Septembre 2016
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : ETUDE
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 360
    Par défaut Ajout de données dans une table à partir d'un datagridview
    Salut le forum je voudrais à partir d'un datagridview enregistrer les éléments de salaire des employés dans la table salaire
    pour cela j'ai écrit le code suivant:
    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
      For index As Integer = 0 To dgvElementSalaire.RowCount - 1
                cmd.CommandText = "INSERT INTO [SALAIRE] ([EM_ID],[SA_ID],[IDCLIENT],[Date_Debut],[Date_Fin],[MONTANT],[IDNATURE])
    values (@EM_ID,@SA_ID,@IDCLIENT,@Date_Debut,@Date_Fin,@MONTANT,@IDNATURE)"
                cmd.Parameters.AddWithValue("@EM_ID", dgvElementSalaire.Rows(index).Cells(5).Value)
                cmd.Parameters.AddWithValue("@SA_ID", dgvElementSalaire.Rows(index).Cells(7).Value)
                cmd.Parameters.AddWithValue("@IDCLIENT", dgvElementSalaire.Rows(index).Cells(6).Value)
                cmd.Parameters.AddWithValue("@Date_Debut", dtpDateDebut.Value)
                cmd.Parameters.AddWithValue("@Date_Fin", dtpDateFin.Value)
                cmd.Parameters.AddWithValue("@MONTANT", dgvElementSalaire.Rows(index).Cells(4).Value)
                cmd.Parameters.AddWithValue("@IDNATURE", dgvElementSalaire.Rows(index).Cells(8).Value)
     
                Call Connecter()
                cmd.Connection = con
                cmd.ExecuteNonQuery()
                Call deconnecter()
            Next
    mais lors du test je reçois toujours l'erreur suivant:
    Nom : PROBLEMEINSERT.PNG
Affichages : 549
Taille : 16,2 Ko
    et je ne comprend pas ce qui

  2. #2
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour,


    Je n'ai pas la même syntaxe que toi pour les paramètres. Peux-tu essayer ceci :

    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
     
     
    ' ...
                Dim Param As OleDbParameter   ' MySqlParameter ou SqlParameter ou ... selon ton SGBD
    ' ...
    Param = New OleDBParameter("@EM_ID", dgvElementSalaire.Rows(index).Cells(5).Value)
    cmd.Parameters.Add(Param)
    Param = New OleDBParameter("@SA_ID", dgvElementSalaire.Rows(index).Cells(7).Value)
    cmd.Parameters.Add(Param)
    Param = New OleDBParameter("@IDCLIENT", dgvElementSalaire.Rows(index).Cells(6).Value)
    cmd.Parameters.Add(Param)
    Param = New OleDBParameter("@Date_Debut", dtpDateDebut.Value)
    cmd.Parameters.Add(Param)
    Param = New OleDBParameter("@Date_Fin", dtpDateFin.Value)
    cmd.Parameters.Add(Param)
    Param = New OleDBParameter("@MONTANT", dgvElementSalaire.Rows(index).Cells(4).Value)
    cmd.Parameters.Add(Param)
    Param = New OleDBParameter("@IDNATURE", dgvElementSalaire.Rows(index).Cells(8).Value)
    cmd.Parameters.Add(Param)
    ' ...

  3. #3
    Membre éclairé
    Homme Profil pro
    ETUDE
    Inscrit en
    Septembre 2016
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : ETUDE
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 360
    Par défaut
    Bonsoir Phil Rob
    même avec cette commande j'ai la même erreur
    je précise que je suis sous sql server 2014
    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
     
            For index As Integer = 0 To dgvElementSalaire.RowCount - 1
                cmd.CommandText = "INSERT INTO [SALAIRE] ([EM_ID],[SA_ID],[IDCLIENT],[Date_Debut],[Date_Fin],[MONTANT],[IDNATURE])
    values (@EM_ID,@SA_ID,@IDCLIENT,@Date_Debut,@Date_Fin,@MONTANT,@IDNATURE)"
     
                Dim Param As SqlParameter   ' MySqlParameter ou SqlParameter ou ... selon ton SGBD
            ' ...
            Param = New SqlParameter("@EM_ID", dgvElementSalaire.Rows(Index).Cells(5).Value)
            cmd.Parameters.Add(Param)
            Param = New SqlParameter("@SA_ID", dgvElementSalaire.Rows(Index).Cells(7).Value)
            cmd.Parameters.Add(Param)
            Param = New SqlParameter("@IDCLIENT", dgvElementSalaire.Rows(Index).Cells(6).Value)
            cmd.Parameters.Add(Param)
            Param = New SqlParameter("@Date_Debut", dtpDateDebut.Value)
            cmd.Parameters.Add(Param)
            Param = New SqlParameter("@Date_Fin", dtpDateFin.Value)
            cmd.Parameters.Add(Param)
            Param = New SqlParameter("@MONTANT", dgvElementSalaire.Rows(Index).Cells(4).Value)
            cmd.Parameters.Add(Param)
            Param = New SqlParameter("@IDNATURE", dgvElementSalaire.Rows(Index).Cells(8).Value)
            cmd.Parameters.Add(Param)
     
                Call Connecter()
                cmd.Connection = con
                cmd.ExecuteNonQuery()
                Call deconnecter()
            Next
     
            Call RemplirGrid(dgvSalaire, "VVSALAIRE")
            dgvSalaire.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells)
    Nom : Capture.PNG
Affichages : 729
Taille : 9,7 KoNom : Capture.PNG
Affichages : 729
Taille : 9,7 Ko

  4. #4
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Ok ma réponse n'était pas adaptée ..., je m'en suis rendu compte trop tard

    Pour ce qui est du SGBD, si tu utilises SQL server, tu utilises donc les librairies Sql ... et non les OleDb ... (SqlConnection, SQLCommand, SqlAdapter, ...). Mais ton erreur n'est due au SGBD.

    En relisant ton code, je pense qu'il te faut sortir la ligne SQl de la boucle, si on pourquoi utiliser des paramètres ... vu que dans la boucle, tu peux passer directement les valeurs à la requête, pour chaque exécution, une à la fois.

    Si cela ne fonctionne pas avec le code suivant, nous essayerons sans paramètres (si cela peut te convenir).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
                cmd.CommandText = "INSERT INTO [SALAIRE] ([EM_ID],[SA_ID],[IDCLIENT],[Date_Debut],[Date_Fin],[MONTANT],[IDNATURE])
    values (@EM_ID,@SA_ID,@IDCLIENT,@Date_Debut,@Date_Fin,@MONTANT,@IDNATURE)"
     
    For index As Integer = 0 To dgvElementSalaire.RowCount - 1
     
    ' ici peut venir ton code des paramètres, ou bien le mien si le tien ne marche pas
    ' ...

  5. #5
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Deux solutions :

    1/ La solution pourrie : ajoute un cmd.Parameters.Clear() au début de ton FOR

    2/ La solution plus performante : déclare ta requête et tes paramètres avant le FOR, puis change simplement les .Value de tes paramètres à l'intérieur du FOR

  6. #6
    Membre éclairé
    Homme Profil pro
    ETUDE
    Inscrit en
    Septembre 2016
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : ETUDE
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 360
    Par défaut
    Bonsoir StringBuilder
    j'ai déclarer les variables
    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
    Dim command As New Data.SqlClient.SqlCommand
            con.ConnectionString = "Data Source=.\SQLEXPRESS;Initial Catalog=GESTIONPETROLE;Integrated Security=True"
            command.CommandText = "INSERT INTO [SALAIRE] ([EM_ID],[SA_ID],[IDCLIENT],[Date_Debut],[Date_Fin],[MONTANT],[IDNATURE])
    values (@EM_ID,@SA_ID,@IDCLIENT,@Date_Debut,@Date_Fin,@MONTANT,@IDNATURE)"
     
            command.Parameters.Add("@EM_ID", SqlDbType.Int)
            command.Parameters.Add("@SA_ID", SqlDbType.Int)
            command.Parameters.Add("@IDCLIENT", SqlDbType.Int)
            command.Parameters.Add("@Date_Debut", SqlDbType.DateTime)
            command.Parameters.Add("@Date_Fin", SqlDbType.DateTime)
            command.Parameters.Add("@MONTANT", SqlDbType.Decimal)
            command.Parameters.Add("@IDNATURE", SqlDbType.Int)
            con.Open()
            command.Connection = con
            command.Parameters.Clear()
     
            For i As Integer = 0 To dgvElementSalaire.Rows.Count - 1
                command.Parameters(0).Value = dgvElementSalaire.Rows(i).Cells(5).Value
                command.Parameters(1).Value = dgvElementSalaire.Rows(i).Cells(7).Value
                command.Parameters(2).Value = dgvElementSalaire.Rows(i).Cells(6).Value
                command.Parameters(3).Value = dtpDateDebut.Value
                command.Parameters(4).Value = dtpDateFin.Value
                command.Parameters(5).Value = dgvElementSalaire.Rows(i).Cells(4).Value
                command.Parameters(6).Value = dgvElementSalaire.Rows(i).Cells(8).Value
     
                command.ExecuteNonQuery()
            Next
    lors du test les premières valeurs son bien ajouter mais au second chargement, j'obtiens l'erreur suivant:
    Nom : Captures.PNG
Affichages : 486
Taille : 9,4 Ko

  7. #7
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    La formule est plaisante. Mais command.Parameters.Clear() vide la collection des paramètres que tu viens de créer. Je pense que cette ligne devrait se trouver avant les "Parameters.Add ... ".

    Je reste à ta disposition pour écrire les
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    "INSERT INTO [SALAIRE] ([EM_ID],[SA_ID],[IDCLIENT],[Date_Debut],[Date_Fin],[MONTANT],[IDNATURE])
    values (@EM_ID,@SA_ID,@IDCLIENT,@Date_Debut,@Date_Fin,@MONTANT,@IDNATURE)"
    sans utiliser les paramètres.

    A bientôt,

  8. #8
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Phil Rob Voir le message
    Je reste à ta disposition pour écrire les
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    "INSERT INTO [SALAIRE] ([EM_ID],[SA_ID],[IDCLIENT],[Date_Debut],[Date_Fin],[MONTANT],[IDNATURE])
    values (@EM_ID,@SA_ID,@IDCLIENT,@Date_Debut,@Date_Fin,@MONTANT,@IDNATURE)"
    sans utiliser les paramètres.
    J'ai pas compris ce que ça voulais dire ça ?

    Il ne faut jamais utiliser de requête non paramétrée : c'est contre performant et la porte ouverte aux injections SQL.

  9. #9
    Membre éclairé
    Homme Profil pro
    ETUDE
    Inscrit en
    Septembre 2016
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : ETUDE
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 360
    Par défaut
    Bonjour Phil Rob, bonjour StringBuilder
    effectivement il fallait mettre cmd.parameters.clear avant la création de mes paramètres donc sa marche.
    Mai j'ai une autre question
    j'aurais bien voulut qu'après un enregistrement que ce message s'affiche 'MsgBox("Ajout effectué avec succés")'
    il est bien dans mon code il mais il ne s'affiche pas après insertion
    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
            Try
     
                Call Connecter()
                cmd.Connection = con
                If cmbNom.Text = "" Then
                    MsgBox("Champ Nom obligatoire", MsgBoxStyle.Critical, "Attention")
                    cmbNom.Focus()
                    Exit Sub
                End If
                cmd.CommandText = "INSERT INTO [SALAIRE] ([EM_ID],[SA_ID],[IDCLIENT],[Date_Debut],[Date_Fin],[MONTANT],[IDNATURE])
    values (@EM_ID,@SA_ID,@IDCLIENT,@Date_Debut,@Date_Fin,@MONTANT,@IDNATURE)"
                cmd.Parameters.Clear()
                dgvElementSalaire.Refresh()
                cmd.Parameters.Add("@EM_ID", SqlDbType.Int)
                cmd.Parameters.Add("@SA_ID", SqlDbType.Int)
                cmd.Parameters.Add("@IDCLIENT", SqlDbType.Int)
                cmd.Parameters.Add("@Date_Debut", SqlDbType.DateTime)
                cmd.Parameters.Add("@Date_Fin", SqlDbType.DateTime)
                cmd.Parameters.Add("@MONTANT", SqlDbType.Decimal)
                cmd.Parameters.Add("@IDNATURE", SqlDbType.Int)
                For i As Integer = 0 To dgvElementSalaire.Rows.Count - 1
                    cmd.Parameters(0).Value = dgvElementSalaire.Rows(i).Cells(5).Value
                    cmd.Parameters(1).Value = dgvElementSalaire.Rows(i).Cells(7).Value
                    cmd.Parameters(2).Value = dgvElementSalaire.Rows(i).Cells(6).Value
                    cmd.Parameters(3).Value = dtpDateDebut.Value
                    cmd.Parameters(4).Value = dtpDateFin.Value
                    cmd.Parameters(5).Value = dgvElementSalaire.Rows(i).Cells(4).Value
                    cmd.Parameters(6).Value = dgvElementSalaire.Rows(i).Cells(8).Value
     
                    cmd.ExecuteNonQuery()
     
                Next
                Call deconnecter()
                MsgBox("Ajout effectué avec succés")
     
            Catch ex As Exception
     
            End Try
    je ne comprend pas pourquoi le message n'affiche pas?

  10. #10
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Regarde en debug si tu vas pas dans ton catch par hasard.

  11. #11
    Membre éclairé
    Homme Profil pro
    ETUDE
    Inscrit en
    Septembre 2016
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : ETUDE
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 360
    Par défaut
    je ne comprend pas bien se que vous me demander de faire pouvez vous être plus précis?

  12. #12
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Ton programme doit entrer dans ce bloc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Catch ex As Exception
     
    End Try
    Car il doit y avoir une exception.
    Au hasard, soit un INSERT qui plante, soir le "deconnecte()" qui ne fonctionne pas.

    Vérifie que tu entre dans ton Catch pour être sûr...
    Et en examinant l'exception tu auras probablement des informations pertinentes sur l'origine du problème.

  13. #13
    Membre éclairé
    Homme Profil pro
    ETUDE
    Inscrit en
    Septembre 2016
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : ETUDE
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 360
    Par défaut
    J'ai compris, la clé primaire est auto incrémentée dans la table, je ne l'ai pas mis dans la requête insert et je pense que c'est ca qui pose problème.

    Est t-il possible de faire en sorte que la colonne clé primaire de la table salaire s'auto incrémente à chaque enregistrement de chaque ligne du datagriview car un employer peut avoir plusieurs éléments de salaire. Je veut dire est ce que c'est possible de le faire par code ?

  14. #14
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Dans SQL Server, généralement on indique les clés primaires monocolonnes avecle flag "identity" qui permet de gérer un autoincrément.

    Il faut donc supprimer de toutes les clauses INSERT cette colonne, sous peine d'avoir une erreur.
    On peut alors forcer la valeur de cette colonne en ajoutant avant la requete "set identity_insert latable on;"

  15. #15
    Membre éclairé
    Homme Profil pro
    ETUDE
    Inscrit en
    Septembre 2016
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : ETUDE
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 360
    Par défaut
    Salut StringBuilder
    on peut ajouter ce ci "set identity_insert latable on;" dans sql ou dans le code vb.net?

  16. #16
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    juste avant le INSERT, dans la même chaîne de caractères.

  17. #17
    Membre éclairé
    Homme Profil pro
    ETUDE
    Inscrit en
    Septembre 2016
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : ETUDE
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 360
    Par défaut
    Lorsque j'utilise la méthode insert sans paramètre,
    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
     Dim connetionString As String
            Dim connection As SqlConnection
            Dim adapter As New SqlDataAdapter
            Dim sql As String
            connetionString = "Data Source=.\SQLEXPRESS;Initial Catalog=GESTIONPETROLE;Integrated Security=True"
            connection = New SqlConnection(connetionString)
            Try
                connection.Open()
                For i As Integer = 0 To Me.dgvElementSalaire.Rows.Count - 1
                    sql = "INSERT INTO [SALAIRE] ([EM_ID],[SA_ID],[IDCLIENT],[Date_Debut],[Date_Fin],[MONTANT],[IDNATURE])
    values ('" & Me.dgvElementSalaire.Rows(i).Cells(5).Value & "','" & Me.dgvElementSalaire.Rows(i).Cells(7).Value & "','" & Me.dgvElementSalaire.Rows(i).Cells(6).Value & "',(SELECT CONVERT(DATE,'" & dtpDateDebut.Value & "',103)),(SELECT CONVERT(DATE,'" & dtpDateFin.Value & "',103)), '" & Replace(Me.dgvElementSalaire.Rows(i).Cells(4).Value, ",", ".") & "','" & Me.dgvElementSalaire.Rows(i).Cells(8).Value & "')"
                    Try
                        adapter.InsertCommand = New SqlCommand(sql, connection)
                        adapter.InsertCommand.ExecuteNonQuery()
                    Catch ex As Exception
                        MsgBox(ex.ToString)
                    End Try
                Next
                MsgBox("Ajout effectué avec succés")
            Catch ex As Exception
     
            End Try
            Try
    j'obtient le message suivant:
    Nom : CaptureSSS.PNG
Affichages : 491
Taille : 66,8 Ko
    et lorsque je clic sur ok
    les données sont bien insérer
    Nom : CaptureSSSS.PNG
Affichages : 496
Taille : 14,4 Ko
    je me dit que en comprennent le pourquoi de se message je pourrai résoudre le problème de la méthode avec paramètre!!

  18. #18
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour,

    En ne regardant que la première phase du message d'erreur, je pense que tu as un ou plusieurs champs numériques dans la DB et que ces données passées sous forme de chaines ne sont pas dans le bon format.
    Par exemple, une virgule au lieu d'un point comme séparateur décimal, un ou plusieurs espaces dans la chaine (passer les chaines "numériques" par Trim() pour enlever les espaces en début et en fin de chaine), format numérique non conforme à celui de la DB (Int32 <==> Int64, par exemple).

    A voir ...

  19. #19
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    C'est une des raisons pour lesquelles il ne faut jamais utiliser des requêtes "ad hoc", mais toujours des requêtes paramétrées.

    Pourquoi as-tu enlevé la gestion des paramètres ?

    Ils sont là pour justement contrôler que tu passes le bon type de données aux différentes colonnes.

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

Discussions similaires

  1. Ajouter données dans une table à partir d'un formulaire
    Par Alex1407 dans le forum Macros Access
    Réponses: 0
    Dernier message: 12/06/2013, 15h46
  2. Réponses: 5
    Dernier message: 26/01/2007, 08h11
  3. Enregistrer des données dans une table à partir du code
    Par Ragnarok85 dans le forum Access
    Réponses: 4
    Dernier message: 24/01/2007, 13h03
  4. Réponses: 14
    Dernier message: 22/09/2005, 16h49
  5. Réponses: 2
    Dernier message: 15/06/2005, 17h32

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