Probleme sur un fichier

lunatic34 Messages postés 36 Date d'inscription lundi 13 novembre 2000 Statut Membre Dernière intervention 27 mai 2006 - 15 juin 2005 à 13:23
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 - 16 juin 2005 à 00:02
bonjour!!!
je remercie d'avance se qui vont m'aider...
voila je suis entraine de faire un programme en vb6 et je rentre des donnés dans le fichier mé je voudrais chercher dans le fichier si une certaine chaine de caractere on debut existe et si se n'est pa le cas alors j'introduit cette chaine de caractere....Je m'explique!!!
on debut de mon fichier sur la premiere ligne il dois y avoir cette chaine de caractere: nom;prenom;telephone;age
si elle y est deja je passe a la ligne suivante mais si elle ni est pas je l'ecris dans la premiere ligne de mon fichier j'éspere que vous avait bien compris......

9 réponses

cs_dragon Messages postés 2336 Date d'inscription samedi 14 juillet 2001 Statut Membre Dernière intervention 5 mai 2009 6
15 juin 2005 à 14:00
essai avec instr()


-------------------------------------------------
Dragon alias aussi Waxime mais bon, pas le gout de refaire un nouveau profil lol
-------------------------------------------------
0
lunatic34 Messages postés 36 Date d'inscription lundi 13 novembre 2000 Statut Membre Dernière intervention 27 mai 2006
15 juin 2005 à 15:03
j'ai essayé avec instr() mais le probleme c qu'il me recré a chaque fois la ligne...
model = "nom" & ";" & "prenom" & ";" & "telephone" & ";" & "age" If InStr(model, model) Then
Open "c:\basemajestic.txt" For Append As #1
Print #1, model
Close #1
End If

Moi je veux qu'il me cré la chaine de caractere model dans la premiere ligne de ma fiche si elle n'existe pas!!!!!!!!!
0
cs_drahcir Messages postés 745 Date d'inscription mardi 30 novembre 2004 Statut Membre Dernière intervention 15 septembre 2009 4
15 juin 2005 à 16:02
Salut,

tu n'as pas besoin de mettre des & dans ta chaîne :
model = "nom;prenom;telephone;age"
et InStr(model, model) va toujours être vrai donc forcément, il va toujours ajouter la ligne, même si elle existe.
Il faut d'abord que tu lises la 1ère ligne de ton fichier, tu la stockes dans une variable (premLigne) et ensuite tu fais ta comparaison :

If InStr(model, premLigne) Then
Open "c:\basemajestic.txt" For Append As #1
Print #1, model
Close #1
End If

@+
0
cs_dragon Messages postés 2336 Date d'inscription samedi 14 juillet 2001 Statut Membre Dernière intervention 5 mai 2009 6
15 juin 2005 à 17:04
vu qeu tu as des ;, tu peut toujours utilisé split qui va te faire un tableau. Si tu sais dans quel colonne tu cherches


-------------------------------------------------
Dragon alias aussi Waxime mais bon, pas le gout de refaire un nouveau profil lol
-------------------------------------------------
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lunatic34 Messages postés 36 Date d'inscription lundi 13 novembre 2000 Statut Membre Dernière intervention 27 mai 2006
15 juin 2005 à 20:01
Merci mais je vois pas comment lire ma premiere ligne de mon fichier!!!!!!!
0
cs_dragon Messages postés 2336 Date d'inscription samedi 14 juillet 2001 Statut Membre Dernière intervention 5 mai 2009 6
15 juin 2005 à 21:25
eh ... comment tu t'y prend ???


-------------------------------------------------
Dragon alias aussi Waxime mais bon, pas le gout de refaire un nouveau profil lol
-------------------------------------------------
0
EREF Messages postés 31 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 24 février 2006
15 juin 2005 à 21:48
Je ne sais pas ce que tu veux faire exactement avec ton fichier, mais je pense que tu devrait creuser un peu ceci .

<<<<<<<<<<<<>>>>>>>>>>>>>>>>>

Le mode DIRECT est pratique mais ne fonctionne pas du tout comme le mode SEQUENTIEL.
On utilise RANDOM pour ouvrir un fichier , et les instructions GET pour lire , et PUT pour écrire dedans.
Comment ça marche !??!

Ex: Tu veux stocker dans un fichier ton Nom,Prénom,Age,et Téléphone, et surtout tu veux pouvoir y accéder directement sans être obligé de lire tout le fichier.

Ces données tu vas les stocker ligne par ligne.
Tu as (en mode RANDOM) un peu plus de 32000 lignes disponibles.

Il est conseillé de passer par une variable Tampon (Ex: Dim ENR as String)
Le code est le suivant:

