Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/12/2010, 12h18   #1
Invité régulier
 
Inscription : octobre 2009
Messages : 29
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 29
Points : 9
Points : 9
Par défaut Erreur d'exécution 3061

Bonjour,

Je suis entrain de créer une base de données sous access.
J'ai crée un formulaire avec une liste modifiable. Lorsque je sélectionne une valeur dans cette liste, la zone de texte "Px" reçoit automatiquement la valeur correspondante de son enregistrement.

Pour réaliser cette opération, j'ai écris ce code suivant :

- Au niveau de la déclaration générale :

Code :
1
2
3
4
Option Compare Database
Option Explicit
Dim db As Database
Dim rs As Recordset
- Code de la zone de liste modifiable (si modification) :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub Carburant_Dirty(Cancel As Integer)
Dim ch
Dim sql
ch = carburant.Text
Set db = CurrentDb
sql = "select * from carburant where [carburant]= " & ch
Set rs = CurrentDb.OpenRecordset(sql)
If rs.EOF Then
MsgBox ("Prix introuvable")
Else
rs.MoveFirst
[Px] = rs("Px")
End If
 
End Sub
Une fois j'exécute le formulaire et je clique sur la sone de liste modifiable pour sélectionner un enregistrement, le message d'erreur suivant apparaît :

Erreur d'exécution '3061'
Trop peu de paramètre. 1 attendu

Lorsque je clique su débogage, il me pointe sur la ligne suivante :
Code :
Set rs = CurrentDb.OpenRecordset(sql)

Queluqu'un pourra m'aider SVP.

Merci d'avance
sbouchaibi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 17h07   #2
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 080
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 080
Points : 11 615
Points : 11 615
Bonjour,

Requete erronée.

Code :
"select * from carburant where [carburant]= " & ch
Soit ch est vide ou de type texte, soit [carburant] n'est pas un nom de champ de la table carburant.

Nommer un champ comme sa table c'est aller au devant de problèmes. Mais bon ! Rien ne t'empêche de te compliquer la vie.

Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 17h21   #3
Invité régulier
 
Inscription : octobre 2009
Messages : 29
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 29
Points : 9
Points : 9
Je vais changer le nom du champ et je vous tiendrez au courant !
sbouchaibi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 17h31   #4
Invité régulier
 
Inscription : octobre 2009
Messages : 29
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 29
Points : 9
Points : 9
J'ai essayé de rendre ch texte et non pas numérique et j'ai changé le nom de la table :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Dim ch
Dim ch1
 
ch = Texte38
ch1 = "'" & ch & "'"
Texte36 = ch1
 
Dim sql2
 
Set db2 = CurrentDb
sql2 = "select * from T_Carburant where [Carburant]=" & ch1
Set rs2 = db2.OpenRecordset(sql2)
 
If rs2.EOF Then
    MsgBox ("Code RIB introuvable, vérifiez le Bénéficiare ! !")
Else
    rs2.MoveFirst
    Px = rs2("Px")
    '[lieu] = rs2("lieupaiement")
End If

Ca marche toujours pas

Même problème !
sbouchaibi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2010, 09h25   #5
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 080
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 080
Points : 11 615
Points : 11 615
Que vaut ch1 ?
Que vaut Sql2 une fois qu'elle est composée ?

Il y a un tuto pour apprendre à debogger de requete sous VBA. C'est dans tutoriels.
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2010, 10h39   #6
Invité régulier
 
Inscription : octobre 2009
Messages : 29
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 29
Points : 9
Points : 9
Bonjour,

J'ai cherché la valeur de sql2, une fois exécuter.

Alors, si je mis texte36 = sql2, la zone de texte texte36 sort ce résultat :

Code :
select * from T_Carburant where [Carburant]='Essence'
sbouchaibi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2010, 12h06   #7
Invité régulier
 
Inscription : octobre 2009
Messages : 29
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 29
Points : 9
Points : 9
Bon, j'ai rien compris. j'ai crée une nouvelle BD et j'ai importé les tables vers cette nouvelle BD et oups ca marche.

Merci pour votre conseil et à la prochaine.

bye
sbouchaibi est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h54.


 
 
 
 
Partenaires

Hébergement Web