Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et 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.

Réponse
 
Outils de la discussion
Vieux 28/11/2008, 12h17   #1 (permalink)
Membre régulier
 
Date d'inscription: juin 2004
Âge: 26
Messages: 120
Par défaut utilisation du sql et affichage des résultats dans un formulaire

Bonjour,

Voila je vous expose mon probleme
En fait j'aimerais que dans un formulaire, lorsque je rentre une certaine valeur dans un champs, que l'on ai tous les enregistrements concernés par cette valeur qui apparaissent.
Le truc c'est que je tombe sur l'erreur suivante:"objet non trouvé dans la collection"
voici mon code
Code :
 
Private Sub Modifiable19_AfterUpdate()
Dim rs As DAO.Recordset
Dim sql As String
 
sql = "select * from Commandes where [date de livraison]=" & Me.Modifiable19
Set rs = CurrentDb.OpenRecordset(sql)
 
 Me.Numero_commande.Value = rs.Fields(Numero_commande)
 Me.date_commande = rs.Fields(date_commande)
 Me.date_de_livraison = rs.Fields(date_de_livraison)
 Me.Etat = rs.Fields(Etat)
 
End Sub
 
__________________
Amicalement Scons
scons est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 28/11/2008, 12h22   #2 (permalink)
Expert Confirmé Sénior
 
Avatar de jpcheck
 
Date d'inscription: juillet 2007
Localisation: RP
Âge: 24
Messages: 2 951
Envoyer un message via MSN à jpcheck
Par défaut

salut,
à moins que toutes les variables existent, il faut que tu les transformes en chaines de caractère :

Code :
 Me.Numero_commande.Value = rs.Fields("Numero_commande")
 Me.date_commande = rs.Fields("date_commande")
 Me.date_de_livraison = rs.Fields("date_de_livraison")
 Me.Etat = rs.Fields("Etat")
__________________
Piou-Piou
Poussin Developpeur

Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 28/11/2008, 15h17   #3 (permalink)
Membre régulier
 
Date d'inscription: juin 2004
Âge: 26
Messages: 120
Par défaut

Merci jpcheck.
Et ben je me sent bete d'avoir pas vu que j'vais pas mit les guillemets, d'autant plus que j'utilise cette syntaxe dans d'autres applications.
Je te remercie de m'avoir eclairé l'esprit.

Cependant je bute sur un autre probleme.
"impossbile d'attribuer une valeur a cette objet"

en fait je cherche a afficher les resultat de la requete dans un formulaire.
peut etre que je ne procede pas comme il faut.
__________________
Amicalement Scons
scons est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/12/2008, 09h16   #4 (permalink)
Membre régulier
 
Date d'inscription: juin 2004
Âge: 26
Messages: 120
Par défaut

quel element de formulaire faut il utiliser pour afficher tous les resultats de ma requete sql.
En fait dans l'etat actuel du formulaire je dispose d'une section details possedant chacun des champs de ma table "commande" (ce ne sont pas des champs indepedants.
C'est d'ailleurs probablement la raison pour laquelle je ne peut pas attribuer de valeur a ces objets.

voila si quelqu'un pouvait me donner un ou deux elements de reponses.
au besoin je peut poster des screenshots de mon formulaire.

Voila merci
__________________
Amicalement Scons
scons est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/12/2008, 13h12   #5 (permalink)
Rédacteur/Modérateur
 
Avatar de Pierre Fauconnier
 
Date d'inscription: novembre 2003
Localisation: Theux (Belgique)
Âge: 42
Messages: 3 299
Envoyer un message via Skype™ à Pierre Fauconnier
Par défaut

Bonjour

Tu n'as pas besoin de DAO

Lorsque tu as composé ta requête dans la chaine SQL, tu passes celle-ci en propriété RecordSource de ton formulaire

Code :
Private Sub Modifiable19_AfterUpdate()
    Dim SQL As String
    
    SQL = "select * from commandes where [date de livraison] = #" & CDate(Modifiable19) & "#"
    Me.RecordSource = SQL
End Sub
 
__________________
Pierre Fauconnier
--------------------
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
Pensez au tag

Mon blog sur DVP - Mes petits papiers sur DVP - Nouveau: Groupe des formateurs - Nouveau: Groupes développeurs QSEA
Je ne peux en aucun cas être tenu pour responsable des conséquences de l'utilisation des codes que je fournis dans le cadre des réponses apportées sur les forums, même s'il s'avérait que ces codes sont erronés ou amènent à des dysfonctionnements, de manière manifeste ou non.
Pierre Fauconnier est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 03/12/2008, 09h07   #6 (permalink)
Membre régulier
 
Date d'inscription: juin 2004
Âge: 26
Messages: 120
Par défaut

Pierre ta solution fonctionne cependant cen'est pas ce que je veu faire.
S i je vais selon ta methode a cahque ouverture du formulaire je tombe sur une boite de dialogue me demandant la valeur de mon parametre "modifiable19"
Si je le rentre j'ai effectivement la liste des commandes, selon ce critere, qui apparait.

Moi j'aimerais en fait que mon formulaire s'ouvre et m'affiche toutes les commandes de ma base (Pour ça je n'ai pas de prob)
Une foi mon formulaire ouvert je voudrais faire une selection des commandes suivant la valeur entrée dans la zone de texte "modifiable 19"
Mais la j'ai quelques souci.

