OVH Cloud OVH Cloud

DLookUp Rebelle

12 réponses
Avatar
Ayrton [ ASC ]
Bonjour à tous,

J'ai une table Saints qui contient le nom des saints ,Date puis ferié ( ce
sont 3 champs ); j'en ai une autre avec deux champs ( Jour et Fête).
Sur cette table j'ai un form avec ces deux champs et en évènement sur Sortie
du controle Jour j'ai mis ceci :
Private Sub Jour_Exit(Cancel As Integer)
Dim JourFete As Variant
JourFete = DLookup("[NomduSaint]", "saints", "[Date]='" & [Jour] & "'")
If Not IsNull(JourFete) Then
Me.Fete = JourFete
Else
End If
End Sub

Mon souci est que dès que je sors du champ Jour, un message d'erreur me dit
: Type de données incompatibles avec le critère.

Où me suis je trompé ? j'essaie tout ce que je peux et je tourne en rond
;-( Même message d'erreur à chaque fois

Merci de votre aide car je deviens fou avec ça ! ! ;-)



--
Cordialement
Christophe

10 réponses

1 2
Avatar
Eric
re,

Je vois que tu n'as pas modifié dans la table saints le champ nommé Date :-(
Date étant un mot réservé sous Access, ca risque de te jouer de mauvais
tours, et à quel Saint devras-tu te vouer ?

Normal que tu es cette erreur. Le champ Date, au combien mal nommé, est
une date donc en supposant que jour est aussi un champ de type date, il
faut mettre:
JourFete = DLookup("[NomduSaint]", "saints", "[Date]=" &
Format([Jour],"#mm/dd/yyyy#") )

JourFete recevra donc une date, tu devrais le déclarer comme Date et non
comme Variant.

Bonjour à tous,

J'ai une table Saints qui contient le nom des saints ,Date puis ferié ( ce
sont 3 champs ); j'en ai une autre avec deux champs ( Jour et Fête).
Sur cette table j'ai un form avec ces deux champs et en évènement sur Sortie
du controle Jour j'ai mis ceci :
Private Sub Jour_Exit(Cancel As Integer)
Dim JourFete As Variant
JourFete = DLookup("[NomduSaint]", "saints", "[Date]='" & [Jour] & "'")
If Not IsNull(JourFete) Then
Me.Fete = JourFete
Else
End If
End Sub

Mon souci est que dès que je sors du champ Jour, un message d'erreur me dit
: Type de données incompatibles avec le critère.

Où me suis je trompé ? j'essaie tout ce que je peux et je tourne en rond
;-( Même message d'erreur à chaque fois

Merci de votre aide car je deviens fou avec ça ! ! ;-)





--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Jessy Sempere [MVP]
Bonjour

Tu cherches à trouver la correspondance à une date en lui
donnant comme critère un Jour...

Ca ne peut pas marcher.

Par contre si quand tu dis champ Jour, ce champ contient
bien une date, là pas de problème si ce n'est :

Date = '" & [Jour] & "'"

Dans ce cas, Jour est une date et toi tu lui dis que c'est une donnée texte,
essais plutôt :

"Date =#" & [Jour] & "#"

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Ayrton [ ASC ]" a écrit dans le message news:

Bonjour à tous,

J'ai une table Saints qui contient le nom des saints ,Date puis ferié ( ce
sont 3 champs ); j'en ai une autre avec deux champs ( Jour et Fête).
Sur cette table j'ai un form avec ces deux champs et en évènement sur
Sortie

du controle Jour j'ai mis ceci :
Private Sub Jour_Exit(Cancel As Integer)
Dim JourFete As Variant
JourFete = DLookup("[NomduSaint]", "saints", "[Date]='" & [Jour] &
"'")

If Not IsNull(JourFete) Then
Me.Fete = JourFete
Else
End If
End Sub

Mon souci est que dès que je sors du champ Jour, un message d'erreur me
dit

: Type de données incompatibles avec le critère.

Où me suis je trompé ? j'essaie tout ce que je peux et je tourne en rond
;-( Même message d'erreur à chaque fois

Merci de votre aide car je deviens fou avec ça ! ! ;-)



