Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Dcount ??

10 réponses
Avatar
A COSTA
Bonjour,
J’ai une table avec un champ date. Table1
J’ai un formulaire avec une Text1 ou je veux introduire une date (p. ex.
aujourd'hui).

J’aimerais avoir un message si la date introduite existe dans la table1.

J’ai essayé :

Private Sub Text1_BeforeUpdate(Cancel As Integer)
If DCount("*", "Table1", "Date =" & Me.Text1.Value) > 0 Then
MsgBox "La date existe déjà dans la table"
End if

Mais, …. ça ne fonctionne pas.
Pourrais vous m’aider ?
Merci d’avance
A. Costa

10 réponses

Avatar
Blaise Cacramp
Bonjour ou bonsoir, selon.

Regarde l'aide sur Dlookup


Cdt, Blaise
---- ---- ----


"A COSTA" a écrit dans le message de
news:
Bonjour,
J'ai une table avec un champ date. Table1
J'ai un formulaire avec une Text1 ou je veux introduire une date (p. ex.
aujourd'hui).

J'aimerais avoir un message si la date introduite existe dans la table1.

J'ai essayé :

Private Sub Text1_BeforeUpdate(Cancel As Integer)
If DCount("*", "Table1", "Date =" & Me.Text1.Value) > 0 Then
MsgBox "La date existe déjà dans la table"
End if

Mais, .. ça ne fonctionne pas.
Pourrais vous m'aider ?
Merci d'avance
A. Costa



Avatar
Thierry
Bonjour,
N'appelez pas votre champ "Date", c'est un mot reservé d'Access qui risque
de vous poser problème
par la suite.

DlookUp me semble être la bonne solution...

Bon courage.

"Blaise Cacramp" a écrit dans le message de
news:%23fhGLE$

Bonjour ou bonsoir, selon.

Regarde l'aide sur Dlookup


Cdt, Blaise
---- ---- ----


"A COSTA" a écrit dans le message de
news:
Bonjour,
J'ai une table avec un champ date. Table1
J'ai un formulaire avec une Text1 ou je veux introduire une date (p. ex.
aujourd'hui).

J'aimerais avoir un message si la date introduite existe dans la table1.

J'ai essayé :

Private Sub Text1_BeforeUpdate(Cancel As Integer)
If DCount("*", "Table1", "Date =" & Me.Text1.Value) > 0 Then
MsgBox "La date existe déjà dans la table"
End if

Mais, .. ça ne fonctionne pas.
Pourrais vous m'aider ?
Merci d'avance
A. Costa







Avatar
3stone
Salut,

A COSTA wrote:
Bonjour,
J’ai une table avec un champ date. Table1
J’ai un formulaire avec une Text1 ou je veux introduire une date (p.
ex. aujourd'hui).

J’aimerais avoir un message si la date introduite existe dans la
table1.

J’ai essayé :

Private Sub Text1_BeforeUpdate(Cancel As Integer)
If DCount("*", "Table1", "Date =" & Me.Text1.Value) > 0 Then
MsgBox "La date existe déjà dans la table"
End if

Mais, …. ça ne fonctionne pas.
Pourrais vous m’aider ?




"Date" est le nom d'une fonction d'Access et ne peux pas être utilisée
comme nom de champ... comme toutes les autres fonctions d'ailleurs
http://support.microsoft.com/kb/286335/fr?spid%09&sida8

"Date" renvoie donc la date du jour, tu compares Text1 à cette date
et, au mieux - si cela fonctionne, tu obtien uniquement ceux du jour...

Pour contourner, tu peux essayer:

If DCount("*", "Table1", "[Date] =" & Me.Text1.Value) > 0 Then
MsgBox "La date existe déjà dans la table"
End if

mais il est de toute façon conseillé d'utiliser des noms de champ "parlant"
comme DateAchat, DateVente, DateNaissance qui te parlera encore
lorsque tu regarderas ton code dans un an ou deux ;-)

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
A COSTA
Bonjour et merci
J'ai cangé les noms des champs mias c'est le meme.
Si la date introduite existe dans la table, je n'ai pas le message.
Si je change ...Table1", "MonChamp =" & Me.Text1.Value... par
.....Table1", "MonChamp <=" .... je continue sans le message.
.....Table1", "MonChamp >=" .... j'ai le message, si la date introduite et
egale ou inferieure aus dates de la table.
Dans ce cas, si la date plus petite de la table est p. ex. 1/1/1980 et je
mets 1/1/1979 j'ai aussi le message parce que c'est logique selon la formule
mais elle n'existe pas dans la table.
C'est la mom probleme. Je voudrais avoir un message d'avertissement si la
date introduite, plus petite ou plus grande que toutes les dates de la table.
Merci encore une fois.
A. Costa

"3stone" a écrit :

Salut,

A COSTA wrote:
> Bonjour,
> J’ai une table avec un champ date. Table1
> J’ai un formulaire avec une Text1 ou je veux introduire une date (p.
> ex. aujourd'hui).
>
> J’aimerais avoir un message si la date introduite existe dans la
> table1.
>
> J’ai essayé :
>
> Private Sub Text1_BeforeUpdate(Cancel As Integer)
> If DCount("*", "Table1", "Date =" & Me.Text1.Value) > 0 Then
> MsgBox "La date existe déjà dans la table"
> End if
>
> Mais, …. ça ne fonctionne pas.
> Pourrais vous m’aider ?


"Date" est le nom d'une fonction d'Access et ne peux pas être utilisée
comme nom de champ... comme toutes les autres fonctions d'ailleurs
http://support.microsoft.com/kb/286335/fr?spid%09&sida8

"Date" renvoie donc la date du jour, tu compares Text1 à cette date
et, au mieux - si cela fonctionne, tu obtien uniquement ceux du jour...

Pour contourner, tu peux essayer:

If DCount("*", "Table1", "[Date] =" & Me.Text1.Value) > 0 Then
MsgBox "La date existe déjà dans la table"
End if

mais il est de toute façon conseillé d'utiliser des noms de champ "parlant"
comme DateAchat, DateVente, DateNaissance qui te parlera encore
lorsque tu regarderas ton code dans un an ou deux ;-)

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)




