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

Windows Forms Discussion :

Access et VB.net


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Consultant MOA
    Inscrit en
    Juin 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2007
    Messages : 60
    Par défaut Access et VB.net
    Bonjour à tous.
    J'ai cherché un peu partout mais je suis toujours relativement paumée en ce qui concerne le lien BD access / appli vb.net.
    Disons qu'avec VB6, j'avais pris des habitudes et je maitrisais assez pour faire ce que je voulais. Mais grâce à microsoft, je ne peux plus faire de VB6, et donc je me suis gentiment sacrifiée pour tenter le passage.

    Bref, passons aux choses sérieuses. J'ai cru comprendre que dans vb.net, la base access est "représentée" par un DataSet, qui en est une sorte de copie locale, et qu'on fait tout sur lui avant de mettre la vraie base à jour.

    Mon problème, c'est que je n'arrive pas à mettre la vraie base à jour. Je sais qu'il y a plein d'exemples, et le fameux cours de Plasserre, mais je ne sais pas si je dois tout prendre dedans, ni ou le mettre d'ailleurs.
    En effet, en tant que non-adepte de la programmation, surtout celle-là, j'essaye d'utiliser les outils de visual studio.
    Exemple concret : je mets une listbox, je veux qu'elle soit remplie avec des données de ma BD, je mets ce qu'il faut dans les propriétés de la listbox (databinding, etc) et tout va bien, mes données s'affichent.
    Le problème, c'est dès que je veux en ajouter.
    L'aide donne 2 exemples, que voilà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
            'création d'une nouvelle entrée
            Dim nouvel_acteur As Base_Analyse_RisquesDataSet.ActeursRow
            nouvel_acteur = Me.Base_Analyse_RisquesDataSet.Acteurs.NewActeursRow
            nouvel_acteur.Fonction = Text_Acteur.Text
     
            'ajout de l'entrée à la table
            Me.Base_Analyse_RisquesDataSet.Acteurs.Rows.Add(nouvel_acteur)
     
            'enregistrement de l'entrée dans la BD
            Me.ActeursTableAdapter.Update(Me.Base_Analyse_RisquesDataSet.Acteurs)
    et 2e exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            ActeursTableAdapter.Insert(Text_Acteur.Text)

    Tout ça n'insère pas les données dans la vraie base. Et je ne sais vraiment pas ce qu'il faut rajouter, parce que l'aide que je trouve, ça fait un peu "grosse artillerie", enfin je n'ai pas l'impression que ça tienne compte de ce qui est déjà fait tout seul par le logiciel - ce qui n'est pas facile à déterminer, d'ailleurs. Du genre : est-ce que je dois créer un objet connexion, etc....et quelle est la commande qui actualise pour de vrai la base.

    Je suis assez déprimée....surtout par le fait que je pouvais (et avais, d'ailleurs) faire tout ça en VB6. Mais bon, il faut regarder de l'avant ; j'aurais juste besoin d'éclaircissements....
    Merci.

  2. #2
    Membre Expert
    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
    Par défaut
    Il y a pas mal de sources sur ce sujet :
    http://plasserre.developpez.com/v6-2.htm
    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 !

  3. #3
    Membre averti
    Profil pro
    Consultant MOA
    Inscrit en
    Juin 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2007
    Messages : 60
    Par défaut
    Oui, mais tout ça, j'ai vu. Mais pour moi, ce code, c'est tout de A à Z, or les outils de Visual Studio font déjà une bonne partie du boulot.
    Ils remplissent mes Datagrid, ou mes listes, etc, mais ne sauvent pas les données dans la base.
    Et je ne comprends pas quelle partie du code va faire ça..

  4. #4
    Membre Expert
    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
    Par défaut
    Citation Envoyé par belsuncette Voir le message
    mais ne sauvent pas les données dans la base.
    Et je ne comprends pas quelle partie du code va faire ça..
    J'ai crée une petite classe qui s'occupe de toutes les actions avec la base access
    Gestion d'une base de donnée access
    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 !

  5. #5
    Membre averti
    Profil pro
    Consultant MOA
    Inscrit en
    Juin 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2007
    Messages : 60
    Par défaut
    Bon, j'essaie le code de plasserre.
    J'ai repris toute la partie "ouverture", que j'ai mise dans la procédure de form_load :

    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
     
     
    '  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
     
    'Ouverture
     
    'Initialisation de la chaîne de paramètres pour la connexion
    strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Data Source= c:\nom.mdb;"
     
    '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")
    puis "ajouter un enregistrement", dans ma procédure de clic sur un bouton OK :

    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
     
    ObjetDataRow = ObjetDataSet.Tables("FICHEPATIENT").NewRow()
    ObjetDataRow("Nom") = Me.Nom.Text
    ObjetDataRow("Prenom") = Me.Prenom.Text
    ObjetDataSet.Tables("FICHEPATIENT").Rows.Add(ObjetDataRow)
     
    '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")
    A la fin de ça, mes données ne sont toujours pas dans ma BD. Je n'y comprends rien, et ça m'énerve, en plus.


  6. #6
    Membre averti
    Profil pro
    Consultant MOA
    Inscrit en
    Juin 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2007
    Messages : 60
    Par défaut
    J'ai fini par distinguer les 2 méthodes : avec du code, ou avec les outils fournis.
    Dans les 2 cas, ce qui est censé mettre la BD à jour, c'est cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ObjetDataAdapter.Update(ObjetDataSet, "Acteurs")
    Bon. Mais pourquoi cela ne met-il pas ma base à jour, alors ?

    J'ai testé ton petit tutoriel, aspic, et je te remercie. En allant farfouiller dans la base "birthday", j'ai vu que les mises à jour sont bien prises en compte. (au passage c'est normal que ça duplique la base ?).
    Mais je ne vois pas ce qui, chez toi, fait cette opération de mise à jour de la BD ; je ne vois que celle de la table et la liste.

    Quelqu'un pour m'expliquer pourquoi ma ligne (codée manuellement, ou mise automatiquement) ne fait pas son boulot ?

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

Discussions similaires

  1. Erreur de syntaxe - Access et Ado.net
    Par tibblou dans le forum Accès aux données
    Réponses: 6
    Dernier message: 25/01/2007, 19h26
  2. [VB6]Lire une base Access sur le Net.
    Par SNDP dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 04/07/2006, 15h02
  3. [MFC] Accès à une base access sur le net
    Par LapinGarou dans le forum MFC
    Réponses: 4
    Dernier message: 21/03/2006, 12h11
  4. Graphique access sur le net.
    Par pepe2006 dans le forum Access
    Réponses: 3
    Dernier message: 14/09/2005, 01h26
  5. Réponses: 4
    Dernier message: 09/11/2004, 22h38

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