IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Vérifier si une date se trouve dans la table


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 27
    Points : 11
    Points
    11
    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

  2. #2
    Invité
    Invité(e)
    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

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    j'avais déjà essayé avec Dlookup mais il ne trouve pas le champ (même s'il existe)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MsgBox " " & varX & " "
    merci de votre aide

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 642
    Points : 34 353
    Points
    34 353
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    varX = DLookup("[Date]", "tableau", "[Date] = 08/09/2008 ")
    devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    varX = DLookup("[Date]", "tableau", "[Date] = #08/09/2008#")
    soit le 9 août 2008...

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    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

  6. #6
    Invité
    Invité(e)
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     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

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 27
    Points : 11
    Points
    11
    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

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour

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

    Starec

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 27
    Points : 11
    Points
    11
    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?

  10. #10
    Invité
    Invité(e)
    Par défaut
    Re

    8 septembre ou 9 août ?

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

    Starec

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/05/2017, 00h52
  2. Réponses: 3
    Dernier message: 16/07/2013, 00h48
  3. Verifier qu'une date se trouve dans un intervalle
    Par camer12 dans le forum Général Java
    Réponses: 1
    Dernier message: 08/07/2011, 01h09
  4. Vérifier si une valeur se trouve déjà dans une list box
    Par beegees dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 22/01/2009, 15h03
  5. [C#]Passer une date en paramètre dans Crystal Report
    Par choupinette dans le forum ASP.NET
    Réponses: 5
    Dernier message: 09/08/2005, 09h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo