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 :

Conditions à l'intérieur d'un recordset [AC-2010]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    525
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Août 2005
    Messages : 525
    Par défaut Conditions à l'intérieur d'un recordset
    Bonjour à tous

    J'ai fait un planning hebdomadaire qui attribue à chaque praticien une activité. il y a une vingtaine d'activité (la case est nommée creneau1_1 puis 1_2 pour le 2ième jour puis 2_1 pour la deuxième activté au premier jour etc... selon les exmeples trouvés sur le forum ici)
    Quand on clique sur un creneau, il ouvre un formulaire continu qui affiche la liste des praticiens selon leur préférences d'activités.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    'on sélectionne les praticiens
    strSql = "SELECT * FROM R_PreferenceUsers WHERE PreferenceListe LIKE '" & ActivityFilter & "';"
    'on détermine la source du formulaire qui propose les praticiens
    Forms(LeBonFormulaire).Form.RecordSource = strSql
    Mais il y a des règles en fonction du nombre de creneaux déjà attribués, de l'activité de la veille ou du lendemain et des activités incompatibles.
    Je pense utiliser un recordset puis tester les une aprés les autres les règles.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    Set Rst =CurrentDb.openrecordset(strSql, dbOpenForwardOnly)
     
    Do until Rst.EOF
           'Vérifier qu'il ne travaille pas la veille dans une activite avec repos le lendemain
           Dim StrVeille As Integer
                          StrVeille = Nz(DCount("[ID_Activite]", "T_Activites", "[DateDebutActivite]= " & FormatJourUS(DateDebutActivite - 1) & " AND User='" & Rst!User & "' AND (CodeActivite='p') "), 0)
     
          'Autres vérifications à la suite
          '...strLendemain si l'activité que l'on  lendemain
          '.....strIncompatible pour les activites incompatibles
     
          If StrVeille + StrLendemain + StrIncompatible > 0 then
          ' Alors le praticien ne doit pas apparaître dans la liste
          Rst.MoveNext
          Else
          Loop
    Mais comment à la fin retomber sur la sélection du recordsource ainsi "filtré" ?
    J'espère avoir été suffisamment clair.
    Merci d'avance pour vos conseils / Propositions.

  2. #2
    Membre Expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 887
    Par défaut
    Bonjour docjo,
    Tu peux enregistrer le ID de ton record dans une variable et le récupérer ensuite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    If StrVeille + StrLendemain + StrIncompatible > 0 then
          ' Alors le praticien ne doit pas apparaître dans la liste
          'Pas nécessaire si tu met = 0 on peut aller tout de suite au Else
    Else
          maVariable = rst("User")
    End If
          Rst.MoveNext
    Loop
    . Cependant de la façon dont j'ai compris ton code il pourrait y avoir plus d'un record qui serait ok alors lequel choisir?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    525
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Août 2005
    Messages : 525
    Par défaut
    Merci Robert. Je n'avais tout simplement pas vu les choses comme cela.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 12/04/2015, 13h17
  2. Réponses: 11
    Dernier message: 29/10/2013, 12h10
  3. Condition %if à l'intérieur de %let
    Par evilwell dans le forum Macro
    Réponses: 3
    Dernier message: 23/07/2012, 11h04
  4. Erreur ADODB.Recordset error '800a0cc1' sur une condition
    Par jeandormesson dans le forum ASP
    Réponses: 1
    Dernier message: 02/04/2008, 11h05
  5. Recordset: Pb sur une condition (= Null)
    Par sebastien_oasis dans le forum VBA Access
    Réponses: 5
    Dernier message: 23/05/2007, 10h37

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