--
Cordialement
Christophe




Avatar
Ayrton [ ASC ]
Bonjour Eric
Dans ton message de news:% Tu nous
disais :
re,


Re Eric,

Je vois que tu n'as pas modifié dans la table saints le champ nommé


Mille Excuses ! Tu me l'avais pourtant conceillé ! A vrai dire je voulais
juste tester rapidement avant de le " mettre au propre " et résultat des
courses, je perds plus de temps que je n'en gagne ;-(

Date :-( Date étant un mot réservé sous Access, ca risque de te jouer
de mauvais tours, et à quel Saint devras-tu te vouer ?


Je ne te le fais pas dire ! ! ;-)

Normal que tu es cette erreur. Le champ Date, au combien mal nommé,
est une date donc en supposant que jour est aussi un champ de type date,
il faut mettre:
JourFete = DLookup("[NomduSaint]", "saints", "[Date]=" &
Format([Jour],"#mm/dd/yyyy#") )

JourFete recevra donc une date, tu devrais le déclarer comme Date et
non comme Variant.


ok pour ça Eric ; il va vraiment falloir que je me rencarde et que
j'apprenne bie nces histoires de formats de dates ( qui m'ont déjà caausés
des soucis ) et à savoir pourquoi on met ' ou " et parfois même les deux "'"
; une fois que j'aurais bie nassimilé ça plus mes formats Date, j'arriverai
à être un peu plus autonome même si l'apprentissage est dur ! ! ;-)

Encore merci

--
Cordialement
Christophe




Bonjour à tous,

J'ai une table Saints qui contient le nom des saints ,Date puis
ferié ( ce sont 3 champs ); j'en ai une autre avec deux champs (
Jour et Fête). Sur cette table j'ai un form avec ces deux champs et en
évènement
sur Sortie du controle Jour j'ai mis ceci :
Private Sub Jour_Exit(Cancel As Integer)
Dim JourFete As Variant
JourFete = DLookup("[NomduSaint]", "saints", "[Date]='" & [Jour]
& "'") If Not IsNull(JourFete) Then
Me.Fete = JourFete
Else
End If
End Sub

Mon souci est que dès que je sors du champ Jour, un message d'erreur
me dit
Type de données incompatibles avec le critère.


Où me suis je trompé ? j'essaie tout ce que je peux et je tourne en
rond ;-( Même message d'erreur à chaque fois

Merci de votre aide car je deviens fou avec ça ! ! ;-)





Avatar
Ayrton [ ASC ]
Bonjour Jessy Sempere [MVP]
Dans ton message de news:42de5cf4$ Tu nous disais :

Bonjour


Bonjour,


Tu cherches à trouver la correspondance à une date en lui
donnant comme critère un Jour...

Ca ne peut pas marcher.

Par contre si quand tu dis champ Jour, ce champ contient
bien une date, là pas de problème si ce n'est :

Date = '" & [Jour] & "'"

Dans ce cas, Jour est une date et toi tu lui dis que c'est une donnée
texte, essais plutôt :

"Date =#" & [Jour] & "#"


Merci pour toutes ces infos ; j'en prends bonne note ; comme je disais à
Eric, je ne maîtrise pas bie nles histoires de quotes ou doubles quotes ;
dans ton exemple:
Date = '" & [Jour] & "'" , je ne comprends pas la signification des quotes
ou doubles quotes placées après Date et après le & ; donc forcément je
coince ; si je pouvais trouver un site qui explique un peu cela, ça
m'aiderait beaucoup ; mais bon, je m'accroche quand même ! ! ;-)

En tout cas, merci de ton aide

--
Cordialement
Christophe

Avatar
Eric
re,
Ne tiens pas compte de ma remarque pour le Dim JourFete car je n'ai vu
qu'après coup que tu testé IsNull(JourFete)
DLookup() pouvant retourné Null ca planterait avec un
Dim JourFete as Date.
Si on voulait vraiment améliorer il faudrait tester ci jour est Null ou
chaine de longueur nulle avant de faire le DLookup() et dans ce cas la
définir JourFete comme Date.


