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

Access Discussion :

Lire dans fichier texte


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2005
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 40
    Points : 29
    Points
    29
    Par défaut Lire dans fichier texte
    Bonjour à tous.

    J'ai créé ma base Access avec tout le nécessaire et depuis peu je l'ai migrée vers SQL Server Express.

    J'ai dû revoir certaines fonction VB, notemment pour exécuter les requêtes (Ah les ADOBD.Connection !!!)

    Seulement j'avais une fonction qui me permettait de lire dans un fichier texte et de prendre certaines lignes en fonction des valeurs de la ligne :
    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
     
    Sub ImportTXT(toto As String)
    Dim txtLine As String
    Dim tabline() As String
    Dim LeFichier As String, chaine As String
    Dim dbs As DAO.Database
    Dim rst As DAO.Recordset
    Dim F As Integer
    Dim dat As Variant
     
    LeFichier = "t:\test.txt"
     
    'Ouverture de la base et de la table de destination
    Set dbs = CurrentDb
    Set rst = dbs.OpenRecordset("MaTable", dbOpenDynaset)
    F = FreeFile
    'Ouverture du fichier texte
    Open LeFichier For Input As #F
    'Lecture de la première ligne contenant les libellés de colonnes (inutiles)
    Line Input #F, txtLine
    Do While Not EOF(F)
       Line Input #F, txtLine
       'séparation de chaque colonne dans un tableau
       tabline = Split(txtLine, ";")
       'test sur l'agence (toto)
       chaine = tabline(3)
       dat = Empty
       If chaine = toto Then
            'test sur la date vide
            If tabline(16) <> "          " Then
                dat = CDate(tabline(16))
            End If
            With rst 'affectation des cases du tableau à chaque colonne de la table
                .AddNew
                .Fields("semaine").Value = CLng(tabline(0))
                .Fields("annee").Value = CLng(tabline(1))
                .Fields("societe").Value = tabline(2)
                .Fields("agence").Value = tabline(3)
                .Fields("module").Value = tabline(4)
                .Update
            End With
        End If
    Loop
    Close #F
    rst.Close
    Mais cela ne fonctionne plus depuis la migration et j'ai essayé de transformer mes objets DAO en ADODB mais, comme c'est toujours le cas (sic), les méthodes DAO ne sont pas les mêmes en ADODB...

    Si vous avez un conseil ou une explication, je suis preneur!!
    Merci d'avance!

  2. #2
    Nouveau membre du Club
    Inscrit en
    Février 2005
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 40
    Points : 29
    Points
    29
    Par défaut
    Pour ceux que ça intéresse, voici comment j'ai trouvé la solution :
    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
     
    Sub ImportTXT(toto As String)
    Dim txtLine As String
    Dim tabline() As String
    Dim LeFichier As String, chaine As String
    Dim dbs As ADODB.Connection
    Dim rst As ADODB.Recordset
    Dim F As Integer
    Dim dat As Variant
     
    LeFichier = "t:\logements.txt"
     
    'Ouverture de la base et de la table de destination
    Set dbs = CurrentProject.Connection
    Set rst = New ADODB.Recordset
    rst.Open "Logements", dbs, dbOpenDynaset, adLockPessimistic
    F = FreeFile
    'Ouverture du fichier texte
    Open LeFichier For Input As #F
    'Lecture de la première ligne contenant les libellés de colonnes (inutiles)
    Line Input #F, txtLine
    Do While Not EOF(F)
       Line Input #F, txtLine
       'séparation de chaque colonne dans un tableau
       tabline = Split(txtLine, ";")
       'test sur l'agence (toto)
       chaine = tabline(3)
       dat = Empty
       If chaine = toto Then
            'test sur la date vide
            If tabline(16) <> "          " Then
                dat = CDate(tabline(16))
            End If
            With rst 'affectation des cases du tableau à chaque colonne de la table
                .AddNew
                .Fields("semaine").Value = CLng(tabline(0))
                .Fields("annee").Value = CLng(tabline(1))
                .Fields("societe").Value = tabline(2)
                .Fields("agence").Value = tabline(3)
                .Fields("module").Value = tabline(4)
                .Update
            End With
        End If
    Loop
    Close #F
    rst.Close
    A plus!

  3. #3
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    +1
    Bravo et merci d'avoir partagé ta solution avec la communauté.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

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

Discussions similaires

  1. Lire un fichier Texte d'1 bloc dans une chaine
    Par User dans le forum Langage
    Réponses: 6
    Dernier message: 13/09/2006, 21h56
  2. Réponses: 8
    Dernier message: 09/07/2006, 14h42
  3. Réponses: 3
    Dernier message: 09/06/2006, 12h36
  4. Réponses: 20
    Dernier message: 23/03/2006, 16h21
  5. Réponses: 1
    Dernier message: 24/11/2004, 16h54

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