Vb access [Résolu]

cs_samanta26 22 Messages postés dimanche 14 novembre 2010Date d'inscription 26 février 2012 Dernière intervention - 12 févr. 2011 à 12:50 - Dernière réponse : ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention
- 11 févr. 2012 à 16:01
bonjour!! j'ai besoin de l'aide slp!!!
j'ai un projet 'gestion de transport' du visual basic, je travaille aussi avec access.
j'ai une form qui s'appelle consultation ville qui permet d'ajouter et de supprimer des villes. Concernant la suppression de la ville, il faut afficher le code de la ville par un combobox dans des zones de texte et après les supprimer sauf que je parviens pas à les afficher...et il me sort une erreur d'exécution 3021 BOF ou EOF est egal à true ou l'enregistrement actuel a été supprimé. L'opération demandé necessite un enregistrement actuel...au niveau de text3.text...voila le code que j'ai programmé


Dim rs1_vil As ADODB.Recordset

Private Sub Combo1_Click()
x = Trim(Combo1.Text)
rs_vil.MoveFirst
rs_vil.Find "codevil='''&x&'''"
Text3.Text = rs_vil!codevil
Text4.Text = rs_vil!nomvil
Set rs1_vil = New ADODB.Recordset
rs1_vil.Open "select all * from ville where ville!codevil='''&x&'''", ct, adOpenDynamic, adLockBatOptimistic

End Sub
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 12 févr. 2011 à 15:50
3
Merci
Salut

Syntaxe bizarre ici
rs_vil.Find "codevil='''&x&'''"
et là
where ville!codevil='''&x&'''"

Si tu dois insérer une variable chaine dans une autre chaine, il faut :
- refermer la chaine,
- utiliser & comme tu l'as fait, mais en ajoutant un espace devant et derrière le symbole,
- réouvrir la chaine pour y inscrire la suite
Exemple
sMot = "Samanta"
MsgBox "Bonjour " & sMot & ". Comment vas-tu ?"

Pourquoi se déferlement de symbole ' ?
Un seul suffit.
Les ' sont utilisés comme séparateur de chaine dans une syntaxe SQL, mais là, tu prépares une chaine VB à donner à manger à SQL : Il faut donc dissocier les langages.
En supposant que x vaille "45000", tu veux que ta chaine ressemble à ceci :
codevil = '45000'
Donc, il faut écrire
"codevil = '" & x & "'"

Je te laisse corriger la seconde syntaxe en conséquence.

De plus, après un Find, je te conseille de vérifier qu'il a bien fourni un résultat avant de vouloir les lire, sinon, tu auras l'erreur dont tu parles dans ta question --> C'est expliqué dans l'aide :
Si la recherche n'a pas trouvé de résultat, le RecordSet se positionnera après le dernier enregistrement, c'est à dire sur rien :
If rs.EOF Then MsgBox "Pas trouvé"

Dernière chose :
Select all * ... n'est pas une syntaxe valide
Select * ... suffit

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)

Merci cs_Jack 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de cs_Jack
Meilleure réponse
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 13 févr. 2011 à 04:09
3
Merci
De toute façon, ta méthode n'est pas la bonne :
En faisant un .Delete sur ton RecordSet, tu vas supprimer l'enregistrement, mais pas dans la base, uniquement dans l'image qu'est le RecordSet.
Il faut utiliser une commande directe sur la table :
Syntaxe à revérifier :
ct.Execute "Delete from ville where ..."

Merci cs_Jack 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de cs_Jack
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 12 févr. 2011 à 15:52
0
Merci
Et bah non, c'était pas la dernière chose, lol.
Pour t'aider dans la recherche de problème dans ton code, utilise le mode débogage :
- F9 sur une ligne de code
Le programme s'y arrêtera au prochain passage
Survole avec la souris tes variables pour visualiser leur contenu, ou va dans la fenêtre de debogage (Ctrl-G) et tape
? maVariable
pour qu'elle s'inscrive dans la fenêtre.
- F8 (VB6) ou F10 (.Net) pour avancer d'une ligne de code
- F5 pour continuer normalement

Tu verras ainsi comment évolue le contenu de tes variables et si chaque instruction donne bien le résultat escompté.
Commenter la réponse de cs_Jack
cs_samanta26 22 Messages postés dimanche 14 novembre 2010Date d'inscription 26 février 2012 Dernière intervention - 12 févr. 2011 à 19:30
0
Merci
bonsoir Mr Jack!!!
je voulais te remercier tt d'abord pour votre aide, j'ai corrigé "codevil = '" & x & "'" et ça marche maintenant mais j'ai un autre pb au niveau de la commande supprimer, comme j'ai dis tt à l'heure il faut que je supprime de la table ville tt les attributs concernant le code choisi avec le combobox, voila le code j'ai programmé:

Dim rs1_vil As ADODB.Recordset
Private Sub Command2_Click()
rep = MsgBox("Etes vous sûr de vouloir supprimer cette ville", vbYesNo)
If rep = vbNo Then
MsgBox ("suppression abondonnée!")
Combo1.SetFocus
Else
rs_vil.MoveFirst
x = Trim(Combo1.Text)
Set rs1_vil = New ADODB.Recordset
rs1_vil.Open "select * from ville where ville!codevil = '" & x & "'", ct, adOpenDynamic, adLockOptimistic
rs_vil.Delete
MsgBox ("ville supprimée!")
Unload Me
Me.Show
End If
End Sub

mais lorsque je compile il me sort un msg d'erreur "impossible de supprimer ou de modifier l'enregistrement car la table 'vente' comprend des enregistrements connexes.
pouvez-vous me montrer ou est ce que j'ai commis l'erreur!!!
merci d'avantage!!
Commenter la réponse de cs_samanta26
cs_samanta26 22 Messages postés dimanche 14 novembre 2010Date d'inscription 26 février 2012 Dernière intervention - 14 févr. 2011 à 14:36
0
Merci
bonsoir Mr Jack!!! merci beaucoup ça marche maintenant mais il y'a deux erreurs la 1ère c'est lorsqu'il supprime un enregistrement de la base de donnés il le remplace avec des (#supprimé#) plus un débogage au niveau du chargement du combo (Combo1.AddItem rs_vil!codevil)avec un message d'erreur "l'enregistrement a été supprimé" et je parviens pas vraiment à détecter l'anomalie!!!!!
Commenter la réponse de cs_samanta26
Manou417 4 Messages postés lundi 13 février 2012Date d'inscription 13 février 2012 Dernière intervention - 11 févr. 2012 à 14:08
0
Merci
salut svp c possible de me donner une idée comment je peut utiliser le langage VB ET MERCI
Commenter la réponse de Manou417
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 11 févr. 2012 à 16:01
0
Merci
Une idée ?
J'en ai au moins 3 (les deux premières étant indispensables avant de passer à la troisième)
- installer VB
- apprendre VB
- développer sous VB



____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.