Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access
Access Forum d'entraide sur Microsoft Access. Avant de poster -> La F.A.Q Access
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, 23h09   #1
Candidat au titre de Membre du Club
 
Inscription : janvier 2008
Messages : 36
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : janvier 2008
Messages : 36
Points : 11
Points : 11
Par défaut DAO et requête sur Date

Je suis navré bien que j'ai lu les différents tutoriels je n'arrive pas à résoudre mon pb :

j'ai ctrl dans un formulaire que j'ai nommé dans mon formulaire je saisie comme valeur pour ce contrôle "22/02/2011"
ensuite j'ai écris ce code :

Code :
1
2
3
rst1 = "SELECT TR_Ereception.num_recep, TR_Ereception.date_recep FROM TR_Ereception WHERE (((TR_Ereception.date_recep)=" & Me.Ctrl_newdate & "));"
Set rs1 = CurrentDb.OpenRecordset(rst1)
MsgBox "le résultat de la requête rs1 =  " & rs1.Fields(0).Value
Mais mon code me retourne aucun enregistrement alors que réellement dans ma table j'ai au moins un enregistrement avec cette valeur.
J'ai pensé que mon souci provenait du format de date alors J'ai essayé de faire
Code :
1
2
Dim dt As Date
    dt = Format(Me.Ctrl_newdate, "mm/jj/aaa")
et de remplacer Me.ctrl_newdate par dt dans ma requête. Mais comme retour j'ai un message "incompatibilité de type".
Quelqu'un peut-il m'orienter ?
Merci d'avance
Max_zen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2011, 23h42   #2
Provisoirement toléré
 
Inscription : janvier 2007
Messages : 64
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 64
Points : 20
Points : 20
bonjour,

dans ce code :

Code :
1
2
Dim dt As Date
    dt = Format(Me.Ctrl_newdate, "mm/jj/aaa")
je pense que tu devrais rajouter un "a" pour l'année. Tu as écris "mm/jj/aaa" au lieu de "mm/jj/aaaa" :

Code :
1
2
Dim dt As Date
    dt = Format(Me.Ctrl_newdate, "mm/jj/aaaa")
Julien42 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 22/02/2011, 00h42   #3
Candidat au titre de Membre du Club
 
Inscription : janvier 2008
Messages : 36
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : janvier 2008
Messages : 36
Points : 11
Points : 11
En fait c'était une erreur dans la saisie de mon post
j'avais bien écrit "aaaa" dans mon code.

Mais je te remercie quand même
Max_zen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 04h49   #4
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 609
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 609
Points : 30 959
Points : 30 959
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Tu dis que ton code ne retourne aucun enregistrement, mais as-tu un message d'erreur ?

En effet, si ton champ TR_Ereception.date_recep est de type Date, tu dois utiliser des # avant et après pour insérer ta date.

De plus, tu es en VBA, la commande Format doit prendre la syntaxe angla-saxonne : mm/dd/yyyy.

Un tuto à lire : http://mhubiche.developpez.com/vba/f...ions/datetime/

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2011, 00h03   #5
Candidat au titre de Membre du Club
 
Inscription : janvier 2008
Messages : 36
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : janvier 2008
Messages : 36
Points : 11
Points : 11
Par défaut Elements de réponse

En fait
j'ai testé d'abord ma requête SQL à travers le module Requête d'accès. Cette requête me retourne un enregistrement

Ensuite je lance mon code en vba

1er cas :
Code :
1
2
3
4
5
6
7
8
9
 
    dt = Me.Ctrl_newdate
    Dim rst1 As String
    Dim rs1 As DAO.Recordset
 
 
rst1 = "SELECT TR_Ereception.num_recep, TR_Ereception.date_recep FROM TR_Ereception WHERE (TR_Ereception.date_recep)=" & dt & ";"
Set rs1 = CurrentDb.OpenRecordset(rst1)
MsgBox "le résultat de la requête rs1 =  " & rs1.Fields(0).Value
j'obtiens le message d'erreur suivant : "Aucun Enregistrement"
2eme cas
Code :
1
2
3
4
5
6
7
8
9
dt = Format(Me.Ctrl_newdate, "mm/jj/aaaa")
 
    Dim rst1 As String
    Dim rs1 As DAO.Recordset
 
 
rst1 = "SELECT TR_Ereception.num_recep, TR_Ereception.date_recep FROM TR_Ereception WHERE (TR_Ereception.date_recep)=" & dt & ";"
Set rs1 = CurrentDb.OpenRecordset(rst1)
MsgBox "le résultat de la requête rs1 =  " & rs1.Fields(0).Value
dans ce cas j'obtiens le message d'erreur "Incompatibilité de type"
Max_zen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2011, 03h38   #6
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 609
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 609
Points : 30 959
Points : 30 959
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Re

Citation:
Envoyé par Philippe JOCHMANS Voir le message
Bonjour

Tu dis que ton code ne retourne aucun enregistrement, mais as-tu un message d'erreur ?

En effet, si ton champ TR_Ereception.date_recep est de type Date, tu dois utiliser des # avant et après pour insérer ta date.

De plus, tu es en VBA, la commande Format doit prendre la syntaxe angla-saxonne : mm/dd/yyyy.

Un tuto à lire : http://mhubiche.developpez.com/vba/f...ions/datetime/

Philippe
Il faudrait prendre en compte les messages.

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2011, 19h29   #7
Candidat au titre de Membre du Club
 
Inscription : janvier 2008
Messages : 36
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : janvier 2008
Messages : 36
Points : 11
Points : 11
Par défaut RE

J'ai pris en compte ton message.
Pour l'instant bien que je comprend le message.
Je ne vois pas très bien comment modifier mon code.
Je vais travaille dessus donc.
Max_zen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2011, 00h11   #8
Candidat au titre de Membre du Club
 
Inscription : janvier 2008
Messages : 36
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : janvier 2008
Messages : 36
Points : 11
Points : 11
Par défaut finalement

merci. finalement ça marche mieux comme ça.

Code :
1
2
3
4
  dt = Format(Me.Ctrl_newdate, "mm/dd/yyyy")
    Dim rst1 As String
  
rst1 = "SELECT TR_Ereception.num_recep, TR_Ereception.date_recep FROM TR_Ereception WHERE (TR_Ereception.date_recep)=#" & dt & "# ;"
Max_zen 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 11h06.


 
 
 
 
Partenaires

Hébergement Web