... même si l'apprentissage est dur ! ! ;-)

On est tous passé par là et je peux t'assurer que j'ai encore

beaucoup à apprendre.
Courage, fuyons comme le diraient certains ;-)
--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Ayrton [ ASC ]
Re Eric,

Bon, j'ai pas de bol car j'ai toujours" incompatibilité de type "; je
verrais tout cela au calme ce soir chez moi car là je ne comprends plus rien
;-(

Merci de m'avoir aidé car depuis quelques jours t uviens assez souvent (
avec 3 stone ) à ma rescousse ! ! ;-)

Bonne fin de journée

--
Cordialement
Christophe
Avatar
Ayrton [ASC]
Re Eric,

Je reviens rapidement sur ce fil pour te tenir au courant ( c'est la moindre
des choses !)
Voici le DLookup() que j'ai fais et qui fonctionne à peu près :
Private Sub Journee_Exit(Cancel As Integer)
Dim JourFete As String
JourFete = DLookup("[Nom du saint]", "Saints", "[DateFete]= " &
Format([Journee], "#mm/dd/yyyy#"))
Me.Fete = JourFete

End Sub

Je pense qu'il n'est pas parfait mais bon............................je fais
avec mes petites connaissances et je me suis basé sur ton aide précieuse.
Le souci : Si je mets ça sur l'évènement After_Update de mon form, ça
fonctionne bien mais je ne vois pas le champs se remplir ( celui indiquant
la fête ) ; je suis obligé de revenir en arrière, ce qui est normal sur cet
évènement mais si je mets sur Evènement " Sortie " du controle " Journée " ,
mon formulaire est bloqué ;-( Je ne peux avancer d'un enregistrement que
si le focus est sur le champs Fete ; je n'ai que eux champs dans mon form
( Journée +Fete ) ; je saisi une date et le champs Fete se remplit ; ça
c'est ok sauf que si je ferme mon form, à l'ouverture d'après, je ne peux
avancer ou reculer dans les enregistrements *que* si le champs Fete a le
focus sinon j'ai le form bloqué et je ne peux ni avancer ni reculer dans mes
enregistrements ! J'ai l'impression que ça fait beaucoup de boulot pour ce
qui ne devait être au dépar qu'un petit plaisir ; ça fait presque deux
heures que je cherche à savoir ce qu uiine vas pas et je vais me coucher car
j'en ai ras le bol ;-)

Voilà, c'était juste pour t'informer de mes périgrinations ! ! Ce qui me
dépasse, c'est que j'ia le même DLookup pour une autre appli et ça
fonctionne super bien avec la fonction e nsortie de focus et sans formulaire
bloqué ; sans vouloir parler vulgairement, ça me trou le c.... ;-)

Allez, on arrête les frais ! Je verrai ça à tête reposée plus tard........

Cordialement

--
@+
Christophe
http://cerbermail.com/?NiMhJk1y8Y
Date : Le 21/07/2005
Avatar
3stone
Salut,

"Ayrton [ASC]"
| Je reviens rapidement sur ce fil pour te tenir au courant ( c'est la moindre
| des choses !)
| Voici le DLookup() que j'ai fais et qui fonctionne à peu près :
| Private Sub Journee_Exit(Cancel As Integer)
| Dim JourFete As String
| JourFete = DLookup("[Nom du saint]", "Saints", "[DateFete]= " &
| Format([Journee], "#mm/dd/yyyy#"))
| Me.Fete = JourFete
|
| End Sub
|
| Je pense qu'il n'est pas parfait mais bon............................je fais
| avec mes petites connaissances et je me suis basé sur ton aide précieuse.
| Le souci : Si je mets ça sur l'évènement After_Update de mon form, ça
| fonctionne bien mais je ne vois pas le champs se remplir ( celui indiquant
| la fête ) ; je suis obligé de revenir en arrière, ce qui est normal sur cet
| évènement mais si je mets sur Evènement " Sortie " du controle " Journée " ,
| mon formulaire est bloqué
<snip>