j'ai essayé d'integrer une procedure evenementielle qui lance ma requete de selection quand j'appuis sur un bouton.
En fait lorsque que je clique sur ce bouton je passe ma requete de selection en parametre du Recordsource de mon formulaire.
Cependant rien ne s'affiche.
Ma liste avec toutes mes commandes disparait et mon champs "modifiable19" se remet a blanc.
__________________
Amicalement Scons

Dernière modification par Gabout ; 03/12/2008 à 18h31
scons est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 04/12/2008, 14h08   #7 (permalink)
Membre régulier
 
Date d'inscription: juin 2004
Âge: 26
Messages: 120
Par défaut

J'ai regardé sur differents forums que j'ai pu trouvé et apparement ma methode de modifier le "recordsource" d'un formulaire via un bouton serait correcte.
Cependant ça ne fonctionne pas chez moi.
peut etre s'agit'il d'une erreur de syntaxe dans la requete.
la voici
Code :
 
Private Sub Commande39_Click()
 
[Form_rappel des commandes].RecordSource = "SELECT Commandes.*, magasins.* FROM magasins LEFT JOIN Commandes ON magasins.[Code magasin] = Commandes.[code magasins] WHERE Commandes.[date de livraison] = " & Me.Modifiable19
[Form_rappel des commandes].Refresh
 
 
End Sub
 
pour moi ça me parait correcte mais bon un oeil avec plus de recul trouvera peut etre une erreur
__________________
Amicalement Scons
scons est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 04/12/2008, 14h46   #8 (permalink)
Membre régulier
 
Date d'inscription: juin 2004
Âge: 26
Messages: 120
Par défaut

bon je viens de trouver d'ou vient l'erreur.
En fait l'erreur porte sur le fait que "modifiable19" est une date.
Si je fais la meme requete mais avec un autre champs de type numerique (par exemple) ca fonctionne.
Donc la syntaxe pour une requete avec une date comme variable doit etre sensiblement differente. faut il mettre quelques choses d'autres que le "&" devant "modifiable19"
__________________
Amicalement Scons
scons est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 04/12/2008, 15h10   #9 (permalink)
Rédacteur/Modérateur
 
Avatar de Pierre Fauconnier
 
Date d'inscription: novembre 2003
Localisation: Theux (Belgique)
Âge: 42
Messages: 3 299
Envoyer un message via Skype™ à Pierre Fauconnier
Par défaut

Dans mon exemple, je mentionnais un signe # qui permet d'encadrer une date...

Cela étant, les dates posent problème dans la mesure ou elles sont parfois interprétées "à l'envers" (jj/mm/aa => mm/jj/aa). Donc je préfère en général convertir en long, et à ce moment, il n'y a plus de problème d'inversion.
__________________
Pierre Fauconnier
--------------------
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
Pensez au tag

Mon blog sur DVP - Mes petits papiers sur DVP - Nouveau: Groupe des formateurs - Nouveau: Groupes développeurs QSEA
Je ne peux en aucun cas être tenu pour responsable des conséquences de l'utilisation des codes que je fournis dans le cadre des réponses apportées sur les forums, même s'il s'avérait que ces codes sont erronés ou amènent à des dysfonctionnements, de manière manifeste ou non.
Pierre Fauconnier est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 04/12/2008, 15h22   #10 (permalink)
Membre régulier
 
Date d'inscription: juin 2004
Âge: 26
Messages: 120
Par défaut

Merci Pierre
En fait j'avais pas tilté que tu avais changé la syntaxe pour englober une date.
J'ai donc utilisé cette syntaxe et la plus de probleme j'arrive enfin au resultat souhaité.
Un grand merci a toi.
__________________
Amicalement Scons
scons est déconnecté   Envoyer un message privé Réponse avec citation
NEWS ACCESSF.A.Q AccessF.A.Q VBATutorielsSourcesOutilsLivresAccess TVAccess 2007

Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Access > VBA Access



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide