stfn
Messages postés3Date d'inscriptionmardi 20 juin 2006StatutMembreDernière intervention28 juin 2006
-
21 juin 2006 à 16:34
stfn
Messages postés3Date d'inscriptionmardi 20 juin 2006StatutMembreDernière intervention28 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)" ...
econs
Messages postés4030Date d'inscriptionmardi 13 mai 2003StatutMembreDernière intervention23 décembre 200824 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.
stfn
Messages postés3Date d'inscriptionmardi 20 juin 2006StatutMembreDernière intervention28 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
Dolphin Boy
Messages postés630Date d'inscriptionvendredi 5 mai 2006StatutMembreDernière intervention17 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.
stfn
Messages postés3Date d'inscriptionmardi 20 juin 2006StatutMembreDernière intervention28 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..