Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
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 21/02/2011, 15h18   #1
 
Inscription : août 2010
Messages : 6
Détails du profil
Informations forums :
Inscription : août 2010
Messages : 6
Points : -3
Points : -3
Par défaut recordset sous-formulaire access

bonjour,

dans un formulaire, j'ai une liste déroulante qui me propose deux valeurs : "forfait" et "coefficient".

dans le cas où la valeur coefficient est selectionné, mon sous-formulaire s'alimente à partir d'une requête qui lui est attribuée.

Dans le cas où c'est "forfait" qui est selectionné je ne souhaiterais affiché que quelques éléments dans ce même sous-formulaire. J'utilise donc le code suivant mais j'obtiens une erreur qui me précise qu'un opérateur est absent. Je pense qu'il s'agit d'un petit problème de syntaxe mais je n'arrive pas a trouver :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
Private Sub cbo_chantiers_AfterUpdate()
 
 If Me.cbo_choix = "forfait" Then
 strNewRecord = "select * from parametrage coeff" _
  & " WHERE paramètre de paye.[reference chantier] = '" & Me.cbo_chantiers.Value & "'" _
  & "AND paye.[libellé] =  ' Hrs normales'" _
  & "AND paye.[libellé] = 'Hrs Sup T1'" _
  & "AND paye.[libellé] = 'Hrs Sup T2'" _
   & "AND paye.[libellé] = 'Hrs Sup T3'"
   Me.SF_coeff.Form.RecordSource = strNewRecord
   Else
Me.SF_coeff.Requery
 End If
End Sub
Merci beaucoup pour vos lumières!

Olive
olivier41 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2011, 15h23   #2
Membre du Club
 
Inscription : août 2008
Messages : 86
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 86
Points : 43
Points : 43
Evite d'utiliser des expressions type avec des espaces... Mets le entre crochets. De plus, quel est le type de ?

Je te conseille d'éviter les espaces, et d'utiliser des underscore à la place.

Et mets ton code entre balises pour que cela soit compréhensible
Glherbier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2011, 15h49   #3
 
Inscription : août 2010
Messages : 6
Détails du profil
Informations forums :
Inscription : août 2010
Messages : 6
Points : -3
Points : -3
ok désolé pour la mise en forme!

je vais regarder du côté des espaces pour essayer de corriger tout ça!
sinon 'hrs normales' est la valeur d'un enregistrement dans le champs libellé. C'est au format texte.

merci
olivier41 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2011, 15h53   #4
 
Inscription : août 2010
Messages : 6
Détails du profil
Informations forums :
Inscription : août 2010
Messages : 6
Points : -3
Points : -3
J'ai mis paramètre de paye entre crochets mais toujours la même erreur.
Au passage, c'est la ligne de code suivante qui pose problème :

Code :
Me.SF_coeff.Form.RecordSource = strNewRecord
olivier41 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 05h00   #5
Membre Expert
 
Homme Pierre ANTOINE
Inscription : février 2008
Messages : 650
Détails du profil
Informations personnelles :
Nom : Homme Pierre ANTOINE
Âge : 43
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Secteur : Enseignement

Informations forums :
Inscription : février 2008
Messages : 650
Points : 1 302
Points : 1 302
Bonjour

Première chose : trouver la bonne syntaxe et pour cela s'aider de l'éditeur de requête d'Access.
1/ récupérer la valeur de strNewRecord (par debug.print puis stop, juste avant l'affectation de cette valeur à Me.SF_coeff.Form.RecordSource)
2/ ouvrir une requête test, en mode SQL et y coller le contenu recupéré précédemment
3/ faire des corrections (par tâtonnement parfois) pour trouver d'où vient l'erreur.

Deuxième chose :
comme dit par Glherbier, eviter les nom de contrôle/champs/objet.. avec des espaces : soit les mettre entre crochet, soit remplacer les espaces par des underscore.

dernière chose: le traitement des valeur chaîne entraîne invariablement des soucis de quotes / doubles quotes... Personnellement, les doubles quotes qui doivent apparaître en clair dans la requête, sont indiqués par leur code ascii sous la forme "chr(34)".

Ainsi la ligne

Code :
& "AND paye.[libellé] =  ' Hrs normales'"
deviendrait

Code :
& "AND paye.[libellé] = " & chr(34) & " Hrs normales" & chr(34)

A vous de trouver ce qui cloche...

Pierre
pier.antoine est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h57.


 
 
 
 
Partenaires

Hébergement Web