OPEN <Ch.directeur du fichier à écrire> FOR RANDOM AS #1
ENR=Nom
PUT #1,1,ENR
ENR=Prénom
PUT #1,2,ENR
ENR=Age
PUT #1,3,ENR
ENR=Téléphone
PUT #1,4,ENR
CLOSE #1

On à fait quoi ?? en language humain !!!!

On à écrit dans #1, à la ligne 1, la variable ENR, dans laquelle on avait stocké le Nom
On à écrit dans #1, à la ligne 2, la variable ENR, dans laquelle on avait stocké le Prénom
Etc,Etc,..........

Tu as compris ???

Maintenant, si tu veut ressortir ton N° de Téléphone, tu sais qu'il est stocké à la ligne 4, donc le code est le suivant:

OPEN <Ch.directeur du fichier à lire> FOR RANDOM AS #1
GET #1,4,ENR
CLOSE #1

Tu peux inscrire tous ces renseignements sur une seule ligne, en les stockant dans ENR. (Ex: ENR=Nom+Prénom+Age+Téléphone)
Auparavant, il vaudrait mieux, les avoir "formater" en utilisant la fonction MID :

Nom=MID((Nom+"<20 espaces>),1,20)
Prénom=MID((Prénom+"<20 espaces>),1,20)
Age=MID((Age+"<3 espaces>),1,3)
Téléphone=MID((Téléphone+"<14 espaces>),1,14)

Si tu ne connait pas la synthaxe pour la fonction MID, la voilà:

MID(<string>,<caractère de départ>,<nb de caractères à prendre>)
Ex: MID("BONJOUR",2,2) donne "ON"
MID("BONJOUR",1,3) donne "BON"
MID("BONJOUR",4,4) donne "JOUR"

avec cette fonction on s'assure que le Nom fera 20 caractères,(si ce n'est pas le cas, les espaces complèteront la chaine), le Prénom aura aussi 20 car. , l'Age en aura 3 , et le Téléphone 14.
Comme çà, lorsque tu liras la ligne, elle aura 57 caractères; et tu pourra la découper avec la fonction MID pour retouver le Nom, Prénom, Etc,Etc....

Ex: Nom="duchemol" avec formatage => Nom="duchemol "
Prénom="toto" => Prénom="toto "
Age="19" => Age="19 "
Téléphone="08/00/20/52/05" => Téléphone="08/00/20/52/05"
ENR="duchemol toto 19 08/00/20/52/05"

Si tu veux le Prénom, tu sais qu'il commence au 21ème caractère, et qu'il fait 20 car. de long, donc dans une autre variable, qu'on va appeller ENR2, on va y loger le Prénom avec cette bonne vieille fonction MID.

ENR2=MID(ENR,21,20)

A toi de faire le lien avec les TextBox, ListBox, Label, ...... de ta Form.

Tu peux faire des boucles , et remplacer le N° de ligne par une variable, de manière à incrémenter automatiquement tes lignes, et stocker plusieurs personnes, (comme un agenda par exemple).

PS: Si tu ouvres avec WordPad ou Notepad, Etc.. ce fichier, il sera bizarre à l'écran, ne le modifie surtout pas, tu ne pourrait plus l'ouvrir avec l'instruction OPEN comme on vient de faire.

Je pense que tu va trouver ton bonheur !!!!
Si t'as d'autres Pb .... ..Demande... ... si je peux, je t'aiderai !!!

PS2: Je ne peux consulter ce site que les Mercredis......

Tiens moi au courant !!!! Salut !!!!
0
EREF Messages postés 31 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 24 février 2006
15 juin 2005 à 21:58
Gros PS3 ......
Pour ton Pb, et avec ma méthode ( mode DIRECT), tu interroges la 1ère ligne Ex:

DIM PREM as String
DIM ENR as String
Nom=MID((Nom+"<20 espaces>),1,20)
Prénom=MID((Prénom+"<20 espaces>),1,20)
Age=MID((Age+"<3 espaces>),1,3)
Téléphone=MID((Téléphone+"<14 espaces>),1,14)
ENR=Nom+Prénom+Age+Téléphone

OPEN <Ch.directeur du fichier à lire> FOR RANDOM AS #1
GET #1,1,PREM
If PREM="" Then PUT #1,1,ENR
CLOSE #1

Je pense que çà devrait marcher ...... Encore Salut !!!!
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
16 juin 2005 à 00:02
Dim Nomfichier As String

Dim Buffer As String

Dim chaine As String



chaine = "nom;prenom;telephone;age" & vbCrLf



Nomfichier = "c:\nomdufichier.txt"

Open Nomfichier For Binary As #1

Buffer = Space$(LOF(1))

Get #1, 1, Buffer

If Left$(Buffer, Len(chaine)) <> chaine Then

Put #1, 1, chaine

Put #1, , Buffer

End If

Close #1


Daniel
0
Rejoignez-nous