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 :

Connexion ADO, VB.Net


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 34
    Points : 10
    Points
    10
    Par défaut Connexion ADO, VB.Net
    Bonjour à tous,
    Voilà, je suis un peu perdu, j'ai une application à realiser en VB.Net, dans le cadre de mon BTS IG en alternance..
    Je dois importer un fichier excel dans une table access.
    J'ai créé une classe avec 3 fonctions : connexion_access, connexion_Excel et connexion_close.
    J'arrive à me connecter à la base de donnée, le fichier excel aussi, mais je ne vois pas/comprends pas comment gérer l'importation du fichier dans la table.
    Je devrais aussi exécuter des requêtes..
    Si quelqu'un pouvait m'aider ça serait vraiment sympa!

    Merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 319
    Points : 414
    Points
    414
    Par défaut
    Bonjour
    Pour importer ton fichier Excel dans ta base de données, tu dois le convertir au format .csv.
    Ensuite tu peux faire un import du fichier directement dans la table.

    Cordialement
    Nasty
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'TODO : trouver une signature mieux que celle la

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 34
    Points : 10
    Points
    10
    Par défaut
    En es tu sur? j'ai lu quelque part que ce n'etait pas vraiment necessaire...
    Mais ce que je ne comprends pas, c'est comment faire la liaison entre le fichier excel et la table access. J'arrive à me connecter à la bdd et au fichier, mais je ne capte pas comment "uploader" les données dans la table.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 319
    Points : 414
    Points
    414
    Par défaut
    Re bonjour
    Et j'ai été un peu rapide, il n'est pas obligatoire d'avoir un fichier csv pour importé dans une base de données
    Tu peux par exemple, lire les cellules de ton fichier excel pour les ajouté comme paramètres dans une requête d'insert!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    'ca donne a peu pres un truc du genre
    appXls = New Microsoft.Office.Interop.Excel.Application   'ouverture d'excel
    appXls.Visible = True 'on affiche la fenetre d'excel
    appXls.Workbooks.Open("chemin du fichier") 'ouverture du fichier excel
    sheetXls = appXls.ActiveWorkbook.Worksheets("nom de la feuille") 
    dim requete as string 
    requete = "insert into tatable(champ1,...) values(" & sheetXls.Range("A1").Value & "...)"
    Cordialement
    Nasty
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'TODO : trouver une signature mieux que celle la

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Août 2002
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 168
    Points : 123
    Points
    123

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    291
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 291
    Points : 390
    Points
    390
    Par défaut
    Bonjour,

    Première des choses avec quelle version d'access et d'excel.

    Deuxième chose, dois-tu créer la table et les champs relativement à tes colonnes excel ?

    Dans le cas le plus simple où ta table et tes champs sont créés a priori et que tu sais lire les données excel correspondantes alors une requête de type INSERT INTO comme te l'a expliqué nasty est la solution.

    Dans l'autre cas c'est un peu plus complexe car il faut créer la base de donnée, la table et les champs. J'ai pas l'exemple sous la main (création de BD 2007 et table), mais si tu en a besoin je te le poste ici dès mon retour au bureau demain matin

    A+

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 34
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    Je suis sous excel/access 2003
    En fait j'ai "simplement" besoin de récuperer les données des 2 premieres colonnes du fichier excel et de les inserer dans une table access déjà existante, à faire une mise à jour des données en gros.

    Merci de votre aide

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 319
    Points : 414
    Points
    414
    Par défaut
    Bonjour,

    Donc si ta table existe déjà tu n'a qu'a faire une requete insert into comme dans mon exemple.

    Cordialement

    Nasty
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'TODO : trouver une signature mieux que celle la

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 34
    Points : 10
    Points
    10
    Par défaut
    Merci Nasty de ta réponse mais je suis completement paumé!
    Je te montre ce que j'ai fais :

    les données sont récupérées dans un dataset:

    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
     
     
            Dim ConnexionA As New ClassBase
            Dim ConnexionE As New ClassBase
     
            ConnexionA.Connexion_access()
            ConnexionE.Connexion_Excel("C:\Documents and Settings\a806303\Desktop\Import_OP_CW03.xls")
     
            Dim Requete As String = "SELECT * FROM OPERATION"
            Dim objDa As New OleDb.OleDbDataAdapter
            Dim objDs As New DataSet
            Dim objcmd As New OleDb.OleDbCommand
            Dim objdat As New DataTable
     
            Try
                objcmd = New OleDb.OleDbCommand(Requete)
                objDa = New OleDb.OleDbDataAdapter(objcmd)
                objcmd.Connection = ConnexionA.connexion
     
                objDa.Fill(objDs, "OPERATION")
                objdat = objDs.Tables("OPERATION")
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
     
            DataGrid1.DataSource = objDs.Tables("OPERATION")
    Mais pour ensuite mettre à jour via le dataset, je ne sais vraiment pas quoi faire... Je dois récupérer les données des colonnes "id_operation" et "designation_operation" et les remplacer par celles qui sont dans la bdd..
    Une âme charitable pour m'aider?

    Merci

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Août 2002
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 168
    Points : 123
    Points
    123
    Par défaut
    Si je comprends bien, actuellement, tu as 2 DataSets, un contenant les données de ta BD et l'autre contenant les données de ton fichier Excel ?

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 34
    Points : 10
    Points
    10
    Par défaut
    pour l'instant il n'y en a qu'un seul, celui qui contient les données de la bdd, là je suis en train de voir pour un 2eme dataset, mais je bloque au niveau de la requete pour recuperer les données des 2 colonnes du fichier excel.
    Je ne sais pas si je suis tres clair...

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 319
    Points : 414
    Points
    414
    Par défaut
    Bonjour
    Je ne comprend pas bien le principe de ta classBase, tu peux te connecter a ta base de donnée et a ton fichier!

    Tu utilise Microsoft.Interop.Office.Excel pour ta "connexion" au fichier Excel? ou autre chose

    Cordialement

    Nasty
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'TODO : trouver une signature mieux que celle la

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 34
    Points : 10
    Points
    10
    Par défaut
    Dans ClassBase il y a 2 fonctions de connexions en ADO
    une pour la bdd access, et l'autre pour le fichier excel.

    J'essaye de faire un 2em dataset pour les données du fichier excel, mais sans succès....

    Désolé si je galère un peu, je suis en 1ere année de bts ig, et c'est un projet que je dois realiser pour l'entreprise, extraire des données des fichiers excel pour les integrer à une base de données et executer des requêtes..

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Août 2002
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 168
    Points : 123
    Points
    123
    Par défaut
    Tu as regardé la technique qui se trouve dans le lien que j'ai posté plus haut ? Je n'ai pas testé

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 34
    Points : 10
    Points
    10
    Par défaut
    oui j'y ai jeté un oeil mais bon... ça ne m'a pas vraiment fait beaucoup avancé lol, mais merci quand même!!!
    Mais ce qui me derange, c'est au niveau de la requete pour recuperer les données du fichier excel

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Août 2002
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 168
    Points : 123
    Points
    123
    Par défaut
    Hum ok... Donne le contenu de ta fonction connexion_Excel.

    Edit : J'ai regardé un de nos projet où on le fait, et on utilise la même technique que le lien que je t'ai filé. On utilisé une OleDBConnection sur le fichier Excel puis un Select sur le nom de la feuille.

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 319
    Points : 414
    Points
    414
    Par défaut
    Ok,
    J'ai connu le stage de 1ere année de BTS IG j'ai galéré aussi
    Je n'ai jamais utilisé ADO pour me connecter a un fichier Excel, j'ai toujours utilisé Micosoft.Office.Interop.Excel.

    Lecture d'un fichier Excel avec Interop.Excel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    appXls = New Microsoft.Office.Interop.Excel.Application   'ouverture d'excel
    appXls.Visible = True 'on affiche la fenetre d'excel
    appXls.Workbooks.Open("chemin du fichier") 'ouverture du fichier excel
    sheetXls = appXls.ActiveWorkbook.Worksheets("nom de la feuille") 
     
    'On récupère le nombre de ligne du fichier par je ne sais quelle méthode pour l'instant mais je te diras si je trouve :-)
    For cpt as integer = 0 to nb_ligne_fichier
       'pour l'exemple je met tout dans un arraylist :-)
       dim var as string = sheetXls.Range("A" & cpt).value
       arraylist.Add(var)
    Next
    J'espere que ca pourra t'aider et courage pour le stage

    Cordialement

    Nasty
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'TODO : trouver une signature mieux que celle la

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 34
    Points : 10
    Points
    10
    Par défaut
    Je connaissais la méthode interop.excel, mais j'ai vu qu'il etait possible de s'y connecté via ADO, chose que j'ai reussi, mais je n'arrive pas à joindre les 2 bouts...

    le contenu de la fonction connexion_excel :

    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
     
    Function Connexion_Excel(ByVal strFichierExcel As String)
     
            Dim ConnexionExc As String
     
            ConnexionExc = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & strFichierExcel & "; Extended Properties=""Excel 8.0;HDR=Yes;"""
     
            MyConnexion = New OleDb.OleDbConnection
            MyConnexion.ConnectionString = ConnexionExc
     
            Try
                MyConnexion.Open()
                MyConnexionStatut = True
            Catch ex As Exception
                MyConnexionStatut = False
                MessageBox.Show(ex.Message)
            End Try
     
        End Function

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Août 2002
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 168
    Points : 123
    Points
    123
    Par défaut
    Ok, Est-ce qu'elle te renvoi bien true déjà ?

    Sinon ça me parait bon. Ensuite tu fais un SELECT avec le nom de ta feuille et tu rempli ton DataSet.

    Par contre j'utiliserais cette solution au lieu de lire le tableau avec l'interop.

  20. #20
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 319
    Points : 414
    Points
    414
    Par défaut
    Ok donc je suis en train de me renseigner sur ADO!
    Peut on voir la requete de select que tu utilises pour lire dans ton fichier Excel?

    Cordialement

    Nasty
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'TODO : trouver une signature mieux que celle la

Discussions similaires

  1. erreur de suntaxe connexion ADO.net
    Par bebo11 dans le forum SSIS
    Réponses: 14
    Dernier message: 25/05/2010, 19h41
  2. Connexion Ado.net Via : Mysql
    Par seksaki dans le forum VB.NET
    Réponses: 1
    Dernier message: 24/03/2010, 01h54
  3. message d'erreur de connexion ado.net & sqlexpress
    Par mounim_taoufik dans le forum Windows Forms
    Réponses: 2
    Dernier message: 31/12/2009, 08h59
  4. connexion ado.net avec mysql ?
    Par seksaki dans le forum VB.NET
    Réponses: 1
    Dernier message: 21/11/2009, 15h55
  5. connexion ADO.Net à une base Firebird
    Par Herwin78800 dans le forum Connexion aux bases de données
    Réponses: 1
    Dernier message: 23/12/2006, 22h12

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