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 6 et antérieur Discussion :

Importation/ exportation txt-->Access sous VB6


Sujet :

VB 6 et antérieur

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 22
    Points : 13
    Points
    13
    Par défaut Importation/ exportation txt-->Access sous VB6
    Bonjour,

    Je voudrais savoir comment importer/exporter, sous VB6, un fichier text vers une base de données Access sans être obligée d'ouvrir le fichier de la base de données.

    Je précise que l'opération d'importation/exportation fonctionne correctement mais uniquement lorsque le fichier de la base de données est ouvert (j'ouvre access puis j'ouvre le fichier de la base de données).

    Merci d'avance

    Leila

  2. #2
    Membre averti
    Homme Profil pro
    Développeur VB6 et tout neuf en .Net
    Inscrit en
    Avril 2005
    Messages
    377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VB6 et tout neuf en .Net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 377
    Points : 446
    Points
    446
    Par défaut
    Bonjour moi_leila

    Citation Envoyé par moi_leila
    Je voudrais savoir comment importer/exporter, sous VB6, un fichier text vers une base de données Access sans être obligée d'ouvrir le fichier de la base de données.
    Tu veux dire sans ouvrir Access ?

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    Bonjour,

    Oui, exacte. Je suis obligée d'ouvrir access pour que ça marche

    Leila

  4. #4
    Membre averti
    Homme Profil pro
    Développeur VB6 et tout neuf en .Net
    Inscrit en
    Avril 2005
    Messages
    377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VB6 et tout neuf en .Net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 377
    Points : 446
    Points
    446
    Par défaut
    Personnellement j'utiliserai ADO pour travailler sur un fichier Access.

    Pour cela tu dois ajouter la référence "Microsoft ActiveX Data Object 2.8 Library" à ton projet. Il y peut-être d'autres références équivalentes...

    Ensuite tu crée une connexion avec l'objet ADODB.Connection et une chaine de connection du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\somepath\myDb.mdb;"
    Pour la manipulation des données regarde l'objet Recordset, qui possede les propriété Addnew et Update.

    Désolé, je n'ai pas de code d'exemple, mais je pense que cela ne doit pas être trop dur à trouver.

    N'hésite pas à faire

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    Bonjour,

    Le problème n'est pas dans le fait de connecter VB à la base de données, J'ai déjà ouvert la base de données mais pour que le code fonctionne je sui obligée d'ouvrir le fichier de la base en lui même.

    Pour me faire comprendre plus, regardez cette prise d'écran :



    Il s'agit d'un fichier bd ouvert dans windows et pas seulement un opendatabase.

    Merci d'avance

    Leila
    Images attachées Images attachées  

  6. #6
    Membre averti
    Homme Profil pro
    Développeur VB6 et tout neuf en .Net
    Inscrit en
    Avril 2005
    Messages
    377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VB6 et tout neuf en .Net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 377
    Points : 446
    Points
    446
    Par défaut
    Désolé, je ne comprends pas

    Tu es en train de dire que pour faire fonctionner ton programme VB, Access doit être ouvert. C'est ça ?

    Pourrais-tu nous montrer ton code ?

  7. #7
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    Le code est comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    fb1 = "table1 spécification d'exportation"
    req_table1 = "select * from table1" + " order by [1]"
    Set rs_table1 = db.OpenRecordset(req_table1)
    Dim load1, load2
     
    DoCmd.TransferText acImportFixed, fb1, "table1", "c:\cnss\bd\somitex.txt", False
    mais ça ne marche pas tant que j'ai pas ouvert access et fait (fichier - ouvrir -la bd).
    Normalement la manupulation de la base de données se fait à travers le code VB6. On peut établir une connexion pour ajouter, éditer, supprimer etc..., donc on n'est sensé ouvrir la base en elle même.

    Mais là, dans ce cas, je suis obligée d'ouvrir access et la base (comme dans la capture écran que j'ai mis), puis d'executer l'application.


    Merci beaucoup pour ton aide.

    Leila

  8. #8
    Membre averti
    Homme Profil pro
    Développeur VB6 et tout neuf en .Net
    Inscrit en
    Avril 2005
    Messages
    377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VB6 et tout neuf en .Net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 377
    Points : 446
    Points
    446
    Par défaut
    Pourrais-tu mettre la déclaration de tes variables ?
    db et DoCmd c'est quoi ?

  9. #9
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    Public db As Database
    Mais Docmd fait partie des références (Microsoft access 9.0 object library): (Menu projet --> références).

    L'ouverture de la base dont je vous parle se fait manuellement, cçd que je suis obligée d'ouvrir la bd manuellement pour que ça marche


    Merci d'avance

    Leila

  10. #10
    Membre averti
    Homme Profil pro
    Développeur VB6 et tout neuf en .Net
    Inscrit en
    Avril 2005
    Messages
    377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VB6 et tout neuf en .Net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 377
    Points : 446
    Points
    446
    Par défaut
    Je pense que ton problème vient de la référence à Access 9.
    Tu demande à l'application Access de faire quelque chose, cela signifie qu'elle doit être chargée, soit manuellement, soit par le code.
    Il y a peut-être une propriété pour masquer Access (.Visible ??)

    Je n'aime pas trop utilisé ces objets, car cela veut dire que Access doit être installé sur le poste. De plus, l'utilisation de ces objets charge tout Access en mémoire, alors que tu à juste besoin du moteur de base de données.

    VB fournit le moteur Jet (le moteur de base de données d'Access). Tu trouvera des exemples avec VB de l'utilisation de ce moteur.

  11. #11
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    Bonjour,

    Pour réussir l'opération d'exportation/importation du fichier text, j'ai essayé deux méthodes :

    1- Utiliser la fonction /"DoCmd.TransferText acImportFixed"/.
    2- Attaher une table dans access au fichier texte afin d'éviter l'opération de l'importation / exportation.

    La 1ère solution bloque lorsque la bd n'est pas ouverte manuellement.
    La 2ème solution bloque quand je fait appel à la table dans VB, il me sort le msg suivant : Pilote ISAM introuvable. Je suis sensée changer quelque chose dans la base de registre pour que ça marche.

    Pouvez vous m'aider pour trouver une solution svp

    NB : L'application fonctionne déjà depuis pas mal de temps, toute sa structure est adaptée à la bd actuelle. + Je suis obligée d'utiliser le fichier texte. Je n'ai pas d'autre choix.

    Merci d'avance

    Leila

  12. #12
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Il reste la bonne vielle méthode, ouvrir le fichier tete, le lire et ajouter chaque ligne dans la base de données.
    Ton probleme vient du fait que DoCmd ne fait pas partie de vb mais de Access. Donc il te faut autre chose que le doCmd . Ce qui te liberera d'access et ton programme pouras tourner sur une machine qui n'en dispose pas.

  13. #13
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    Il reste la bonne vielle méthode, ouvrir le fichier tete, le lire et ajouter chaque ligne dans la base de données.
    J'ai pas compris la méthode, c'est un truc que je peux utiliser à la place de Docmd? lequel svp?

    Merci d'avance

    Leila

  14. #14
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Tu pourais t'inspirer de ces quelques lignes

    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
    Private Sub Command1_Click()
      Dim hFich As Integer
      Dim Ligne As String
      Dim Champs As Variant
      Dim iPnt As Integer
      hFich = FreeFile
      Open MonFichier For Input As #fich
      Do While Not EOF(hFich)
        Line Input #hFich, Ligne
        Champs = Split(Ligne, ",")
        Rs.AddNew
        For iPnt = 0 To Rs.Fields.Count - 1
          Rs(iPnt) = Champs(iPnt)
        Next
        Rs.Update
      Loop
      Close #hFich
    End Sub
    Elles supposent ceci pour fonctionner
    - Ton fichier texte est sequentiel avec des VbrCrLf comme séparateur de lignes, et des virgules comme séparateur de champs (un bon vieux fichier csv quoi)
    - Ton recordset a le même nombre de champs que ton fichier texte et dans le même ordre

  15. #15
    Membre régulier
    Inscrit en
    Juin 2004
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 89
    Points : 73
    Points
    73
    Par défaut
    Pourquoi tu ne veux pas ouvrir Access? Parce que tu ne l'ouvre pas via VB mais "à la main"?

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/06/2013, 08h33
  2. Réponses: 2
    Dernier message: 22/06/2013, 19h53
  3. Export d'état Access sous forme de PDF
    Par rapace dans le forum Access
    Réponses: 13
    Dernier message: 31/08/2006, 10h07
  4. import fichier TXT via ACCESS
    Par lepierre dans le forum Access
    Réponses: 4
    Dernier message: 03/12/2005, 06h52
  5. [vb6] Modifier structure table Access sous VB6
    Par jlvalentin dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 25/03/2004, 17h45

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