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

  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 ?

  7. #7
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 183
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 183
    Par défaut
    Bonjour.

    A mon avis, tu regardes pas la bonne base ...

    Tu dois taper en MAJ dans une copie de la base qui se trouve dans le /Bin du projet. Si t'as mis ta base dans le projet via le designer, faut lui dire de pas faire de copie.

    Cdt.

  8. #8
    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
    Ah, c'est fort possible, ça. Bon là, évidemment, je ne suis - heureusement - plus au boulot, mais je regarde ça lundi.
    Je me rappelle que j'ai dû accepter la copie, parce qu'à terme, je veux créer un exécutable avec ce projet, pour le distribuer, et donc je voulais que la base soit située dans le dossier du projet. Ca ne sert peut être à rien.
    Mais à quoi elle sert, alors, la base dans le dossier /bin ? Si je comprends ce que tu dis, c'est qu'il fait la MAJ dans cette base, et comme au démarrage suivant il va consulter la vraie base, rien n'a changé. C'est ça ?
    Je déteste le .net
    Merci, en tout cas, je tiens au courant de ce que ça donnera.

  9. #9
    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
    Petit pb avec cette suggestion : j'ai enlevé la BD dans "bin" et j'ai viré ma source de données pour la recréer en mettant "non" quand il me demande si je veux une copie.
    Mais damned, il va encore chercher les données dans /bin, et du coup ça ne lui va pas parce qu'il ne trouve rien. Et moi ça ne me va pas parce que je ne veux pas qu'il aille là
    Comment faire changer ça ?

    EDIT : en fait, c'était bien ça, et j'ai réussi à me débarrasser du lien vers cette ancienne base.
    Merci 1000 fois !!

  10. #10
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 183
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 183
    Par défaut
    Bonjour.

    Ok.

    Pense au

    Cdt.

+ 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