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

Modélisation Discussion :

Créer deux conditions


Sujet :

Modélisation

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2007
    Messages : 79
    Points : 24
    Points
    24
    Par défaut Créer deux conditions
    Bonjour

    j'aimerais créer deux conditions dans une table access:

    J'ai un champ "numauto" qui s'incrémente et un champ date qui affiche l'heure et la date du jour

    - Je souhaite que le nbre d'entrées dans ma base soit limité à 50/jour et si ça dépasse 50 que le champ date affiche automatiquement le jour suivant

    - Je souhaite que la sasie dans ma base s'arrète tous les jours à 15h30 au dela il faut que le champ date affiche la date du jour suivant

    Je voudrais au moins un début de réponse la dessus. Que feriez vous ? une macro ? ou autre ?

    D'avance merci de votre aide

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Je ferais la fonction suivante pour la valeur du champ date.

    Attention ce code suppose que tu es mono-utilisateur !

    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
    18
    19
    20
     
    public function CalculerDate() as date
      dim result as date
     
      dim nbEnr as long
      nbEnr=DCount("MonChampDate","MaTable","[MonChampDate]=#" & Date() & "#"
     
      if nbEnr > 50 then
          result=DateAdd("d",1,date())
        else
     
          if time() > timeserial(15,30,00) then
              result=DateAdd("d",1,date())
            else
              result=date()
          end if
     
      end if
     
    end function
    à mettre dans ton from de saisie, sur BeforeInsert ou lorsque tu es sur un nouvelle enr, ou encore comme valeur par défaut (DefaultValue=CalcuelerDate())

    A+

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2007
    Messages : 79
    Points : 24
    Points
    24
    Par défaut
    Bonjour

    Tout d'abord un grand merci pour la rapidité de la réponse

    Quand tu dis à mettre dans ton from de saisie, ça veut dire quoi ?
    Moi en fait j'ai créé ma table , un formulaire et une page web pour que les utilisateurs saisissent à partir de cette page.
    Autre problème je ne suis pas mono utilisateur, cette page sera accessible via le réseau par plusieurs utilisateurs

    Encore merci pour votre aide prècieuse

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2007
    Messages : 79
    Points : 24
    Points
    24
    Par défaut
    Bonjour à tous

    pouvez vous m'aider pour réaliser les 2 conditions.

    Est ce possible ? sachant que les utilisateurs vont saisir dans la table via une page d'accès au données créée avec access

    Merci pour votre aide

  5. #5
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Du moment qu'il y a plusieurs utilisateurs, c'est plutot compliqué, rien ne garantit que deux insertions se feront en même temps

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Citation Envoyé par ju3979
    Bonjour

    Tout d'abord un grand merci pour la rapidité de la réponse

    Quand tu dis à mettre dans ton from de saisie, ça veut dire quoi ?
    Moi en fait j'ai créé ma table , un formulaire et une page web pour que les utilisateurs saisissent à partir de cette page.
    Autre problème je ne suis pas mono utilisateur, cette page sera accessible via le réseau par plusieurs utilisateurs

    Encore merci pour votre aide prècieuse
    OK, ça change pas mal de chose.

    Il va falloir que tu fasse une fonction qui realise une exclusion mutuelle (c-a-d'un moyen de s'assurer qu'il n'y a qu'une seule personne à la fois) et je n'ai aucune idée comment le mettre en oeuvre à partir du Web.

    Avant de mettre des efforts là dedans, cette fonctionnalité est-elle absolument indispensable ?

    Peut-être peux-tu la gérer à posteriori, c-a-d que une fois toutes tes commandes rentrées ex vers minuit, tu leur attribue une date calculée avec la fonction ci-dessus.

    Je mets tout même ici un exemple de code qui gère l'exclusion mutuelle pour le calcul d'un numéro de dossier.

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
     
    Public Sub CalculerNouveauNumDossier(prmClefPeriode As Long, prmTypeFacturation As Variant)
        'La création du compteur doit être fait lors de la création de la période.
     
        If Not MODE_DEBUG Then
            On Error GoTo Err_CalculerNouveauNumDossier
        End If
     
        Dim db As Database: Set db = CurrentDb
        Dim ClefTypeFacturation As Long
        Dim CodeTypeFacturation As String
     
        Select Case VarType(prmTypeFacturation)
            Case vbString
                ClefTypeFacturation = LireClefTypeFacturation((prmTypeFacturation))
                CodeTypeFacturation = prmTypeFacturation
            Case vbLong, vbInteger, vbDouble
                ClefTypeFacturation = prmTypeFacturation
                CodeTypeFacturation = LireCodeTypeFacturation((prmTypeFacturation))
            Case Else
                Error 5
        End Select
     
        'Lire l'année du compteur
        Dim Annee As Integer
        Dim rPeriode As Recordset: Set rPeriode = db.OpenRecordset("Periode", dbOpenDynaset)
        Call rPeriode.FindFirst("[Clef]=" & prmClefPeriode)
     
        If Not rPeriode.NoMatch Then
                Annee = Year(rPeriode![DateDebut])
            Else
                Error 3709: 'Clef non trouvée
        End If
     
        rPeriode.Close: Set rPeriode = Nothing
     
        m_Annee = Annee
     
        'Lire le code court
        Dim rTypeFacturation As Recordset: Set rTypeFacturation = db.OpenRecordset("TypeFacturation", dbOpenDynaset)
        rTypeFacturation.FindFirst ("[Clef]=" & ClefTypeFacturation)
     
        If Not rTypeFacturation.NoMatch Then
                m_Code = rTypeFacturation![CodeCourt]
            Else
                Error 3709: 'Clef non trouvée
        End If
     
        rTypeFacturation.Close: Set rTypeFacturation = Nothing
     
        'Calculer le nouveau numéro séquentiel
        Dim rCompteur As Recordset: Set rCompteur = db.OpenRecordset("Compteur", dbOpenDynaset)
        Call rCompteur.FindFirst("[ClefTypeFacturation]=" & ClefTypeFacturation & " and [Annee]=" & Annee)
     
        Dim nouveauNumSeq As Long
        If Not rCompteur.NoMatch() Then
     
    RepriseSurVerouillage:
     
                rCompteur.Edit
                nouveauNumSeq = rCompteur![DernierNumSeq] + 1
                rCompteur![DernierNumSeq] = nouveauNumSeq
                rCompteur.Update
            Else
                Error 5: 'Clef non trouvée
        End If
     
        rCompteur.Close: Set rCompteur = Nothing
        db.Close: Set db = Nothing
     
        m_NumSequence = nouveauNumSeq
     
    Exit_CalculerNouveauNumDossier:
        Exit Sub
     
    Err_CalculerNouveauNumDossier:
        Select Case Err.Number
            Case 3046, 3158, 3186, 3187, 3188, 3202, 3218, 3260, 3330, 3624
                'Boucle tant que le compteur est vérouillé
                Resume RepriseSurVerouillage
     
            Case Else
                Call AfficherMessErrStandard(Err)
                Resume Exit_CalculerNouveauNumDossier
        End Select
     
    End Sub

Discussions similaires

  1. [VBA-E] Countif avec deux conditions
    Par bonilla dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/09/2007, 15h30
  2. une colonne repondant a la fois a deux conditions
    Par kase74 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/08/2006, 09h14
  3. [FLASH MX2004] Deux conditions dans une boucle
    Par pierrot10 dans le forum Flash
    Réponses: 1
    Dernier message: 06/11/2005, 16h31
  4. Peut on faire un selon à deux conditions ?
    Par Celia1303 dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 18/10/2005, 16h16
  5. Instructions select case à deux conditions
    Par Celia1303 dans le forum Access
    Réponses: 15
    Dernier message: 14/10/2005, 16h22

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