Ce jour de fête n'est lié à rien dans ton formulaire, c'pas ?
a part que tu le pousse également dans Me.Fete ...

si tu mets ton code sur activation du formulaire, cela devrait être bon, non?

et pour ne pas le faire à chaque fois, tester si le champ [Fete] est Null


Dim JourFete As String
If isnull(Me.Fete) Then
JourFete = DLookup("[Nom du saint]", "Saints", "[DateFete]= " & Format([Journee],
"#mm/dd/yyyy#"))
Me.Fete = JourFete
end if


(mais je ne saisi pas bien ton organisation)

--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw
Avatar
Ayrton [ASC]
Bonjour *3stone*
Dans ton message de news:%,
Tu as pensé très fort :-(*)
Salut,


Salut 3 Stone,


Ce jour de fête n'est lié à rien dans ton formulaire, c'pas ?
a part que tu le pousse également dans Me.Fete ...


Ben si ;-(
Brièvement, voilà ce que j'ai :
Une Table nommée Saints ; 3 champs : Nom du saint;DateFete;Ferie
Une autre table nommée : LaTable ; 2 champs : Journee; Fete

Un form avec comme source les champs Journee et Fete .
Je voulais qu'en saisissant une date dans Journee, ça me remplisse le champ
Fete avec le nom du saint .

C'est tout ce que je voulais ; mais ça ne va pas ; j'ai toujours des
messages d'erreur ;-(


si tu mets ton code sur activation du formulaire, cela devrait être
bon, non?


non

et pour ne pas le faire à chaque fois, tester si le champ [Fete] est
Null


Comment ça tester ? le champ [Fete] ne peux pas être null puisqu'il doit se
remplir normalement quand je saisi une date dans ([Jourrnée ] ; c'est pas le
champ qui est Null.............c'est moi ;-) J'en ai marre !

Dim JourFete As String
If isnull(Me.Fete) Then
JourFete = DLookup("[Nom du saint]", "Saints", "[DateFete]= " &
Format([Journee], "#mm/dd/yyyy#"))
Me.Fete = JourFete
end if


Ca parait nickel mais ça marche pas

(mais je ne saisi pas bien ton organisation)


Pour tout te dire, je voulais mettre dans une appli existante un champs avec
la date du jour et un autre dans lequel apparaitrait la fête du jour ; comme
c'est une appli dont je me sers tous les jours au boulot, je trouvais ça
assez sympa ( maus bon, c'était juste pour le fun ).
Et depuis ce midi, j'essaie au boulot ( à temps perdu ! ! ;-) ) de faire
des tests avant sur la base que m'a donné Eric ; donc pour l'instants mes
tests foireux se font sur cette base ; et apparement, c'est pas demain la
veille que je vais la mettre dans mon appli !

Voili voilou !


--
@+
Christophe
http://cerbermail.com/?NiMhJk1y8Y
Date : Le 21/07/2005

Avatar
Ayrton [ASC]
Re 3 Stone,

avant d'aller me coucher, je viens de mettre ton code dans l'évènement sur
Sortie() de mon champ [Journée]
Ca fonctionne bien à 99% ; le seul petit hic est que quand j'ouvre mon form,
je me positionne sur le dernier enregistrement puis je fais suivant et donc
avant de faire une nouvelle saisie mes deux champs sont donc nulls ( ou
vierges ou pas encore saisis, bref appelle ça comme tu veux, le principal
étant qu'on se comprenne ;-) Donc quand je suis là, si je veux revenir en
arrière, un message me dit " Erreur de syntaxe; operatezur absent dans
l'expression [DateFete] ; par contre, une fois mon champ saisi et l'autre
rempli, ça baigne ! ! je peux me promener dans mes enregistrements, en avant
et en arrière !; le pied quoi ! ;-)

Voilà, je ne sais pas si ça te guide, mais tu sais tout !

A plus tard Pierre .

Bonne nuit

--
@+
Christophe
http://cerbermail.com/?NiMhJk1y8Y
Date : Le 21/07/2005
1 2