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 01/09/2008, 15h15   #1 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: mai 2008
Messages: 27
Par défaut Vérifier si une date se trouve dans la table

Bonjour,
j'ai une table et un formulaire
dans le formulaire on a un champ controleX de type DTPicker (on choisit une date dans un calendrier)
dans ma table j'ai un champ Date de type Date/heure
quand on clique sur le bouton de commande valider de mon formulaire le champ de date est rempli par la date mis dans controleX

Je voudrais maintenant que quand on clique sur valider de vérifier que la valeur de controleX ne soit pas dans ma table

Si dans ma table message d'erreur sinon on met à jour la table
C'est pour éviter de réserver une date déjà choisit

Si vous avez des idéees de comment faire merci de m'aider
oulspplus est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 01/09/2008, 15h37   #2 (permalink)
Responsable PowerPoint
 
Avatar de Philippe JOCHMANS
 
Date d'inscription: mai 2005
Localisation: Loir et Cher et Touraine
Âge: 40
Messages: 10 361
Envoyer un message via MSN à Philippe JOCHMANS
Par défaut

Bonjour

Une des solutions est d'utiliser la fonction de domaine DLookup : http://starec.developpez.com/tuto/fonctionsdomaines/

Tu peux également utiliser une requête SQL avec un recordset, et tester le nombre d'enregistrements en retour.

Starec
__________________
En cas de questions techniques par MP ou message visiteur
Office : :Les Cours, Les FAQs
VB : Les Cours, Les FAQs
Mes articles : ici
Me connaitre
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 01/09/2008, 17h30   #3 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: mai 2008
Messages: 27
Par défaut

j'avais déjà essayé avec Dlookup mais il ne trouve pas le champ (même s'il existe)

Code :
 
Dim varX As Variant
...
Private Sub valider_Click()
 
varX = DLookup("[Date]", "tableau", "[Date] = 08/09/2008 ")
If Me.CtlActiveX2 = varX Then
MsgBox "vous ne pouvez pas réserver à cette date, elle est prise"
Else
MsgBox "date disponible réservation possible"
End If
...
 
quand je fais exprès de mettre 08/09/2008 dans CtlActiveX2 et que je valide
j'ai le message suivant "date disponible réservation possible" alors que cette date est dans ma table "tableau"

ce qui veut dire qu'il ne trouve pas à priori cette date dans ma table

j'essaie d'afficher la valeur de varX mais j'ai un message vide
j'avais mis
Code :
 
MsgBox " " & varX & " "
 
merci de votre aide
oulspplus est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 01/09/2008, 17h36   #4 (permalink)
Expert Confirmé Sénior
 
Avatar de jpcheck
 
Date d'inscription: juillet 2007
Localisation: RP
Âge: 24
Messages: 2 944
Envoyer un message via MSN à jpcheck
Par défaut

salut,
si ton champ [Date] est de type date, le mieux reste d'appliquer la bonne syntaxe des champs date, non ?
Code :
varX = DLookup("[Date]", "tableau", "[Date] = 08/09/2008 ")
devient
Code :
varX = DLookup("[Date]", "tableau", "[Date] = #08/09/2008#")
soit le 9 août 2008...
__________________
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 01/09/2008, 18h00   #5 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: mai 2008
Messages: 27
Par défaut

Code :
 
varX = DLookup("[Date]", "tableau", "[Date] = #08/09/2008#")
 
il ne trouve pas la date
je précise que le champ [Date] est bien de type date

j'ai essayé un autre code mais pareil aussi
quand j'affiche varx j'ai un message d'érreur "utilisation incorrecte de null
ce qui signifie que varx prend la valeur null

Code :
 
varX = DLookup("[Date]", "tableau", "[Date] =" & Me.CtlActiveX2)
MsgBox varX
If Me.CtlActiveX2 = varX Then
MsgBox "vous ne pouvez pas réserver à cette date, elle est prise"
Else
MsgBox "date disponible réservation possible"
End If
 
oulspplus est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 01/09/2008, 18h52   #6 (permalink)
Responsable PowerPoint
 
Avatar de Philippe JOCHMANS
 
Date d'inscription: mai 2005
Localisation: Loir et Cher et Touraine
Âge: 40
Messages: 10 361
Envoyer un message via MSN à Philippe JOCHMANS
Par défaut

Bonjour

VarX doit être de type variant pour accepter une valeur nulle, ensuite il faut tester avec la fonction IsNull, si c'est null, c'est qu'il n'y a pas de correspondance, donc pas de date.

Essayes dans ce style

Code :
 Dim varx As Variant
    varx = DLookup("[Date]", "tableau", "[Date]=#" & Me.CtlActiveX2.Value & "#")
 
    If IsNull(varx) Then
        MsgBox "pas de correspondance"
    Else
        MsgBox "c'est bon"
    End If
Starec
__________________
En cas de questions techniques par MP ou message visiteur
Office : :Les Cours, Les FAQs
VB : Les Cours, Les FAQs
Mes articles : ici
Me connaitre
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 03/09/2008, 10h05   #7 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: mai 2008
Messages: 27
Par défaut

bonjour,

ça marche quand je change ma table par une autre table contenant aussi des dates

du coup je reste sur la deuxième table


je vous remercie beaucoup pour votre aide

je prend du plaisir à faire access, c'est ma première découverte
et c grace à vous

Bon courage
oulspplus est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 03/09/2008, 10h52   #8 (permalink)
Responsable PowerPoint
 
Avatar de Philippe JOCHMANS
 
Date d'inscription: mai 2005
Localisation: Loir et Cher et Touraine
Âge: 40
Messages: 10 361
Envoyer un message via MSN à Philippe JOCHMANS
Par défaut

Bonjour

Donc à priori c'est résolu, donc un petit clique sur le bouton

Starec
__________________
En cas de questions techniques par MP ou message visiteur
Office : :Les Cours, Les FAQs
VB : Les Cours, Les FAQs
Mes articles : ici
Me connaitre
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 03/09/2008, 11h25   #9 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: mai 2008
Messages: 27
Par défaut

ça fonctionne avec la nouvelle table mais il ne trouve pas la date 08/09/2008
si je rentre 08/09/2008 j'ai "pas de corresondance" alors qu'elle est dans ma table
sinon pour le reste pas de souci

qu'est ce que ça peut être comme erreur?
oulspplus est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 03/09/2008, 11h37   #10 (permalink)
Responsable PowerPoint
 
Avatar de Philippe JOCHMANS
 
Date d'inscription: mai 2005
Localisation: Loir et Cher et Touraine
Âge: 40
Messages: 10 361
Envoyer un message via MSN à Philippe JOCHMANS
Par défaut

Re

8 septembre ou 9 août ?

Dans le code il faut penser aux dates anglos-saxonnes : mm/dd/yyyy.

Starec
__________________
En cas de questions techniques par MP ou message visiteur
Office : :Les Cours, Les FAQs
VB : Les Cours, Les FAQs
Mes articles : ici
Me connaitre
Philippe JOCHMANS 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