Manipuler les fichiers a acces direct

[Résolu]
Signaler
Messages postés
15
Date d'inscription
mercredi 28 décembre 2005
Statut
Membre
Dernière intervention
9 août 2008
-
Messages postés
15
Date d'inscription
mercredi 28 décembre 2005
Statut
Membre
Dernière intervention
9 août 2008
-
salut


j'essaye de faire un petit programme ,auquelle on peut ajouter des informations et aussi faire des recherches parmi ces informations en utilisant un fichier a acces direct. je suppose que c'est faisable,la le probleme c'est que mon code ne marche pas tres bien ,car je sais pas comment dire au programme de chercher du debut du fichier jusqu'a la fin.pour ajouter ca a l'air de se faire sans probleme,mais c'est plus dans la recherche que j'ai de la misere


moi ce que j'ai utilisé c'est


do until eof(2)


if text1.text = carnet.nom then
get#2,i,carnet
msgbox carnet.telephone
msgbox carnet.adresse
msgbox carnet.mail
else
msgbox "ce nom n'existe pas"
loop

en sachant que le fichier est ouvert a l'execution du programme,et que i est une variable de type integer qui represente la position du fichier.
j'ai associer au bouton "ajouter" i = i+ 1

donc voila c'est a peu pret ca les données .
si quelqu'un a une idée comment faire,ou ce qui cloche dans ce programme ,se serait bien sympatique.

merci d'avance

7 réponses

Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
29
ta zone emp.nom fait 25 caractères,

et dans ta TexBox il n'y a pas le même nombre,

donc forcémént tu n'auras jamais l'égalité:

If Text5.Text = RTrim$(emp.nom) Then ...





d'autre part si ton fichier est déjà ouvert, faut redémarrer au premier enregistrement,

donc il faut au moins un Get#2,1, emp ou un Seek #2, 1





ce qui donne:

Dim Trouve As Boolean

Seek #2, 1

Do Until EOF(2)

Get #2, , emp

If Text5.Text = RTrim$(emp.nom) Then

MsgBox emp.nom

MsgBox emp.prenom

MsgBox emp.fonction

MsgBox emp.salaire

Trouve = True

Exit Do

End If

Loop

If Trouve = False Then

MsgBox "ce nom n'existe pas "

End If


Daniel
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 70 internautes nous ont dit merci ce mois-ci

Messages postés
15
Date d'inscription
mercredi 28 décembre 2005
Statut
Membre
Dernière intervention
9 août 2008

voici mon programme complet,ca tourne en boucle et ne trouve jamais de nom.

Private Type employé
nom As String * 25
prenom As String * 20
fonction As String * 19
salaire As String * 14
End Type
Dim emp As employé
Dim i As Integer


Private Sub cmdajouter_Click()
i = i + 1
emp.nom = Text1.Text
emp.prenom = Text2.Text
emp.fonction = Text3.Text
emp.salaire = Text4.Text
Put #2, i, emp
MsgBox " profil ajouté avec succes"
End Sub


Private Sub cmdnouveau_Click()
Text1 = ""
Text2 = ""
Text3 = ""
Text4 = ""
Text1.SetFocus
End Sub


Private Sub cmdquitter_Click()
End
End Sub


Private Sub cmdrecherche_Click()
Do Until EOF(2)
If emp.nom = Text5.Text Then
Get #2, i, emp
MsgBox emp.nom
MsgBox emp.prenom
MsgBox emp.fonction
MsgBox emp.salaire
Else
MsgBox "ce nom n'existe pas "
End If
Loop
End Sub


Private Sub Form_Load()


Open "d:\ig1gb\projet1.dat " For Random As 2 Len = Len(emp)


End Sub
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
29
Salut et Bonne nuit.

i représente le numéro d'enregistrement et non pas la position dans le fichier.

dans ton exemple "i" ne s'incréménte pas.

ne rien mettre c'est aller en séquence.





Dim Trouve As Boolean

Do Until EOF(2)

Get #2, , emp

If emp.nom = Text5.Text Then

MsgBox emp.nom

MsgBox emp.prenom

MsgBox emp.fonction

MsgBox emp.salaire

Trouve = True

Exit Do

End If

Loop

If Trouve = False Then

MsgBox "ce nom n'existe pas "

End If


Daniel
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
125
Au lieu d'utiliser un fichier à accès direct, utilise un base de données : bien plus simple à utiliser, bien plus rapide, et surtout, bien plus sûre !

_
Avant de poster dans le forum,
prière d'aller lire ceci :
http://www.codes-sources.com/reglement.aspx
<s></s>
Messages postés
15
Date d'inscription
mercredi 28 décembre 2005
Statut
Membre
Dernière intervention
9 août 2008

salut


je savais pas que i etait uniltile,en fait si j'utilise pas une base de donnée c'est parceque je suis pas encore rendu la. Mais bientot j'espere commencer a en utiliser.


sinon merci pour votre aide je teste et vous redonne des nouvelles.
Messages postés
15
Date d'inscription
mercredi 28 décembre 2005
Statut
Membre
Dernière intervention
9 août 2008

apres le test ,ca ne tourne plus en boucle ,mais neamoins dans la recherche ca ne trouve jamais personne meme des noms que je viens de rentrer.
voila....
merci comme meme
Messages postés
15
Date d'inscription
mercredi 28 décembre 2005
Statut
Membre
Dernière intervention
9 août 2008

vraiment un grand merci.

ca fonctionne enfin ,j'avais essayé toute sorte de possibilité, mais j'avais pas pensé que la zone de texte pas assez grande pouvait causait probleme.

merci encore ...