Avatar
3stone
Salut,

Seconde étape...

Il faut que tu présentes les dates que *tu* manipules sous la formes US,
car le VBA ne "parle" que l'anglais... ;-)

Donc, ton code devient :

If DCount("*", "Table1", "DateX =" & Format(Me.Text1.Value, "#mm-dd-yyyy#") > 0 Then
MsgBox "La date existe déjà dans la table"
End if

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)





A COSTA wrote:
Bonjour et merci
J'ai cangé les noms des champs mias c'est le meme.
Si la date introduite existe dans la table, je n'ai pas le message.
Si je change ...Table1", "MonChamp =" & Me.Text1.Value... par
.....Table1", "MonChamp <=" .... je continue sans le message.
.....Table1", "MonChamp >=" .... j'ai le message, si la date
introduite et egale ou inferieure aus dates de la table.
Dans ce cas, si la date plus petite de la table est p. ex. 1/1/1980
et je mets 1/1/1979 j'ai aussi le message parce que c'est logique
selon la formule mais elle n'existe pas dans la table.
C'est la mom probleme. Je voudrais avoir un message d'avertissement
si la date introduite, plus petite ou plus grande que toutes les
dates de la table. Merci encore une fois.
A. Costa

"3stone" a écrit :

Salut,

A COSTA wrote:
Bonjour,
J’ai une table avec un champ date. Table1
J’ai un formulaire avec une Text1 ou je veux introduire une date (p.
ex. aujourd'hui).

J’aimerais avoir un message si la date introduite existe dans la
table1.

J’ai essayé :

Private Sub Text1_BeforeUpdate(Cancel As Integer)
If DCount("*", "Table1", "Date =" & Me.Text1.Value) > 0 Then
MsgBox "La date existe déjà dans la table"
End if

Mais, …. ça ne fonctionne pas.
Pourrais vous m’aider ?




"Date" est le nom d'une fonction d'Access et ne peux pas être
utilisée comme nom de champ... comme toutes les autres fonctions
d'ailleurs
http://support.microsoft.com/kb/286335/fr?spid%09&sida8

"Date" renvoie donc la date du jour, tu compares Text1 à cette date
et, au mieux - si cela fonctionne, tu obtien uniquement ceux du
jour...

Pour contourner, tu peux essayer:

If DCount("*", "Table1", "[Date] =" & Me.Text1.Value) > 0 Then
MsgBox "La date existe déjà dans la table"
End if

mais il est de toute façon conseillé d'utiliser des noms de champ
"parlant" comme DateAchat, DateVente, DateNaissance qui te parlera
encore
lorsque tu regarderas ton code dans un an ou deux ;-)

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)




