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 :

Ajouter ligne dataview grâce à des combobox


Sujet :

VB.NET

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2013
    Messages : 14
    Points : 5
    Points
    5
    Par défaut Ajouter ligne dataview grâce à des combobox
    Bonjour à tous,

    Je dois faire un petit programme pour gérer un stock de matière.
    J'ai donc créé une base de données sous access que j'ai relié graphiquement à un datagridview.
    J'ai créé un autre userform avec 7 combobox qui me permettrait de pré rentrer les matières, nuances, épaisseur,...
    J'ai un problème pour ajouter une nouvelle entrée à ma base de données, je voudrais pouvoir saisir directement dans
    le combobox (ou sélectionner une valeur pré entré mais on verra plus tard) la matière, dimensions, ep, qté, etc et que
    cela enregistre une nouvelle ligne grâce à un bouton enregistrer. J'espère que c'est compréhensible.

    Quelqu'un a une solution qui fonctionne car j'ai essayé quelques trucs mais n'étant pas du tout bon en programmation en général,
    je galère un peu... J'ai essayé en mode graphique mais un nouvel objet bizarre est créé et je ne le comprends pas...
    merci pour toutes participation.
    Alex

  2. #2
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Bonjour,

    Tu n'as donc qu'à trouver le moyen de faire un INSERT dans ta base Access et après tu recharges ta liste.
    Je te conseil le cour de M. Plasserre, rayon Base de données, tu ne trouveras pas de cours plus clair.

    http://plasserre.developpez.com/cour...bases-donnees2

    Ou alors, si tu as Binder Access sur ton DGV, alors il n'y a qu'à insérer la ligne dans le datagridview et mettre à jour.

    Il y a plein de possibilités.
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2013
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Bonjour Mactwist,
    Merci de ta réponse,

    J'ai suivis le tutoriel comme indiqué depuis hier... mais rien ne "semble" fonctionner, je m'explique
    j'ai suivis la partie :"XVII-E-2. Utilisation du DataSet, du DataView: en pratique"

    J'ai créé la même table que lui puis copié et collé les ligne de code de l'exemple pour voir si au moins l'exemple marche mais je comprends pas car rien ne s'affiche...
    Au début il dit: "Ici on utilise uniquement du code." ===> comme il dit, on a pas à utiliser le graphique et poser des textbox ou dataset sur le form de l'app?je me trompe?
    En tout cas c'est ce que j'ai fais, je pensais que tout serais créé avec le code...
    Ensuite, il dit:"Dans la zone Général, Déclarations du module, il faut déclarer les objets Ado:"
    ce que je fais, mais l'ide me répond: "instruction non valide dans un espace de nom"
    Je met tout ça dans le Public Class Form1 et la plus d'erreur...
    je continue me disant que ça va marcher!

    Ensuite pour l'ouverture de la BDD,
    je met ça directement dans le Public class à la suite des déclarations mais cela m'affiche déclaration attendu alors qu'elles sont déclarés juste au dessus
    je les rentre donc dans une procédure Sub ouverture() et la plus de message d'erreur,
    Ensuite je colle le code pour voir un enregistrement dans un sub enregistrement()
    or l'ide m'indique que nom et prenom (les deux textbox) ne font pas partit de mon application...
    je cré donc deux textbox et je remplace nom et prenom par textbox1 et deux,
    en démarrant le débogage (F5) normalement quelque chose devrait apparaitre mais rien le form reste vide...
    Ne comprenant pas j'ai donc vérifié le chemin de connection grace au site: http://www.connectionstrings.com/access-2010/
    et le chemin s'affichant est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccessFile.accdb;
    Persist Security Info=False;
    et non pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Provider=Microsoft.Jet.OLEDB.4.0;
    La deuxieme partie du code m'indique une erreur, je la supprime et quand je relance le debugage, toujours rien ne s'affiche...
    D'ou vient le problème? de mon chemin de connexion? d'un mauvais usage du tuto,...
    Qu'ai-je donc fais de mal ?
    Je ne comprends vraiment pas alors que j'ai suivis un tuto d'exemple à la lettre,
    quelqu'un peut m'indiquer comment résoudre mon problème s'il vous plait?
    Alex

  4. #4
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Oulalala...

    Va plus doucement parce que ça part dans tous les sens et c'est dur à suivre.

    Alors, tu as donc créer des dataset à la main, très bien.
    Tu peux nous montrer le code ?
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2013
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Oui pas de soucis !
    Merci de ton implication.

    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
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    Option Explicit On
    Imports System
    Imports System.Data
    Imports System.Data.OleDb
     
     
    Public Class Form1
     
    #Region "déclaration"
     
        '  Déclaration Objet Connexion
     
        Private ObjetConnection As OleDbConnection
     
        ' Déclaration Objet Commande
     
        Private ObjetCommand As OleDbCommand
     
        '  Déclaration Objet DataAdapter
     
        Private ObjetDataAdapter As OleDbDataAdapter
     
        ' Déclaration Objet DataSet
     
        Private ObjetDataSet As New DataSet() 'Attention au New
     
        'String contenant la 'Requête SQL'
     
        Private strSql As String
     
        ' Déclaration Objet DataTable
     
        Private ObjetDataTable As DataTable
     
        ' Déclaration Objet DataRow (ligne)
     
        Private ObjetDataRow As DataRow
     
        'Numéro de la ligne en cours
     
        Private RowNumber As Integer    'Numéro de l'enregistrement courant
     
        'Paramêtres de connexion à la DB
        Private strConn As String
     
     
        'Pour recompiler les données modifiées avant de les remettre dans le DataAdapter"
     
        Private ObjetCommandBuilder As OleDbCommandBuilder
     
     
    #End Region
        Sub Ouverture()
            'Initialisation de la chaîne de paramètres pour la connexion 
            strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Alexandre\Desktop\Programme ASD\Nom.accdb;"
            'Initialisation de la chaîne contenant l'instruction SQL
     
            strSql = "SELECT FICHEPATIENT.* FROM FICHEPATIENT"
     
            'Instanciation d'un Objet Connexion
     
            ObjetConnection = New OleDbConnection()
     
            'Donner à la propriété ConnectionString les paramètres de connexion
     
            ObjetConnection.ConnectionString = strConn
     
            'Ouvrir la connexion
     
            ObjetConnection.Open()
     
            'Instancier un objet Commande
     
            ObjetCommand = New OleDbCommand(strSql)
     
            'Instancier un objet Adapter
     
            ObjetDataAdapter = New OleDbDataAdapter(ObjetCommand)
     
            'initialiser l'objet Command
     
            ObjetCommand.Connection() = ObjetConnection
     
            'Avec l'aide de la propriété Fill du DataAdapter charger le DataSet
     
            ObjetDataAdapter.Fill(ObjetDataSet, "FICHEPATIENT")
     
            'Mettre dans un Objet DataTable une table du DataSet
     
            ObjetDataTable = ObjetDataSet.Tables("FICHEPATIENT")
        End Sub
     
     
        Sub enregistrement()
     
            If RowNumber < 0 Then Exit Sub
     
            'Lors de l'ouverture de la BD, s'il n'y a aucun enregistrement
     
            If RowNumber > ObjetDataTable.Rows.Count - 1 Then Exit Sub
     
            'ObjetTable.Rows(Numéro de lignes).Item( Nom de colonne) donne le contenu 
            'd'un champ dans une ligne donnée
     
            Me.TextBox1.Text = ObjetDataTable.Rows(RowNumber).Item("Nom").ToString
     
            Me.TextBox2.Text = ObjetDataTable.Rows(RowNumber).Item("Prenom").ToString
     
            'Item peut avoir en paramètre le nom de la colonne ou sont index
            RowNumber += 1 'incrémente le numéro de la ligne en cours puis on affiche par:
     
            Me.TextBox1.Text = ObjetDataTable.Rows(RowNumber).Item("Nom").ToString
     
            Me.TextBox2.Text = ObjetDataTable.Rows(RowNumber).Item("Prenom").ToString
     
            RowNumber -= 1 'pour la précédente.
     
            RowNumber = 0  'pour la première.
     
            RowNumber = ObjetDataTable.Rows.Count - 1  'pour la dernière.
     
        End Sub
        Sub Modifier_enre()
     
     
     
            ' Extraire l'enregistrement courant
     
            ObjetDataRow = ObjetDataSet.Tables("FICHEPATIENT").Rows(RowNumber)
     
     
     
            'Modifier les valeurs des champs en  récupérant le contenu des TextBox
     
            ObjetDataRow("Nom") = Me.TextBox1.Text
     
            ObjetDataRow("Prenom") = Me.TextBox2.Text
     
     
     
            'Pour modifier les valeurs changées dans le DataAdapter
     
            ObjetCommandBuilder = New OleDbCommandBuilder(ObjetDataAdapter)
     
     
     
            'Mise à jour
     
            ObjetDataAdapter.Update(ObjetDataSet, "FICHEPATIENT")
     
     
     
            'On vide le DataSet et on le 'recharge' de nouveau.
     
            ObjetDataSet.Clear()
     
            ObjetDataAdapter.Fill(ObjetDataSet, "FICHEPATIENT")
     
            ObjetDataTable = ObjetDataSet.Tables("FICHEPATIENT")
        End Sub
     
    End Class

  6. #6
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Là, j'ai pas trop le temps, je regarderai demain matin.

    MAis juste comme ça, tu ne fais pas de lien entre le Datagridview et le ObjetDataTable , du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Datagridview.Datasource = ObjetDataTable
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2013
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Salut,

    Au final j'ai recommencé en mode graphique et ça fonctionne.
    J'ai utilisé essentiellement le binding source.

    Maintenant, j'arrive donc à interagir avec ma base de donnée pour ajouter, supprimer ou modifier.

    Un autre problème s'ajoute, je voudrais que quand on ajoute un enregistrement, il s'ajoute aussi dans un dataview d'un autre onglet.
    J'utilise ce code la pour ajouter dans ma base de donnée du tab1 (tabcontrol)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    StockBindingSource.EndEdit()
            StockTableAdapter.Update(BDD_ASD_stockDataSet.Stock)
    Je me suis dis que je pouvais rajouter le même bout de code en dessous mais modifié pour fonctionner avec le 2nd datagridview sur l'onglet numéro 2...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    EntreesBindingSource.EndEdit()
            EntreesTableAdapter.Update(BDD_ASD_EntreesDataSet.Entrees)
    Mais rien ne s'affiche dans le second datagrid...
    Des idées? des recommandations?

    Mon code en entier pour ceux que ça aide:
    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
    ublic Class Form1
     
        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            'TODO: cette ligne de code charge les données dans la table 'BDD_ASD_EntreesDataSet.Entrees'. Vous pouvez la déplacer ou la supprimer selon vos besoins.
            Me.EntreesTableAdapter.Fill(Me.BDD_ASD_EntreesDataSet.Entrees)
            'TODO: cette ligne de code charge les données dans la table 'BDD_ASD_stockDataSet.Stock'. Vous pouvez la déplacer ou la supprimer selon vos besoins.
            Me.StockTableAdapter.Fill(Me.BDD_ASD_stockDataSet.Stock)
     
        End Sub
     
     
     
        Private Sub BT_PRECEDENT_Click(sender As System.Object, e As System.EventArgs) Handles BT_PRECEDENT.Click
            StockBindingSource.MovePrevious()
        End Sub
     
        Private Sub BT_SUIVANT_Click(sender As System.Object, e As System.EventArgs) Handles BT_SUIVANT.Click
            StockBindingSource.MoveNext()
        End Sub
     
        Private Sub BT_AJOUTER_Click(sender As System.Object, e As System.EventArgs) Handles BT_AJOUTER.Click
            StockBindingSource.AddNew()
            EntreesBindingSource.AddNew()
     
        End Sub
     
        Private Sub BT_ENREGISTRER_Click(sender As System.Object, e As System.EventArgs) Handles BT_ENREGISTRER.Click
            On Error GoTo SaveErr
            StockBindingSource.EndEdit()
            StockTableAdapter.Update(BDD_ASD_stockDataSet.Stock)
            EntreesBindingSource.EndEdit()
            EntreesTableAdapter.Update(BDD_ASD_EntreesDataSet.Entrees)
     
            MessageBox.Show("L'enregistrement a été prit en compte")
    SaveErr:
            Exit Sub
        End Sub
     
        Private Sub BT_SUPPRIMER_Click(sender As System.Object, e As System.EventArgs) Handles BT_SUPPRIMER.Click
            StockBindingSource.RemoveCurrent()
        End Sub
     
    End Class
    Cordialement,
    Tex

Discussions similaires

  1. [MySQL] ajouter une ligne si une des colonnes est vide
    Par JibsouX dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 26/08/2013, 18h45
  2. ajouter des combobox, checkBox sur un dataGrid
    Par patsolaar dans le forum Windows Mobile
    Réponses: 3
    Dernier message: 18/08/2009, 12h25
  3. Ajouter ligne GridViewBis grâce à un GridView
    Par Epica84 dans le forum VB.NET
    Réponses: 2
    Dernier message: 11/06/2009, 09h13
  4. ajouter des combobox dans les cellules de stringgrid
    Par sky88 dans le forum Débuter
    Réponses: 5
    Dernier message: 22/01/2009, 18h35
  5. StringGrid ajout de ligne en fonction des données
    Par thierrybatlle dans le forum Delphi
    Réponses: 3
    Dernier message: 26/05/2006, 13h58

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