Plage horraire déjà réservé

Bsr
J'ai besoin d'un coup de pouce svp.
Je vous explique.
J'ai une requête avec comme champs, nom, prenom, adresse, commune, heureRes
J'aurais aimer avoir un message d'alerte m'indiquant qu'un client de cette commune est déjà inscrit a l'heure voulu si un client (de cette même commune) via un formulaire s'inscrit et réserve une heure déjà réservé.
Merci

11 réponses

Résumé de la discussion

La demande porte sur la mise en place d'une alerte lorsqu'une réservation d'heure est déjà prise pour la même commune via un formulaire Access et DLookup. Des échanges portent sur l'utilisation de DLookup pour vérifier l'heure et la commune, via des MsgBox ou des tests dans BeforeUpdate afin d'afficher une alerte 'Heure déjà réservée'. Des réponses évoquent aussi le modèle relationnel et SQL; certains indiquent que SQL ne déclenche pas d'alerte d'insertion et qu'il faut programmer l'alerte côté code, ou vérifier les associations 1-n. En complément, certains évoquent l'importance de clarifier le modèle des tables et les clés primaires et étrangères, afin que l'alerte puisse s'appuyer sur des vérifications cohérentes lors des réservations.

Bobot (l’IA à votre service)
  1. Tu peux exposer le modèle relationnel de ta table client et commune stp, sa aidera à la compréhension
    0
    1. Merci de m'avoir répondu.
      J'ai une table tblclient et une table tblreservation en relation 1-n.
      la tblclient contient les champs NumIdcli, Nom, prenom, commune et la tblreservation contient les champs NumIdres, date de debut, heureRes
      Bonne soirée
      0
      1. Donc si c'est 1-n des deux côtés sa veut dire que un client peut faire 1 ou plusieurs réservations et une réservation peut être faite par 1 ou plusieurs client (je demande pour voir si on se comprend).
        Si vous avez 1-n de chaque côté de l'association alors l'association devient table.
        l'association aurait comme clé primaire et étrangère NumIdcli et NumIdres

        Autre chose, SQL ne génère pas d'alerte il permet la création de BD/tables/vues...,l'interrogation/manipulations des données et la gestion des droits, c'est le code utilisé en parallèle qui devra générer l'alerte. Tout ce que SQL pourra faire c'est la vérification, j'attends votre confirmation sur la compréhension du sujet, n'hésitez pas à divulger tous types d 'informations.
        0
    2. Bjr Kev-sky62
      Une réservation peu être faite par plusieurs clients de la même commune mais pas aux même horaires.

      Si j'ai un client de Paris qui me réserve une séance à 08hoo, je ne peux pas faire un deuxième client de paris à 08h00. Sachant qu'une séance du 3/4 d'heure il ne pourra réserver sa séance qu'a 08h45 (en gros c'est pour schématiser).
      Par contre si j'ai un troisième de Lyon qui me réserve une séance à 8h00, ok, comme nous sommes un commercial par secteur.
      Je pense que j'ai été assez clair, sinon n'hésite pas a me demander.
      Merci
      0
      1. Pour moi ton modèle relationnel/MCD n'est pas bon.
        0
        1. Ou alors tu ne m'as pas donné toutes les infos
          0
      2. up svp
        Merci
        0
        1. tblclient (NumIdcli, Nom, prenom, commune) //Numidcli=clé primaire
          tblreservation (NumIdres, date de debut, heureRes,tblcient-numidcli)
          numidres= clé primaire tblclient-numidcli= clé étrangère en référence à NumIdRes de tblclient

          Pour savoir si un client à déjà réservé dans une ville à une certaine heure, faut interroger les deux tables, pour ça faut une clé étrangère entre les deux... Renseigne toi sur Merise et le schéma entité-association encore appellé MCD.
          0
      3. Bsr Kev-sky62
        Alors après mainte recherche j'en suis arrivée a utiliser la fonction DLooKup.
        Seulement j'arrive pas à la mettre en place

        If Me.HeureVisite = DLookup("Heurereserv", "Tblclient", "IdTournee = " & Me.IdTournee) Then
        MsgBox "Heure déjà réservée !"
        Cancel = True
        End If

        j'ai eau essayer ça ne fonctionne pas.
        merci
        0
        1. Modérateur
          Salut,

          et c'est quoi qui ne fonctionne pas ?
          0
        2. Bjr blux
          Merci davoir répondu.
          Un gros casse tête pour la mienne ,-))
          La tournée n'est pas prise en compte quand je rentre un client. Du coup je peux avoir un client A sur ma tournée une à 08:00 et un client B sur ma tournée une à 08:00.
          0
        3. Modérateur
          Non, mais ça j'avais compris depuis le début.
          Ma question était au niveau du Dlookup...
          0
        4. pourquoi utiliser DLooKup ??
          rechercher une valeur "HeureVisite" et si la valeur trouvé, comparer avec "IdTournee", et si une concordance est trouvé msgbox "heure déjà réservé pour cette tournée"
          0
        5. Modérateur
          Tu n'as pas compris...
          Je saisis très bien ce que fait un dlookup, je m'interrogeais sur ta phrase :
          j'en suis arrivée a utiliser la fonction DLooKup. Seulement j'arrive pas à la mettre en place
          0
      4. Ouppss désolé
        J'ai parcouru qlqs fofo et je pense que dans mon cas c'est DLooKup qu'il faut utiliser (je me trompe peu être) mais je n'arrive pas a l'appliquer.
        J'ai beaucoup vu DLooKup dans des requêtes mais dans mon cas ce serait en vba.
        Merci blux.
        0
        1. Modérateur
          J'ai bien compris, je voudrais simplement savoir ce qui ne marche pas dans ton dlookup :

          - ça plante
          - ça sort un message d'erreur
          - ça éteint la lumière
          - ça appelle les pompiers
          - ça ne va jamais dans le corps du test
          - ...
          0
      5. - J'ai l'impression qu'il ne va pas plus loin que le premier enregistrement.
        0
        1. Modérateur
          dlookup cherche un champ qui correspond à ce qu'on lui demande.
          Dans la majorité des cas, le résultat est unique, si cependant ce n'est pas le cas, il renvoie le premier qui correspond aux critères.

          Ici, tu cherches à renvoyer la valeur du champ Heurereserv de la table Tblclient dont le champ IdTournee (de cette même table) est égal au contenu d'un contrôle nommé Me.IdTournee.

          Tu devrais déjà vérifier les valeurs de Me.HeureVisite et Me.IdTournee avec un msgbox.
          0
      6. Comment je peux vérifier ça stp.
        Faire un msgbox je sais faire mais pour le reste !!!!
        Comment vérifier ces deux valeurs.
        Merci
        0
        1. Modérateur
          msgbox me.heurevisite
          msgbox Me.IdTournee
          +
          msgbox dlookup(...)
          0
      7. Désolé marche po grrrr. J'ai du me tromper quelques part.

        Private Sub HeureVisiste_BeforeUpdate(Cancel As Integer)
        MsgBox Me.HeureVisite
        MsgBox Me.IdTournee
        If Me.HeureVisite = DLookup("HeureVisite", "T_Tournees", "idTournee = " & Me.IdTournee) Then
        MsgBox "Heure déjà réservée !"
        ' Annule l'évènement
        Cancel = True
        End If
        End Sub
        0
        1. Modérateur
          Il serait bien ce que tu dises ce qui ne va pas :

          - ça plante
          - ça sort un message d'erreur
          - ça éteint la lumière
          - ça appelle les pompiers
          - ça ne va jamais dans le corps du test
          - ...
          0
      8. comme je te le disais un peu plus j'ai l'impression qu'il s'arrête au premiers enregistrement, il va pas plus loin.
        merci
        0
        1. Modérateur
          Il n'a pas à continuer, il n'est pas dans une boucle, il fait un test entre deux variables...
          0
        2. et comment je peux faire ça stp.
          Merci
          0
        3. Modérateur
          Il ne faut pas faire de boucle, tu cherches à vérifier si c'est réservé, c'est tout...
          0
        4. concrètement, je faits comment.
          Ma connaissance en vba étant proche de 0 ,-)
          Merci
          0
        5. Modérateur
          Je crois que ce qui coince, ce n'est pas le VBA, mais plutôt la logique de fonctionnement...
          0