Avatar
A COSTA
Bonjour,
Merci beaucoup pour votre aide.
Si c'est pas demander de trop, comment dois je changer la formule pour
permetre d'avoir le message si la date introduite n'existe pas dans la table
mais est comprise entre la date la plus petite et la plus elevée de la table.
Merci d'avance
A. Costa

"3stone" a écrit :

Salut,

Seconde étape...

Il faut que tu présentes les dates que *tu* manipules sous la formes US,
car le VBA ne "parle" que l'anglais... ;-)

Donc, ton code devient :

If DCount("*", "Table1", "DateX =" & Format(Me.Text1.Value, "#mm-dd-yyyy#") > 0 Then
MsgBox "La date existe déjà dans la table"
End if

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)





A COSTA wrote:
> Bonjour et merci
> J'ai cangé les noms des champs mias c'est le meme.
> Si la date introduite existe dans la table, je n'ai pas le message.
> Si je change ...Table1", "MonChamp =" & Me.Text1.Value... par
> .....Table1", "MonChamp <=" .... je continue sans le message.
> .....Table1", "MonChamp >=" .... j'ai le message, si la date
> introduite et egale ou inferieure aus dates de la table.
> Dans ce cas, si la date plus petite de la table est p. ex. 1/1/1980
> et je mets 1/1/1979 j'ai aussi le message parce que c'est logique
> selon la formule mais elle n'existe pas dans la table.
> C'est la mom probleme. Je voudrais avoir un message d'avertissement
> si la date introduite, plus petite ou plus grande que toutes les
> dates de la table. Merci encore une fois.
> A. Costa
>
> "3stone" a écrit :
>
>> Salut,
>>
>> A COSTA wrote:
>>> Bonjour,
>>> J’ai une table avec un champ date. Table1
>>> J’ai un formulaire avec une Text1 ou je veux introduire une date (p.
>>> ex. aujourd'hui).
>>>
>>> J’aimerais avoir un message si la date introduite existe dans la
>>> table1.
>>>
>>> J’ai essayé :
>>>
>>> Private Sub Text1_BeforeUpdate(Cancel As Integer)
>>> If DCount("*", "Table1", "Date =" & Me.Text1.Value) > 0 Then
>>> MsgBox "La date existe déjà dans la table"
>>> End if
>>>
>>> Mais, …. ça ne fonctionne pas.
>>> Pourrais vous m’aider ?
>>
>>
>> "Date" est le nom d'une fonction d'Access et ne peux pas être
>> utilisée comme nom de champ... comme toutes les autres fonctions
>> d'ailleurs
>> http://support.microsoft.com/kb/286335/fr?spid%09&sida8
>>
>> "Date" renvoie donc la date du jour, tu compares Text1 à cette date
>> et, au mieux - si cela fonctionne, tu obtien uniquement ceux du
>> jour...
>>
>> Pour contourner, tu peux essayer:
>>
>> If DCount("*", "Table1", "[Date] =" & Me.Text1.Value) > 0 Then
>> MsgBox "La date existe déjà dans la table"
>> End if
>>
>> mais il est de toute façon conseillé d'utiliser des noms de champ
>> "parlant" comme DateAchat, DateVente, DateNaissance qui te parlera
>> encore
>> lorsque tu regarderas ton code dans un an ou deux ;-)
>>
>> --
>> A+
>> Pierre (3stone) Access MVP
>> Perso: http://www.3stone.be/
>> MPFA: http://www.mpfa.info/ (infos générales)




