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 :

Suppression et Modification d'un enregistrement


Sujet :

VB.NET

  1. #1
    Membre du Club
    Inscrit en
    Mai 2007
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 257
    Points : 57
    Points
    57
    Par défaut Suppression et Modification d'un enregistrement
    Je voudrais savoir comment faire pour modifier des données d'une table access et aussi comment supprimer des données d'une table access?
    j'ai une windows form qui affiche les données existantes d'un enregistrement dand la table et je veux qu'en cliquant sur le bouton "modifier" il modifie les données existantes par les données tapées dans les textbos du windows form et même chose pour la suppression.
    Je suis débutante. C'est la 1ère fois que je travaille avec le logiciel VB2005 express.

    Merci de bien vouloir m'aider et me donner un coup de pouce.

  2. #2
    Membre averti Avatar de binouzzz19
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    385
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 385
    Points : 368
    Points
    368
    Par défaut
    Je ne connais pas le logiciel que tu utilises, je suis désolé.

    Cependant, je connais un petit peu access, et en principe, à partir du moment où dans les propriétés du formulaire, tu autorises les modifications, tu clik sur ta textbox et tu pe modifier (sans avoir a cliké sur un lien ou un bouton). Pour supprimer, un bouton est disponible, sinon tu le crées et tu vas voir un peu dans la FAQ, il doit y avoir des exemples de code pour supprimer un enregistrement

    En espérant t'avoir aidée
    Si ton labeur est dur et que tes résultats sont minces, rappelles-toi qu'un jour, le grand chêne a été un gland comme toi !

  3. #3
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Salut,

    Encore un problème avec Access !!! C'est incroyable en 3 jours j'ai deja eu 4 cas similaire...

    Fait une recherche dans ce forum et le topic n'est vraiment pas loin et j'ai déjà répondu à ta question !

    Cdl
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  4. #4
    Membre du Club
    Inscrit en
    Mai 2007
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 257
    Points : 57
    Points
    57
    Par défaut Salut
    voici le code que j'ai écrit avec mon effort personnel :


    --------------------------------------------------------------------------

    Imports System.Data.OleDb
    Imports System.Data

    Public Class Frmajoutab

    Public sql As String

    Private Sub QuitterToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles QuitterToolStripMenuItem.Click
    Me.Close()
    Frmprincipale.Show()
    End Sub

    Private Sub Frmajoutab_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    'TODO : cette ligne de code charge les données dans la table 'MarchesDataSet.Abonnement'. Vous pouvez la déplacer ou la supprimer selon vos besoins.
    Me.AbonnementTableAdapter.Fill(Me.MarchesDataSet.Abonnement)
    'TODO : cette ligne de code charge les données dans la table 'MarchesDataSet.Fournisseur'. Vous pouvez la déplacer ou la supprimer selon vos besoins.
    Me.FournisseurTableAdapter.Fill(Me.MarchesDataSet.Fournisseur)
    End Sub

    Private Sub Btnvalider_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btnvalider.Click
    'Dim mg As Long
    Dim cn As New OleDb.OleDbConnection
    Dim da As New OleDb.OleDbDataAdapter
    Dim cmd As New OleDb.OleDbCommand
    Dim OledbDataAdapter As New OleDb.OleDbDataAdapter
    sql = "insert into Abonnement (Num_abonnement, Lib_abonnement, Date_debut_ab, Date_fin_ab, Montant_ab, Num_frs, Nom_frs) values ('" & Txtnumab.Text & "', '" & Txtlibab.Text & "', '" & Dates.Value & "', '" & Datef.Value & "', '" & Txtmontantab.Text & "', '" & Txtnumfrs.Text & "', '" & Cbxfrs.Text & "') "
    If Txtnumab.Text = "" Or Txtlibab.Text = "" Or Txtmontantab.Text = "" Or Txtnumfrs.Text = "" Then
    MsgBox("Vous devez saisir des valeurs non nulles.", MsgBoxStyle.Critical + MsgBoxStyle.OkOnly)
    Exit Sub
    End If
    'mg = ("Etes vous sûre de vouloir créer cet abonnement?")
    'If mg = vbNo Then Exit Sub
    'If mg = vbYes Then
    Try
    cn.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source=C:\Marches.mdb"
    cn.Open()
    cmd.Connection = cn
    cmd.CommandText = sql
    OledbDataAdapter.SelectCommand = cmd
    OledbDataAdapter.Fill(MarchesDataSet.Marche)
    cmd.ExecuteNonQuery()
    cn.Close()
    Catch ex As Exception
    MsgBox(ex.Message)
    cn.Close()
    Finally
    cn.Close()
    End Try
    'End If
    MsgBox("Votre opération a été effectuée avec succès.", MsgBoxStyle.Information + MsgBoxStyle.OkOnly)
    Me.Close()
    Frmprincipale.Show()
    End Sub
    End Class

    --------------------------------------------------------------------------
    Mais en exécutant ce code j'ai 2 trucs :

    1/ il m'affiche les données du premier enregistrement de la base dans les champs textbox.
    2/ il m'affiche un message d'erreur lors de la validation des données saisies dans les textbox (voir fichier joint).

    Que faire?
    Fichiers attachés Fichiers attachés

  5. #5
    Membre du Club
    Inscrit en
    Mai 2007
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 257
    Points : 57
    Points
    57
    Par défaut Ps
    PS : Le code énoncé est pour ajouter un enregistrement.

  6. #6
    Membre actif Avatar de miya
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 469
    Points : 240
    Points
    240
    Par défaut
    tu peux le mettre dans une balise code pour que ce soit plus lisible!

  7. #7
    Membre du Club
    Inscrit en
    Mai 2007
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 257
    Points : 57
    Points
    57
    Par défaut Le voila par la balise
    Imports System.Data.OleDb
    Imports System.Data

    Public Class Frmajoutab
    Public sql As String

    Private Sub Frmajoutab_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    'TODO : cette ligne de code charge les données dans la table 'MarchesDataSet.Abonnement'. Vous pouvez la déplacer ou la supprimer selon vos besoins.
    Me.AbonnementTableAdapter.Fill(Me.MarchesDataSet.Abonnement)
    'TODO : cette ligne de code charge les données dans la table 'MarchesDataSet.Fournisseur'. Vous pouvez la déplacer ou la supprimer selon vos besoins.
    Me.FournisseurTableAdapter.Fill(Me.MarchesDataSet.Fournisseur)
    End Sub

    Private Sub Btnvalider_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btnvalider.Click
    'Dim mg As Long
    Dim cn As New OleDb.OleDbConnection
    Dim da As New OleDb.OleDbDataAdapter
    Dim cmd As New OleDb.OleDbCommand
    Dim OledbDataAdapter As New OleDb.OleDbDataAdapter
    sql = "insert into Abonnement (Num_abonnement, Lib_abonnement, Date_debut_ab, Date_fin_ab, Montant_ab, Num_frs, Nom_frs) values ('" & Txtnumab.Text & "', '" & Txtlibab.Text & "', '" & Dates.Value & "', '" & Datef.Value & "', '" & Txtmontantab.Text & "', '" & Txtnumfrs.Text & "', '" & Cbxfrs.Text & "') "
    If Txtnumab.Text = "" Or Txtlibab.Text = "" Or Txtmontantab.Text = "" Or Txtnumfrs.Text = "" Then
    MsgBox("Vous devez saisir des valeurs non nulles.", MsgBoxStyle.Critical + MsgBoxStyle.OkOnly)
    Exit Sub
    End If
    'mg = ("Etes vous sûre de vouloir créer cet abonnement?")
    'If mg = vbNo Then Exit Sub
    'If mg = vbYes Then
    Try
    cn.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source=C:\Marches.mdb"
    cn.Open()
    cmd.Connection = cn
    cmd.CommandText = sql
    OledbDataAdapter.SelectCommand = cmd
    OledbDataAdapter.Fill(MarchesDataSet.Marche)
    cmd.ExecuteNonQuery()
    cn.Close()
    Catch ex As Exception
    MsgBox(ex.Message)
    cn.Close()
    Finally
    cn.Close()
    End Try
    'End If
    MsgBox("Votre opération a été effectuée avec succès.", MsgBoxStyle.Information + MsgBoxStyle.OkOnly)
    Me.Close()
    Frmprincipale.Show()
    End Sub
    End Class

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 51
    Points : 37
    Points
    37
    Par défaut
    salut, c'est mieux comme ca


    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
    Imports System.Data.OleDb
    Imports System.Data
     
    Public Class Frmajoutab
    Public sql As String
     
    Private Sub Frmajoutab_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    'TODO : cette ligne de code charge les données dans la table 'MarchesDataSet.Abonnement'. Vous pouvez la déplacer ou la supprimer selon vos besoins.
    Me.AbonnementTableAdapter.Fill(Me.MarchesDataSet.Abonnement)
    'TODO : cette ligne de code charge les données dans la table 'MarchesDataSet.Fournisseur'. Vous pouvez la déplacer ou la supprimer selon vos besoins.
    Me.FournisseurTableAdapter.Fill(Me.MarchesDataSet.Fournisseur)
    End Sub
     
    Private Sub Btnvalider_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btnvalider.Click
    'Dim mg As Long
    Dim cn As New OleDb.OleDbConnection
    Dim da As New OleDb.OleDbDataAdapter
    Dim cmd As New OleDb.OleDbCommand
    Dim OledbDataAdapter As New OleDb.OleDbDataAdapter
    sql = "insert into Abonnement (Num_abonnement, Lib_abonnement, Date_debut_ab, Date_fin_ab, Montant_ab, Num_frs, Nom_frs) values ('" & Txtnumab.Text & "', '" & Txtlibab.Text & "', '" & Dates.Value & "', '" & Datef.Value & "', '" & Txtmontantab.Text & "', '" & Txtnumfrs.Text & "', '" & Cbxfrs.Text & "') "
    If Txtnumab.Text = "" Or Txtlibab.Text = "" Or Txtmontantab.Text = "" Or Txtnumfrs.Text = "" Then
    MsgBox("Vous devez saisir des valeurs non nulles.", MsgBoxStyle.Critical + MsgBoxStyle.OkOnly)
    Exit Sub
    End If
    'mg = ("Etes vous sûre de vouloir créer cet abonnement?")
    'If mg = vbNo Then Exit Sub
    'If mg = vbYes Then
    Try
    cn.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source=C:\Marches.mdb"
    cn.Open()
    cmd.Connection = cn
    cmd.CommandText = sql
    OledbDataAdapter.SelectCommand = cmd
    OledbDataAdapter.Fill(MarchesDataSet.Marche)
    cmd.ExecuteNonQuery()
    cn.Close()
    Catch ex As Exception
    MsgBox(ex.Message)
    cn.Close()
    Finally
    cn.Close()
    End Try
    'End If
    MsgBox("Votre opération a été effectuée avec succès.", MsgBoxStyle.Information + MsgBoxStyle.OkOnly)
    Me.Close()
    Frmprincipale.Show()
    End Sub
    End Class
    a+

  9. #9
    Membre averti Avatar de binouzzz19
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    385
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 385
    Points : 368
    Points
    368
    Par défaut
    1/ je pense que cela vient de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <ul><li style="">Me.AbonnementTableAdapter.Fill(Me.MarchesDataSet.Abonnement)</li><li style="">Me.FournisseurTableAdapter.Fill(Me.MarchesDataSet.Fournisseur)</li></ul>
    qui fait que c'est placé directement au premier enregistrement

    2/ Je pense qu'il faut que tu fasse un test sur la clé primaire (savoir si elle existe ou non) afin de soit faire un insert soit un update ...
    Si ton labeur est dur et que tes résultats sont minces, rappelles-toi qu'un jour, le grand chêne a été un gland comme toi !

  10. #10
    Membre du Club
    Inscrit en
    Mai 2007
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 257
    Points : 57
    Points
    57
    Par défaut Salut
    Merci Binouz. le 1er point est corrigé mais le 2ème point concernant le msg d'erreur lors de la validation de l'ajout d'un enregistrement, il est tjrs la. comment le corriger?

  11. #11
    Membre averti Avatar de binouzzz19
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    385
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 385
    Points : 368
    Points
    368
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sql2 = "select count(*) from Abonnement where Num_abonnement = '" & Txtnumab.Text & "'"
    // Si pas de lignes alors sql = insert ...
    // Sinon sql = update ...
    Si ton labeur est dur et que tes résultats sont minces, rappelles-toi qu'un jour, le grand chêne a été un gland comme toi !

  12. #12
    Membre du Club
    Inscrit en
    Mai 2007
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 257
    Points : 57
    Points
    57
    Par défaut
    En modifiant le 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
    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
    Imports System.Data.OleDb
    Imports System.Data
    
    Public Class Frmajoutab
    
     Private Sub Btnvalider_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btnvalider.Click
            'Dim mg As Long
            Dim cn As New OleDb.OleDbConnection
            Dim da As New OleDb.OleDbDataAdapter
            Dim cmd As New OleDb.OleDbCommand
            Dim OledbDataAdapter As New OleDb.OleDbDataAdapter
            sql = "insert into Abonnement (Num_abonnement, Lib_abonnement, Date_debut_ab, Date_fin_ab, Montant_ab, Num_frs, Nom_frs) values ('" & Txtnumab.Text & "', '" & Txtlibab.Text & "', '" & Dates.Value & "', '" & Datef.Value & "', '" & Txtmontantab.Text & "', '" & Txtnumfrs.Text & "', '" & Cbxfrs.Text & "') "
            If Txtnumab.Text = "" Or Txtlibab.Text = "" Or Txtmontantab.Text = "" Or Txtnumfrs.Text = "" Then
                MsgBox("Vous devez saisir des valeurs non nulles.", MsgBoxStyle.Critical + MsgBoxStyle.OkOnly)
                Exit Sub
            End If
            sql1 = "select count * from Abonnement where Num_abonnement ='" & Txtnumab.Text & "'"
            'mg = ("Etes vous sûre de vouloir créer cet abonnement?")
            'If mg = vbNo Then Exit Sub
            'If mg = vbYes Then
            If Me.AbonnementTableAdapter.Fill(Me.MarchesDataSet.Abonnement) <> 0 Then
                MsgBox("Cet abonnement existe déjà", MsgBoxStyle.Critical + MsgBoxStyle.OkOnly)
                Exit Sub
            Else
                Try
                    cn.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source=C:\Marches.mdb"
                    cn.Open()
                    cmd.Connection = cn
                    cmd.CommandText = sql
                    OledbDataAdapter.SelectCommand = cmd
                    OledbDataAdapter.Fill(MarchesDataSet.Marche)
                    cmd.ExecuteNonQuery()
                    cn.Close()
                Catch ex As Exception
                    MsgBox(ex.Message)
                    cn.Close()
                Finally
                    cn.Close()
                End Try
            End If
            MsgBox("Votre opération a été effectuée avec succès.", MsgBoxStyle.Information + MsgBoxStyle.OkOnly)
            Me.Close()
            Frmprincipale.Show()
        End Sub
    End Class
    En cliquant sur le bouton "Valider" j'ai le msg "Cet abonnement existe déjà" et ensuite il met au niveau des textbox les données du 1er enregistrement qui existe dans la table (il n'insere pas le nouveau enregistrement). Je ne comprend pas ou est l'erreur?

  13. #13
    Membre averti Avatar de binouzzz19
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    385
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 385
    Points : 368
    Points
    368
    Par défaut
    Je ne sais pas codé dans ce langage !!

    Seulement, ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Me.AbonnementTableAdapter.Fill(Me.MarchesDataSet.Abonnement) <> 0 Then
    ... cette ligne permet de voir s'il y a des enregistrements non ? Il faut que tu execute sql1 et que tu vois si le nombre de lignes est égal à 0 ou non !
    Si ton labeur est dur et que tes résultats sont minces, rappelles-toi qu'un jour, le grand chêne a été un gland comme toi !

  14. #14
    Membre du Club
    Inscrit en
    Mai 2007
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 257
    Points : 57
    Points
    57
    Par défaut Aide
    C'est ce que j'ai fait mais ca ne marche pas Est ce que quelqu'un peux m'aider?

  15. #15
    Membre du Club
    Inscrit en
    Mai 2007
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 257
    Points : 57
    Points
    57
    Par défaut
    En cliquant sur le bouton pour ajouter un nouvel enregistrement, on dirait qu'il est entrain de pointer sur le 1er enregistrement et il me met le msg "Cet abonnement existe déjà" et ensuite il rempli les textbox avec les données du 1er enregistrement. Or les données que j'ai saisies n'existent pas dans la table. Comment corriger cela? svp aidez moi. Voici le 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
    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
     
    Imports System.Data.OleDb
    Imports System.Data
     
    Public Class Frmajoutab
     
        Public sql, sql1 As String
     
    Private Sub Frmajoutab_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'TODO : cette ligne de code charge les données dans la table 'MarchesDataSet.Abonnement'. Vous pouvez la déplacer ou la supprimer selon vos besoins.
            'Me.AbonnementTableAdapter.Fill(Me.MarchesDataSet.Abonnement)
            'TODO : cette ligne de code charge les données dans la table 'MarchesDataSet.Fournisseur'. Vous pouvez la déplacer ou la supprimer selon vos besoins.
            Me.FournisseurTableAdapter.Fill(Me.MarchesDataSet.Fournisseur)
        End Sub
     
     Private Sub Btnvalider_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btnvalider.Click
            'Dim mg As String
            Dim cn As New OleDb.OleDbConnection
            Dim da As New OleDb.OleDbDataAdapter
            Dim cmd As New OleDb.OleDbCommand
            Dim OledbDataAdapter As New OleDb.OleDbDataAdapter
            sql = "insert into Abonnement (Num_abonnement, Lib_abonnement, Date_debut_ab, Date_fin_ab, Montant_ab, Num_frs, Nom_frs) values ('" & Txtnumab.Text & "', '" & Txtlibab.Text & "', '" & Dates.Value & "', '" & Datef.Value & "', '" & Txtmontantab.Text & "', '" & Txtnumfrs.Text & "', '" & Cbxfrs.Text & "') "
            If Txtnumab.Text = "" Or Txtlibab.Text = "" Or Txtmontantab.Text = "" Or Txtnumfrs.Text = "" Then
                MsgBox("Vous devez saisir des valeurs non nulles.", MsgBoxStyle.Critical + MsgBoxStyle.OkOnly)
                Exit Sub
            End If
            sql1 = "select count * from Abonnement where Num_abonnement ='" & Txtnumab.Text & "'"
            'mg = "Etes vous sûre de vouloir créer cet abonnement?"
            'If mg = vbNo Then Exit Sub
            'If mg = vbYes Then
            If Me.AbonnementTableAdapter.Fill(Me.MarchesDataSet.Abonnement) <> 0 Then
                MsgBox("Cet abonnement existe déjà", MsgBoxStyle.Critical + MsgBoxStyle.OkOnly)
                Exit Sub
            End If
            If Me.AbonnementTableAdapter.Fill(Me.MarchesDataSet.Abonnement) = 0 Then
                Try
                    cn.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source=C:\Marches.mdb"
                    cn.Open()
                    cmd.Connection = cn
                    cmd.CommandText = sql
                    OledbDataAdapter.SelectCommand = cmd
                    OledbDataAdapter.Fill(MarchesDataSet.Marche)
                    cmd.ExecuteNonQuery()
                    cn.Close()
                Catch ex As Exception
                    MsgBox(ex.Message)
                    cn.Close()
                Finally
                    cn.Close()
                End Try
            End If
            'End If
            MsgBox("Votre opération a été effectuée avec succès.", MsgBoxStyle.Information + MsgBoxStyle.OkOnly)
            Me.Close()
            Frmprincipale.Show()
        End Sub
    End Class

  16. #16
    Membre averti Avatar de binouzzz19
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    385
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 385
    Points : 368
    Points
    368
    Par défaut
    Ce que je veux dire, c'est que la ligne que j'ai placé dans le post d'avant ne permet pas de voir si l'enregistrement est déjà créé ou non, donc ca ne va pas du coup !!

    je pense a 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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
     
    Public Class Frmajoutab
     
     Private Sub Btnvalider_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btnvalider.Click
            'Dim mg As Long
            Dim cn As New OleDb.OleDbConnection
            Dim da As New OleDb.OleDbDataAdapter
            Dim cmd As New OleDb.OleDbCommand
            Dim OledbDataAdapter As New OleDb.OleDbDataAdapter
            sql = "insert into Abonnement (Num_abonnement, Lib_abonnement, Date_debut_ab, Date_fin_ab, Montant_ab, Num_frs, Nom_frs) values ('" & Txtnumab.Text & "', '" & Txtlibab.Text & "', '" & Dates.Value & "', '" & Datef.Value & "', '" & Txtmontantab.Text & "', '" & Txtnumfrs.Text & "', '" & Cbxfrs.Text & "') "
            If Txtnumab.Text = "" Or Txtlibab.Text = "" Or Txtmontantab.Text = "" Or Txtnumfrs.Text = "" Then
                MsgBox("Vous devez saisir des valeurs non nulles.", MsgBoxStyle.Critical + MsgBoxStyle.OkOnly)
                Exit Sub
            End If
            sql1 = "select count * from Abonnement where Num_abonnement ='" & Txtnumab.Text & "'"
            'mg = ("Etes vous sûre de vouloir créer cet abonnement?")
            'If mg = vbNo Then Exit Sub
            'If mg = vbYes Then
            Try
                    cn.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source=C:\Marches.mdb"
                    cn.Open()
                    cmd.Connection = cn
                    cmd.CommandText = sql1
                    OledbDataAdapter.SelectCommand = cmd
                    OledbDataAdapter.Fill(MarchesDataSet.Marche)
                    cmd.ExecuteNonQuery()
     
                    ' Faire si il y a un resultat, MsgBox("Cet abonnement existe déjà",MsgBoxStyle.Critical + MsgBoxStyle.OkOnly)
                    'Exit Sub ou requete update si tu ve le modifier
                    'Sinon faire requete sql et MsgBox("Votre opération a été effectuée avec succès.", MsgBoxStyle.Information + MsgBoxStyle.OkOnly)
     
                    cn.Close()
                Catch ex As Exception
                    MsgBox(ex.Message)
                    cn.Close()
                Finally
                    cn.Close()
                End Try
                        Me.Close()
            Frmprincipale.Show()
        End Sub
    End Class
    Si ton labeur est dur et que tes résultats sont minces, rappelles-toi qu'un jour, le grand chêne a été un gland comme toi !

  17. #17
    Membre du Club
    Inscrit en
    Mai 2007
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 257
    Points : 57
    Points
    57
    Par défaut
    Voici le nouveau code source après vos recommandations :

    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
     
    Public Class Frmajoutab
     
     Private Sub Btnvalider_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btnvalider.Click
            'Dim mg As String
            Dim cn As New OleDb.OleDbConnection
            Dim da As New OleDb.OleDbDataAdapter
            Dim cmd As New OleDb.OleDbCommand
            Dim OledbDataAdapter As New OleDb.OleDbDataAdapter
            sql = "insert into Abonnement (Num_abonnement, Lib_abonnement, Date_debut_ab, Date_fin_ab, Montant_ab, Num_frs, Nom_frs) values (" & Me.Txtnumab.Text & ", " & Me.Txtlibab.Text & ", " & Me.Dates.Text & ", " & Me.Datef.Text & ", " & Me.Txtmontantab.Text & ", " & Me.Txtnumfrs.Text & ", " & Me.Cbxfrs.Text & ") "
            If Txtnumab.Text = "" Or Txtlibab.Text = "" Or Txtmontantab.Text = "" Or Txtnumfrs.Text = "" Then
                MsgBox("Vous devez saisir des valeurs non nulles.", MsgBoxStyle.Critical + MsgBoxStyle.OkOnly)
                Exit Sub
            End If
            sql1 = "select count * from Abonnement where Num_abonnement ='" & Txtnumab.Text & "'"
            'mg = "Etes vous sûre de vouloir créer cet abonnement?"
            'If mg = vbNo Then Exit Sub
            'If mg = vbYes Then
            Try
                cn.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source=C:\Marches.mdb"
                cn.Open()
                cmd.Connection = cn
                cmd.CommandText = sql
                OledbDataAdapter.SelectCommand = cmd
                OledbDataAdapter.Fill(MarchesDataSet.Marche)
                cmd.ExecuteNonQuery()
                If Me.AbonnementTableAdapter.Fill(Me.MarchesDataSet.Abonnement) <> 0 Then
                    MsgBox("Cet abonnement existe déjà", MsgBoxStyle.Critical + MsgBoxStyle.OkOnly)
                    Exit Sub
                Else
                    sql = "insert into Abonnement (Num_abonnement, Lib_abonnement, Date_debut_ab, Date_fin_ab, Montant_ab, Num_frs, Nom_frs) values (" & Me.Txtnumab.Text & ", " & Me.Txtlibab.Text & ", " & Me.Dates.Text & ", " & Me.Datef.Text & ", " & Me.Txtmontantab.Text & ", " & Me.Txtnumfrs.Text & ", " & Me.Cbxfrs.Text & ") "
                    MsgBox("Votre opération a été effectuée avec succès.", MsgBoxStyle.Information + MsgBoxStyle.OkOnly)
                End If
                cn.Close()
            Catch ex As Exception
                MsgBox(ex.Message)
                cn.Close()
            Finally
                cn.Close()
            End Try
            Me.Close()
            Frmprincipale.Show()
        End Sub
    End Class
    En cliquant sur le bouton pour valider, j'ai ce msg qui apparaît "Erreur de syntaxe (opérateur absent) dans l'expression 'Accès Pro'" en sachant que 'Accès Pro' est le libellé de l'abonnement que j'ai saisie dans le forms. Que faire ?

  18. #18
    Membre averti Avatar de binouzzz19
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    385
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 385
    Points : 368
    Points
    368
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Me.AbonnementTableAdapter.Fill(Me.MarchesDataSet.Abonnement) <> 0 Then
                    MsgBox("Cet abonnement existe déjà", MsgBoxStyle.Critical + MsgBoxStyle.OkOnly)
                    Exit Sub
                Else
    Que fais "If Me.AbonnementTableAdapter.Fill(Me.MarchesDataSet.Abonnement) <> 0 Then
    " ? Il teste l'existence de données dans la table Abonnement non ?
    Il faut que tu execute sql1 !!!! Lis bien les posts, sinon on peut pas t'aider

    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
     
    Public Class Frmajoutab
     
     Private Sub Btnvalider_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btnvalider.Click
            'Dim mg As String
            Dim cn As New OleDb.OleDbConnection
            Dim da As New OleDb.OleDbDataAdapter
            Dim cmd As New OleDb.OleDbCommand
            Dim OledbDataAdapter As New OleDb.OleDbDataAdapter
            sql = "insert into Abonnement (Num_abonnement, Lib_abonnement, Date_debut_ab, Date_fin_ab, Montant_ab, Num_frs, Nom_frs) values (" & Me.Txtnumab.Text & ", " & Me.Txtlibab.Text & ", " & Me.Dates.Text & ", " & Me.Datef.Text & ", " & Me.Txtmontantab.Text & ", " & Me.Txtnumfrs.Text & ", " & Me.Cbxfrs.Text & ") "
            If Txtnumab.Text = "" Or Txtlibab.Text = "" Or Txtmontantab.Text = "" Or Txtnumfrs.Text = "" Then
                MsgBox("Vous devez saisir des valeurs non nulles.", MsgBoxStyle.Critical + MsgBoxStyle.OkOnly)
                Exit Sub
            End If
            sql1 = "select count * from Abonnement where Num_abonnement ='" & Txtnumab.Text & "'"
            'mg = "Etes vous sûre de vouloir créer cet abonnement?"
            'If mg = vbNo Then Exit Sub
            'If mg = vbYes Then
            Try
                cn.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source=C:\Marches.mdb"
                cn.Open()
                'On teste si la clé existe, si oui, passe en exception (je pense), si tu veux le modifier, fais une requete sql3 update et insere la
                cmd.Connection = cn
                cmd.CommandText = sql1
                OledbDataAdapter.SelectCommand = cmd
                OledbDataAdapter.Fill(MarchesDataSet.Marche)
                cmd.ExecuteNonQuery()
     
                'sinon, on execute sql (donc le insert)
                cmd.CommandText = sql
                OledbDataAdapter.SelectCommand = cmd
                OledbDataAdapter.Fill(MarchesDataSet.Marche)
                cmd.ExecuteNonQuery()
     
     
    MsgBox("Votre opération a été effectuée avec succès.", MsgBoxStyle.Information + MsgBoxStyle.OkOnly)
                cn.Close()
            Catch ex As Exception
                MsgBox("Cet abonnement existe déjà", MsgBoxStyle.Critical + MsgBoxStyle.OkOnly)    
                cn.Close()
                Exit Sub
     
            Finally
                cn.Close()
            End Try
            Me.Close()
            Frmprincipale.Show()
        End Sub
    End Class
    Si ton labeur est dur et que tes résultats sont minces, rappelles-toi qu'un jour, le grand chêne a été un gland comme toi !

  19. #19
    Membre du Club
    Inscrit en
    Mai 2007
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 257
    Points : 57
    Points
    57
    Par défaut
    Comment j'execute sql1 et ou exactement?

  20. #20
    Membre averti Avatar de binouzzz19
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    385
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 385
    Points : 368
    Points
    368
    Par défaut
    Normalement ca doit l'éxecuter la non ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    cn.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source=C:\Marches.mdb"
                cn.Open()
                'On teste si la clé existe, si oui, passe en exception (je pense), si tu veux le modifier, fais une requete sql3 update et insere la
                cmd.Connection = cn
                cmd.CommandText = sql1
                OledbDataAdapter.SelectCommand = cmd
                OledbDataAdapter.Fill(MarchesDataSet.Marche)
                cmd.ExecuteNonQuery()
    Si ton labeur est dur et que tes résultats sont minces, rappelles-toi qu'un jour, le grand chêne a été un gland comme toi !

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/12/2006, 11h20
  2. TDBlookupcombo et modification d'un enregistrement existant
    Par delphim dans le forum Bases de données
    Réponses: 1
    Dernier message: 19/04/2005, 12h11
  3. Réponses: 18
    Dernier message: 15/11/2004, 11h07
  4. Gestion des modifications pour un enregistrement
    Par Pascal Jankowski dans le forum Bases de données
    Réponses: 3
    Dernier message: 10/03/2004, 14h09
  5. Suppression et modification?
    Par Nino dans le forum Débuter
    Réponses: 3
    Dernier message: 09/06/2003, 23h07

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