Manipuler les fichiers a acces direct

Résolu
ragui Messages postés 15 Date d'inscription mercredi 28 décembre 2005 Statut Membre Dernière intervention 9 août 2008 - 9 avril 2006 à 03:50
ragui Messages postés 15 Date d'inscription mercredi 28 décembre 2005 Statut Membre Dernière intervention 9 août 2008 - 9 avril 2006 à 19:08
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

Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
9 avril 2006 à 14:42
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
ragui Messages postés 15 Date d'inscription mercredi 28 décembre 2005 Statut Membre Dernière intervention 9 août 2008
9 avril 2006 à 04:06
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
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
9 avril 2006 à 04:38
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
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
9 avril 2006 à 07:49
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>
0

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

Posez votre question
ragui Messages postés 15 Date d'inscription mercredi 28 décembre 2005 Statut Membre Dernière intervention 9 août 2008
9 avril 2006 à 13:33
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.
0
ragui Messages postés 15 Date d'inscription mercredi 28 décembre 2005 Statut Membre Dernière intervention 9 août 2008
9 avril 2006 à 13:38
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
0
ragui Messages postés 15 Date d'inscription mercredi 28 décembre 2005 Statut Membre Dernière intervention 9 août 2008
9 avril 2006 à 19:08
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 ...
0
Rejoignez-nous