Avatar
Blaise Cacramp
Bonjour ou bonsoir, selon.

Là, moi je changerais de méthode et j'utiliserais des requêtes (SQL dans du
code vba)
Mais c'est plus compliqué à mettre en oeuvre. Je ne sais pas si d'autres
méthodes pourraient aussi convenir.
Attendons les autres réponses


Cdt, Blaise
---- ---- ----


"A COSTA" a écrit dans le message de
news:
Bonjour,
Merci beaucoup pour votre aide.
Si c'est pas demander de trop, comment dois je changer la formule pour
permetre d'avoir le message si la date introduite n'existe pas dans la
table
mais est comprise entre la date la plus petite et la plus elevée de la
table.
Merci d'avance
A. Costa

"3stone" a écrit :

Salut,

Seconde étape...

Il faut que tu présentes les dates que *tu* manipules sous la formes
US,
car le VBA ne "parle" que l'anglais... ;-)

Donc, ton code devient :

If DCount("*", "Table1", "DateX =" & Format(Me.Text1.Value,
"#mm-dd-yyyy#") > 0 Then
MsgBox "La date existe déjà dans la table"
End if

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)





A COSTA wrote:
> Bonjour et merci
> J'ai cangé les noms des champs mias c'est le meme.
> Si la date introduite existe dans la table, je n'ai pas le message.
> Si je change ...Table1", "MonChamp =" & Me.Text1.Value... par
> .....Table1", "MonChamp <=" .... je continue sans le message.
> .....Table1", "MonChamp >=" .... j'ai le message, si la date
> introduite et egale ou inferieure aus dates de la table.
> Dans ce cas, si la date plus petite de la table est p. ex. 1/1/1980
> et je mets 1/1/1979 j'ai aussi le message parce que c'est logique
> selon la formule mais elle n'existe pas dans la table.
> C'est la mom probleme. Je voudrais avoir un message d'avertissement
> si la date introduite, plus petite ou plus grande que toutes les
> dates de la table. Merci encore une fois.
> A. Costa
>
> "3stone" a écrit :
>
>> Salut,
>>
>> A COSTA wrote:
>>> Bonjour,
>>> J'ai une table avec un champ date. Table1
>>> J'ai un formulaire avec une Text1 ou je veux introduire une date (p.
>>> ex. aujourd'hui).
>>>
>>> J'aimerais avoir un message si la date introduite existe dans la
>>> table1.
>>>
>>> J'ai essayé :
>>>
>>> Private Sub Text1_BeforeUpdate(Cancel As Integer)
>>> If DCount("*", "Table1", "Date =" & Me.Text1.Value) > 0 Then
>>> MsgBox "La date existe déjà dans la table"
>>> End if
>>>
>>> Mais, .. ça ne fonctionne pas.
>>> Pourrais vous m'aider ?
>>
>>
>> "Date" est le nom d'une fonction d'Access et ne peux pas être
>> utilisée comme nom de champ... comme toutes les autres fonctions
>> d'ailleurs
>> http://support.microsoft.com/kb/286335/fr?spid%09&sida8
>>
>> "Date" renvoie donc la date du jour, tu compares Text1 à cette date
>> et, au mieux - si cela fonctionne, tu obtien uniquement ceux du
>> jour...
>>
>> Pour contourner, tu peux essayer:
>>
>> If DCount("*", "Table1", "[Date] =" & Me.Text1.Value) > 0 Then
>> MsgBox "La date existe déjà dans la table"
>> End if
>>
>> mais il est de toute façon conseillé d'utiliser des noms de champ
>> "parlant" comme DateAchat, DateVente, DateNaissance qui te parlera
>> encore
>> lorsque tu regarderas ton code dans un an ou deux ;-)
>>
>> --
>> A+
>> Pierre (3stone) Access MVP
>> Perso: http://www.3stone.be/
>> MPFA: http://www.mpfa.info/ (infos générales)






Avatar
3stone
Salut,

