Probleme sur VB
Résolu
haddadmarc
Messages postés
59
Date d'inscription
Statut
Membre
Dernière intervention
-
haddadmarc Messages postés 59 Date d'inscription Statut Membre Dernière intervention -
haddadmarc Messages postés 59 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je suis debutant en programmation sur Visual Basic et j'ai des problemes avec quelques boutons comme supprimer et suivant dont voici les codes:
SUPPRIMER
Dim rep As String * 1
rep = InputBox("voulez vous vraiment supprimer o/n")
If UCase(rep) = "n" Then Exit Sub
Else
i = 1
j = 1
Open "D:\VB HADDAD\voitures1.txt" For Random Access Read Write As #166 Len = Len(vt)
Do While i < LOF(165) / Len(et)
Get #165, i, vt
If Trim(vt.mat) <> Trim(mat) Then
Put #166, j, vt
j = j + 1
End If
i = i + 1
Loop
Close
Kill "D:\VB HADDAD\voitures.txt"
Name "D:\VB HADDAD\voitures1.txt" As "D:\VB HADDAD\voitures.txt"
Open "D:\VB HADDAD\voitures.txt" For Random Access Read Write As #165 Len = Len(vt)
Unload Me
Form1.Show
i = 1
Get #165, i, vt
vt.mat = mat
vt.model = model
vt.typ = typ
vt.coul = coul
vt.pr = pr
vt.nbre = nbre
End If
SUIVANT
i = Loc(165)
If i = 1 Then
MsgBox "c'est deja le dernier"
Else
Get #165, i + 1, vt
mat = vt.mat
model = vt.model
typ = vt.typ
coul = vt.coul
pr = vt.pr
nbre = vt.nbre
End If
j'espere que vous pourrez m'aider parce que ca fait maintenat 2 semaines que ces boutons me bloque
merci pour votre aide
je suis debutant en programmation sur Visual Basic et j'ai des problemes avec quelques boutons comme supprimer et suivant dont voici les codes:
SUPPRIMER
Dim rep As String * 1
rep = InputBox("voulez vous vraiment supprimer o/n")
If UCase(rep) = "n" Then Exit Sub
Else
i = 1
j = 1
Open "D:\VB HADDAD\voitures1.txt" For Random Access Read Write As #166 Len = Len(vt)
Do While i < LOF(165) / Len(et)
Get #165, i, vt
If Trim(vt.mat) <> Trim(mat) Then
Put #166, j, vt
j = j + 1
End If
i = i + 1
Loop
Close
Kill "D:\VB HADDAD\voitures.txt"
Name "D:\VB HADDAD\voitures1.txt" As "D:\VB HADDAD\voitures.txt"
Open "D:\VB HADDAD\voitures.txt" For Random Access Read Write As #165 Len = Len(vt)
Unload Me
Form1.Show
i = 1
Get #165, i, vt
vt.mat = mat
vt.model = model
vt.typ = typ
vt.coul = coul
vt.pr = pr
vt.nbre = nbre
End If
SUIVANT
i = Loc(165)
If i = 1 Then
MsgBox "c'est deja le dernier"
Else
Get #165, i + 1, vt
mat = vt.mat
model = vt.model
typ = vt.typ
coul = vt.coul
pr = vt.pr
nbre = vt.nbre
End If
j'espere que vous pourrez m'aider parce que ca fait maintenat 2 semaines que ces boutons me bloque
merci pour votre aide
A voir également:
- Probleme sur VB
- Vb - Télécharger - Langages
- Vb cable - Télécharger - Audio & Musique
- Vb editor - Télécharger - Langages
- Vb runtime - Télécharger - Divers Utilitaires
- Vb express - Télécharger - Langages
4 réponses
bonjour,
Qu'est ce que tu n'arrive pas à faire?
J'ai regardé ton code.
A la place de ImputBox, j'aurais utilisé MsgBox en tant que fonction
ret = MsgBox("voulez vous vraiment supprimer", vbInformation + vbYesNo, "Suppression")
If ret = vbNo Then Exit Sub
A chaque suppression, tu réécrit complètement le fichier, c'est assez lourd.
A ta place, j'aurais réservé une variable Status as Boolean dans le Record vt. A chaque suppression, il suffit de mettre Status = False et mettre à jour l'enregistrement.
A chaque nouvelle création, on récupère une place libre s'il y en a. Un seul fichier suffit, plus de Kill ni de Name.
Mais à part ces différence de méthodes, ton code à l'air de tenir. Alors qu'est ce qui ne marche pas?
A+.
Qu'est ce que tu n'arrive pas à faire?
J'ai regardé ton code.
A la place de ImputBox, j'aurais utilisé MsgBox en tant que fonction
ret = MsgBox("voulez vous vraiment supprimer", vbInformation + vbYesNo, "Suppression")
If ret = vbNo Then Exit Sub
A chaque suppression, tu réécrit complètement le fichier, c'est assez lourd.
A ta place, j'aurais réservé une variable Status as Boolean dans le Record vt. A chaque suppression, il suffit de mettre Status = False et mettre à jour l'enregistrement.
A chaque nouvelle création, on récupère une place libre s'il y en a. Un seul fichier suffit, plus de Kill ni de Name.
Mais à part ces différence de méthodes, ton code à l'air de tenir. Alors qu'est ce qui ne marche pas?
A+.
OK,
La première erreur est là:
If UCase(rep) = "n" Then Exit Sub
Else ' <----Supprime cette ligne
i = 1
j = 1
'
'
'
vt.nbre = nbre
End If ' <----Supprime cette ligne
Ou alors il faut mettre
If UCase(rep) = "n" Then
Exit Sub
Else
'
'
'
vt.nbre = nbre
End If
Pour la seconde erreur i = Loc(165) tedonne la position corante dans le fichier
pour te positionner dans le fichier, il faut donner une valeur à i
pour le suivant:
i=i+1
Get #165, i + 1, vt
Il faut juste verifier que i >0 et i <=LOF(165)/Len(vt)
Pour le suivant:
if i = LOF(165)/Len(vt) then exit sub
i=i+1
End If ' <----Supprime cette ligne
Ou alors il faut mettre
If UCase(rep) = "n" Then
Exit Sub
Else
'
'
'
vt.nbre = nbre
End If
Pour la seconde erreur i = Loc(165) te donne la position courante dans le fichier
pour te positionner dans le fichier, il faut donner une valeur à i
pour le suivant:
i=Loc(165)
if i = LOF(165)/Len(vt) then exit sub
i=i+1
Get #165, i + 1, vt
pour le prédedent
i=Loc(165)
if i=1 then exit sub
i=i-1
Get #165, i + 1, vt
A+.
La première erreur est là:
If UCase(rep) = "n" Then Exit Sub
Else ' <----Supprime cette ligne
i = 1
j = 1
'
'
'
vt.nbre = nbre
End If ' <----Supprime cette ligne
Ou alors il faut mettre
If UCase(rep) = "n" Then
Exit Sub
Else
'
'
'
vt.nbre = nbre
End If
Pour la seconde erreur i = Loc(165) tedonne la position corante dans le fichier
pour te positionner dans le fichier, il faut donner une valeur à i
pour le suivant:
i=i+1
Get #165, i + 1, vt
Il faut juste verifier que i >0 et i <=LOF(165)/Len(vt)
Pour le suivant:
if i = LOF(165)/Len(vt) then exit sub
i=i+1
End If ' <----Supprime cette ligne
Ou alors il faut mettre
If UCase(rep) = "n" Then
Exit Sub
Else
'
'
'
vt.nbre = nbre
End If
Pour la seconde erreur i = Loc(165) te donne la position courante dans le fichier
pour te positionner dans le fichier, il faut donner une valeur à i
pour le suivant:
i=Loc(165)
if i = LOF(165)/Len(vt) then exit sub
i=i+1
Get #165, i + 1, vt
pour le prédedent
i=Loc(165)
if i=1 then exit sub
i=i-1
Get #165, i + 1, vt
A+.
Je crois qu'il y a eu un cafouillage dans les copie/colle du précédent post , j'espère que t'a réussi à décoder.
A+.
A+.
le probleme c'est que quand je lance l'application tout marche mais quand je veux supprimer un enregidtrement je click sur supprimer on me met: Erreur de Compilation; Else sans If
je ne comprend pas
et pou le bouton suivant quand je suis sur le premier enregistrement que je click sur suivant on me met le message que contient mon msgbox pourtant ya plusieurs enregistrement.
excusez si je vous fatigue
merci d'avance