Vb access

Résolu
cs_samanta26 Messages postés 22 Date d'inscription dimanche 14 novembre 2010 Statut Membre Dernière intervention 26 février 2012 - 12 févr. 2011 à 12:50
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 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

7 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
12 févr. 2011 à 15:50
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)
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
13 févr. 2011 à 04:09
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 ..."
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
12 févr. 2011 à 15:52
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é.
0
cs_samanta26 Messages postés 22 Date d'inscription dimanche 14 novembre 2010 Statut Membre Dernière intervention 26 février 2012
12 févr. 2011 à 19:30
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!!
0

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

Posez votre question
cs_samanta26 Messages postés 22 Date d'inscription dimanche 14 novembre 2010 Statut Membre Dernière intervention 26 février 2012
14 févr. 2011 à 14:36
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!!!!!
0
Manou417 Messages postés 4 Date d'inscription lundi 13 février 2012 Statut Membre Dernière intervention 13 février 2012
11 févr. 2012 à 14:08
salut svp c possible de me donner une idée comment je peut utiliser le langage VB ET MERCI
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
11 févr. 2012 à 16:01
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
0
Rejoignez-nous