A COSTA wrote:
Bonjour,
Merci beaucoup pour votre aide.
Si c'est pas demander de trop, comment dois je changer la formule pour
permetre d'avoir le message si la date introduite n'existe pas dans
la table
mais est comprise entre la date la plus petite et la plus elevée de
la table.




Il faut alors imbriquer 3 fonctions de domaine... ce qui risque
de devenir un peu lent si la table est importante, surtout si la base
est utilisée en réseau...

d étant la date a vérifier:

If (d < DMax("LaDate", "LaTable")) _
And (d > DMin("LaDate", "LaTable")) _
And IsNull(DCount("*", "LaTable", "[LaDate]=" & Format(d, "#mm-dd-yyyy#"))) Then
' c'est bon
else
pas bon
end if


Sinon, comme le dit Blaise, il vaudrait mieux utiliser une requête.

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
A COSTA
Bonjour et un grand merci.
A. Costa

"3stone" a écrit :

Salut,

A COSTA wrote:
> Bonjour,
> Merci beaucoup pour votre aide.
> Si c'est pas demander de trop, comment dois je changer la formule pour
> permetre d'avoir le message si la date introduite n'existe pas dans
> la table
> mais est comprise entre la date la plus petite et la plus elevée de
> la table.


Il faut alors imbriquer 3 fonctions de domaine... ce qui risque
de devenir un peu lent si la table est importante, surtout si la base
est utilisée en réseau...

d étant la date a vérifier:

If (d < DMax("LaDate", "LaTable")) _
And (d > DMin("LaDate", "LaTable")) _
And IsNull(DCount("*", "LaTable", "[LaDate]=" & Format(d, "#mm-dd-yyyy#"))) Then
' c'est bon
else
pas bon
end if


Sinon, comme le dit Blaise, il vaudrait mieux utiliser une requête.

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)




Avatar
Gloops
Bonjour,

Je vois que personne n'a suggéré d'utiliser DateValue, est-ce q ue je
confonds ?

> If DCount("*", "Table1", "Date =" & Me.Text1.Value) > 0 Then

If DCount("*", "Table1", "ChampDate = DateValue('" & Me.Text1.Value _
& "'") > 0 Then

> MsgBox "La date existe déjà dans la table"
> End if

Bon enfin là je suis en train de travailler de mémoire, sans ma chine
ayant Access, sous la main.
Je suis parti du principe qu'il n'y avait pas d'apostrophe dans le champ
de saisie Text1.

Attention effectivement de prendre grand soin de tenir compte de la
culture par défaut, faute de quoi une partie de la date peut reprà ©senter
le jour jusqu'au 12, et le mois ensuite, ce qui peut fort surprendre,
tant le programmeur que l'utilisateur final, et cela particulièremen t
sur une base à utiliser dans plusieurs pays. Une requête avec S erialDate
ne pose pas ce problème, puisque les arguments sont toujours dans
l'ordre année, mois, jour. Le recours à un contrôle calend rier peut
faciliter la saisie pour l'utilisateur (en revanche attention au
déploiement), sinon on peut aussi proposer trois champs de saisie, u n
pour le jour, un pour le mois, un pour l'année, il n'y alors plus à  
saisir de séparateur ni à se demander ce qui représente qu oi, du moins
si les invites de saisie sont dans une langue comprise par l'utilisateur.

Je me suis exprimé dans un style concis voire compact, j'espère que tout
le monde a suivi ?
______________________________________
A COSTA a écrit, le 08/05/2009 12:07 :
Bonjour,
J’ai une table avec un champ date. Table1
J’ai un formulaire avec une Text1 ou je veux introduire une dat e (p. ex.
aujourd'hui).

J’aimerais avoir un message si la date introduite existe dans l a table1.

J’ai essayé :

Private Sub Text1_BeforeUpdate(Cancel As Integer)
If DCount("*", "Table1", "Date =" & Me.Text1.Value) > 0 Then
MsgBox "La date existe déjà dans la table"
End if

Mais, …. ça ne fonctionne pas.
Pourrais vous m’aider ?
Merci d’avance
A. Costa