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 :

mise à jour de la base de données en utilisant datagridview


Sujet :

VB.NET

  1. #1
    Membre régulier
    Femme Profil pro
    ingénieur amélioration continue
    Inscrit en
    Février 2019
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ingénieur amélioration continue
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2019
    Messages : 57
    Points : 76
    Points
    76
    Par défaut mise à jour de la base de données en utilisant datagridview
    bonjour à tous,
    je suis débutante je travaille sous visual studio (vb.net) et pour la base de données j'utilise sql server 2008
    je vien de remplir ma datagridview à partir d'une base de donnés en utilisant une combobox et le code marche bien mais une fois que je veux mettre à jour ma bd en modifiant les données situées dans mon datagridview ça génère un pblm
    voici mon code pour remplir mon datagridview


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     Private Sub ComboBox3_SelectedvalueChanged(sender As Object, e As EventArgs) Handles ComboBox3.SelectedValueChanged
            'filling datagridview using cmbbx 3'
            Dim rq = "select * from [cutting software].dbo." & ComboBox3.SelectedItem.ToString
            dt = New DataTable
            Using cn As New SqlConnection("Data Source=TNBENWID1038\ODL;Initial Catalog=Cutting software;Integrated Security=True;")
                da = New SqlDataAdapter(rq, cn)
                da.Fill(dt) 
            DataGridView1.DataSource = dt
        End Sub
    et le code suivant pour la mise à jour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      Private Sub edit_Click(sender As Object, e As EventArgs) Handles edit.Click
            Dim cmdb As New SqlCommandBuilder(da)
            Using cn As New SqlConnection("Data Source=TNBENWID1038\ODL;Initial Catalog=Cutting software;Integrated Security=True;")
                da.Update(dt)
            End Using
        End Sub
    ce code génère ce message: System.InvalidOperationException: 'The ConnectionString property has not been initialized.'

    merci d'avance :
    " birds don't just fly they fall down and get up "

  2. #2
    Membre habitué
    Inscrit en
    Octobre 2006
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 316
    Points : 146
    Points
    146
    Par défaut
    Salut,

    Pour ceci j'utilise plsueiurs choses et je les rends "réutilisable".
    J'ai un Module "Connexion" avec 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    Imports System.Data.SqlClient
    ' --- Connexion SqlServer
        Public Function get_connexion_sqlServer(ByVal acn As SqlConnection) As Boolean
            Dim chaine As String = "Server=" & DataSource & ";Database=" & Base & ";User Id=xxx;Password=xxx;"
     
            acn.ConnectionString = chaine
            Try
                acn.Open()
                Return True
     
            Catch ex As Exception
                MsgBox(ex.Message, MsgBoxStyle.Critical, "Echec de Connexion!!")
                Return False
     
            End Try
     
        End Function
     
     
        ' --- Déconnexion SqlServer
        Public Function deconnexion_sqlServer(ByVal acn As SqlConnection) As Boolean
            Try
                acn.Close()
                acn.Dispose()
                Return True
     
            Catch ex As Exception
     
                MsgBox(ex.Message)
                Return False
     
            End Try
     
        End Function
    Puis, un autre module "Declaration" dans lequel j'ai toutes mes variables public

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Imports System.Data.SqlClient
    Public Base As String = "MaBase"                
        Public DataSource As String = "MonServeur\MonInstance"  
     
        Public cnn1 As SqlConnection = New SqlConnection("Persist Security Info=False;User ID=xx;Password=xx;Initial Catalog=" & Base & ";Server=" & DataSource & "")
    Ensuite j'ai un SQLDataAdapteur de déclaré dans mon FORM, juste en dessous de Public CLASS xxx
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Private dataAdapter_CMD As New SqlDataAdapter()
    Je rempli mon DataGridView comme 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
     
    Private Sub GetData_HISTO_CMD(ByVal selectCommand As String)
     
            Try
                Me.dataAdapter_HISTO_CMD = New SqlDataAdapter(selectCommand, cnn1)
     
                'update, insert, delete
                Dim commandBuilder As New SqlCommandBuilder(Me.dataAdapter_HISTO_CMD)
     
                Dim table As New DataTable()
                table.Locale = System.Globalization.CultureInfo.InvariantCulture
                Me.dataAdapter_HISTO_CMD.Fill(table)
                Me.bS_HISTO_CMD.DataSource = table
     
    'On peut modifier la largeur des colonnes.. et préciser si cette colonne est en lecture seule ou non :
                'NUM-CMD
                Me.DG_HISTO_CMD.Columns(0).Width = 100
                Me.DG_HISTO_CMD.Columns(0).ReadOnly = True
     
       Catch ex As SqlException
                MessageBox.Show(ex.Message)
            End Try
     
        End Sub
    Mon Datagridview est bien en mode ReadOnly = false

    J'ai aussi un bouton pour faire l'update de ma modification du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Private Sub BTN_UPD_DG_CMD_Click(sender As Object, e As EventArgs) Handles BTN_UPD_DG_CMD.Click
     
            Try
                Me.dataAdapter_CMD.Update(CType(Me.bS_CMD.DataSource, DataTable))
     
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
     
    'Refresh 
            GetData_HISTO_CMD(Me.dataAdapter_HISTO_CMD.SelectCommand.CommandText)
     
    End sub
    Normalement ca devrait aller..
    Sinon ya plein de tuto pour ce genre de chose..
    BonWE!

  3. #3
    Membre émérite 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
    Points : 2 865
    Points
    2 865
    Par défaut
    Bonjour,


    Je n'ai pas la réponse à ta question mais je vois deux anomalies dans ta procédure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      Private Sub edit_Click(sender As Object, e As EventArgs) Handles edit.Click
            Dim cmdb As New SqlCommandBuilder(da)
            Using cn As New SqlConnection("Data Source=TNBENWID1038\ODL;Initial Catalog=Cutting software;Integrated Security=True;")
                da.Update(dt)
            End Using
        End Sub
    Tu déclares une variable cmdb qui n'est pas utlisée ensuite;
    Tu déclares une connexion cn qui n'est jamais Open.

    J'espère tu trouveras une piste ...

  4. #4
    Membre régulier
    Femme Profil pro
    ingénieur amélioration continue
    Inscrit en
    Février 2019
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ingénieur amélioration continue
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2019
    Messages : 57
    Points : 76
    Points
    76
    Par défaut solution
    salut
    merci pour tous le monde pour votre tolérence
    le problème est résolu 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
    Imports System.Data.SqlClient
    Public Class dat
        Private dt As DataTable
        Private da As SqlDataAdapter
     
        Private rq As String
     
        Private Sub ComboBox3_SelectedvalueChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedValueChanged
     
            rq = "select * from [cutting software].dbo." & ComboBox1.SelectedItem.ToString
            dt = New DataTable
            Using cn As New SqlConnection("Data Source=TNBENWID1038\ODL;Initial Catalog=Cutting software;Integrated Security=True;")
                da = New SqlDataAdapter(rq, cn)
                da.Fill(dt) 'If the connection is closed, the DataAdapter will open and close it for you
            End Using
            DataGridView1.DataSource = dt
        End Sub
     
     
     
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim cmdb As New SqlCommandBuilder(da)
            Using cn As New SqlConnection("Data Source=TNBENWID1038\ODL;Initial Catalog=Cutting software;Integrated Security=True;")
                           da.SelectCommand = New SqlCommand(rq, cn)
                da.Update(dt)
            End Using
        End Sub
    " birds don't just fly they fall down and get up "

  5. #5
    Membre émérite 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
    Points : 2 865
    Points
    2 865
    Par défaut
    Bravo !
    Mais je comprends toujours pas ce que fait le Dim cmdb As New SqlCommandBuilder(da) dans cette procédure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim cmdb As New SqlCommandBuilder(da)
            Using cn As New SqlConnection("Data Source=TNBENWID1038\ODL;Initial Catalog=Cutting software;Integrated Security=True;")
                           da.SelectCommand = New SqlCommand(rq, cn)
                da.Update(dt)
            End Using
        End Sub
    Mais si ça marche ...

  6. #6
    Membre régulier
    Femme Profil pro
    ingénieur amélioration continue
    Inscrit en
    Février 2019
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ingénieur amélioration continue
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2019
    Messages : 57
    Points : 76
    Points
    76
    Par défaut
    l'objet Commandbuilder aide à faire l'update , l'INSERT , le DLETE. Au lieu de créer des requetes sql , le commandebuilder remplace ces longues instructions sql.
    son paramétre c'est le dataadapter
    " birds don't just fly they fall down and get up "

  7. #7
    Membre émérite 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
    Points : 2 865
    Points
    2 865
    Par défaut
    Merci pour tes explications ...
    Mais crois-moi, dans la procédure ci-dessous, cmdb ne sert pas.
    Mets donc la ligne en commentaire et observe que cela ne change rien.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim cmdb As New SqlCommandBuilder(da)
            Using cn As New SqlConnection("Data Source=TNBENWID1038\ODL;Initial Catalog=Cutting software;Integrated Security=True;")
                           da.SelectCommand = New SqlCommand(rq, cn)
                da.Update(dt)
            End Using
        End Sub
    Bonne continuation,

  8. #8
    Membre régulier
    Femme Profil pro
    ingénieur amélioration continue
    Inscrit en
    Février 2019
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ingénieur amélioration continue
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2019
    Messages : 57
    Points : 76
    Points
    76
    Par défaut
    Citation Envoyé par Phil Rob Voir le message
    Merci pour tes explications ...
    Mais crois-moi, dans la procédure ci-dessous, cmdb ne sert pas.
    Mets donc la ligne en commentaire et observe que cela ne change rien.
    ,
    merci Phil Rob pour ta clarification mais chui encore débutante je vais essayer de comprendre ça et améliorer mon code
    " birds don't just fly they fall down and get up "

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

Discussions similaires

  1. [C#] [MySQL] Mise à jour de la base de donnée
    Par dev01 dans le forum Windows Forms
    Réponses: 12
    Dernier message: 01/08/2007, 09h15
  2. Réponses: 2
    Dernier message: 30/03/2007, 21h11
  3. [MySQL] Problème de mise à jour de la base de données
    Par Osiris22 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 17/01/2006, 16h08
  4. probleme de virgule dans la mise à jour d'une base de donnée
    Par KAF dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 24/12/2005, 02h18
  5. mise à jour d'une base de données
    Par flo83 dans le forum ASP
    Réponses: 6
    Dernier message: 12/06/2005, 20h27

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