Lecture d'un fichier texte

stfn Messages postés 3 Date d'inscription mardi 20 juin 2006 Statut Membre Dernière intervention 28 juin 2006 - 21 juin 2006 à 16:34
stfn Messages postés 3 Date d'inscription mardi 20 juin 2006 Statut Membre Dernière intervention 28 juin 2006 - 28 juin 2006 à 12:59
bonjour à tous! je voudrais optimiser la lecture et l'écriture simultanée d'une base de données( en fichier .txt) lors d'une recherche de doublons, car qd ma base devient trop importante le temps de scrutation devient trop long pour mon application (qui est de type industrielle)...et me fait louper des acquisitions...auriez vous une piste ??
à chacune de mes acquisitions il faut que je vérifie que le numéro n'existe pas  déja :-(

pour l'instant j'utilise la fonction ".OpenAsTextStream(8, -2)" ...

    merci d'avance

4 réponses

econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
21 juin 2006 à 16:43
Dépose plutôt le code avec lequel tu scrutes le fichier texte. On pourra sans doute l'améliorer.
Mais scruter un fichier texte, même avec des milliers de lignes, çà ne prend pas une seconde en VB6.

Manu

--------------------------------------------------------------------------------------------
Avant de poster un message, n'oubliez pas de consulter le reglement.
0
stfn Messages postés 3 Date d'inscription mardi 20 juin 2006 Statut Membre Dernière intervention 28 juin 2006
21 juin 2006 à 18:04
 salut manu merci d'avoir répondu si vite ... en gros sa revient à sa:

Dim ContenuFichier

Set EnrFich = CreateObject("Scripting.FileSystemObject") 'Création objet**
On Error Resume Next
Set FicLog = EnrFich.CreateTextFile(App.Path & "\MonFichier.txt", False)

     If Err.Number = 0 Then 'Si aucune erreur, le fichier vient d'être créé*****
           Set FicLog = EnrFich.GetFile(App.Path & "\MonFichier.txt") 'Chargement du fichier
  
     Else 'Si existance d'erreurs, alors le fichier existe déjà*****
        
            Set FicLog = EnrFich.GetFile(App.Path & "\MonFichier.txt") 'Chargement du fichier
            Set FicLogBis = FicLog.OpenAsTextStream(1, -2) 'Ouverture du fichier
            m4 = FicLogBis.ReadAll
            Text14.text = InStr(1, m4, Text11.text, vbTextCompare)  'récupération de la position de ma chaine(text11) ds monfichier.txt(m4)
                    If Text14.text 0 And CAR_cherché2.text <> "pas de cb" And Varcodebar <> " " And CAR_reconnu2.text CAR_cherché2.text Then   'si le numéro n'existe pas encore ds monfichier.txt
                             Set FicLog = EnrFich.GetFile(App.Path & "\MonFichier.txt") 'Chargement du fichier
                             Set FicLogBis = FicLog.OpenAsTextStream(8, -2) 'Ouverture du fichier
                             FicLogBis.WriteLine (Text11.text & " " & Text12.text & " " & Vardatte & " " & Varutilisateur) 'Ecriture dans le fichier
                             Text15.text = " en écriture "
                     Else:
                              If Text14.text <> 0 Then 'And CAR_trouvé2.text = CAR_cherché2.text Then
                                      Text15.text = "doublons détecter "
                                      Text13.Visible = True
                              Else
                                       Text15.text = ""
                              End If

                     End If
  
        FicLogBis.Close 'Fermeture
        Set FicLogBis = Nothing
        FicLog.Close 'Fermeture du fichier
        Set FicLog = Nothing
  

awè pendant que j'y pense justement je ne dispose pas d'une seconde en fait mais juste 80ms...
merci
0
Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007
21 juin 2006 à 19:57
Salut, ton code me fait penser à du VBS.
Si oui, c'est "normal" que ce soit lent, VBS étant interprété et non compilé.
D'autre part, VBS ou VB6, l'utilisation de "FileSystemObject" bouffe des ressources inutilement et est très lent.
Donc, VBS ou VB6, je conseillerais l'utilisation de Open, Line Input, Print ... plein d'exemples sur le site.
0
stfn Messages postés 3 Date d'inscription mardi 20 juin 2006 Statut Membre Dernière intervention 28 juin 2006
28 juin 2006 à 12:59
merci les gars !!!j'ai réussi à trouver un programme qui utilisait les fonctions dont vous m'avez parler ...et du coup c'est vachement plu rapide meme si la base est blindée..
0
Rejoignez-nous