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

Access Discussion :

Prevenir l'ajout de donnees deja existant dans une table


Sujet :

Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2013
    Messages : 29
    Points : 11
    Points
    11
    Par défaut Prevenir l'ajout de donnees deja existant dans une table
    Bonjour,

    Apres des heures passées sur Google et des dizaines de tests je n'arrive toujours pas à trouver la formule magique pour éviter l'ajout de données déjà existant sur un tableau.

    La situation est la suivant :
    J'ai le tableau "tblSikness" qui a pour rôle de répertorier les absences certifiées des employés :
    -Employe
    -Start_Date
    -End_date
    -Days (nombre de jour)

    La question est la suivant:
    J'ai créé un formulaire à partir de ce tableau. Je voudrais que, lorsque le chef de département clique sur le bouton "ajouter", le formulaire cherche sur le tableau "tblSickness" si on a déjà ajoute une absence pour le même employé avec la même date.
    Exemple :

    Nom "Start Date" "End Date"
    Employe1 01/04/2016 02/04/2016
    Employe1 01/04/2016 02/04/2016

    Ma DB m'a pris des dizaines d'heures pour que ça puisse être fiable et utilisable par le département RH, seulement j'ai encore ce petit problème.

    Quelqu'un pourrait m'aider SVP?

    Merci D'avance

  2. #2
    Expert confirmé Avatar de jerome.vaussenat
    Homme Profil pro
    Formateur Bureautique
    Inscrit en
    Janvier 2011
    Messages
    1 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur Bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 629
    Points : 4 299
    Points
    4 299
    Par défaut
    Salut,

    ce qui me semble le plus simple c'est d'utiliser pour ta table "tblSikness" une clé primaire basée sur les champs :
    -Employe
    -Start_Date

    Comme access fait automatiquement une indexation SANS DOUBLON sur la clé primaire.

    Qu'en penses-tu ?
    Jérôme

    " Je pense donc je suis. Tu es donc j'apprends ". (GCM)

    Si ce message vous à aidé, merci de cliquer sur . Si ce message est résolu, cliquez sur .

  3. #3
    Membre actif Avatar de lucienkany
    Profil pro
    Développeur
    Inscrit en
    Janvier 2004
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Janvier 2004
    Messages : 257
    Points : 220
    Points
    220
    Par défaut
    Bonjour.

    Sur ton bouton de formulaire de saisie.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
     If Not IsNull(DLookup("Employe", "tblSikness", "Employe=" Me.Employe)) Then
    MsgBox "Employé existe"
        Else
    Ceci pour tester si un employé existe dans la table.

    De là, tu peux faire des combinaisons ou des concaténations pour tester les 3 Champs.

    Cordialement,

  4. #4
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2013
    Messages : 29
    Points : 11
    Points
    11
    Par défaut Verifier l'existance de deux champs dans la meme ligne
    Bonjour,
    Merci pour vos réponses, en fait un employé sera déclaré absent plusieurs fois dans l’année, ce qui veut dire que son nom va apparaitre sur plusieurs lignes.

    Ce que je voudrais éviter c'est un chef de département oublie le fait qu'il a déjà déclaré l'absence de son subordonne et qu'il le fasse une 2eme fois. Chose qui va impacter l'assiduité de l'employé.

    J'ai essayé le code suivant mais ça ne fonctionne pas, ça donne une erreur au niveau de Start_Date:

    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
    Private Function IsDuplicateRecord() As Boolean
        On Error Resume Next
        Dim RecordID As Long
        IsDuplicateRecord = False
        RecordID = 0
        RecordID = DLookup("[EmpName]", "tblSickness", "[EmpName]" & Me.EmpName & _
            " AND [Strat_date]=" & Me.Start_Date & " AND [End_Date]=" & Me.End_Date)
            If RecordID <> 0 Then
            MsgBox "Records has already been set"
            IsDuplicateRecord = True
        End If
    End Function
     
    Private Sub Form_BeforeUpdate(Cancel As Integer)
     
        If IsDuplicateRecord Then Cancel = 1
     
    End Sub
    Je suis vraiment novice en Access 2010. Quelqu'un pourrait me dire pourquoi cela ne fonctionne pas?

    Merci d'avance

  5. #5
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 856
    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 856
    Points : 3 427
    Points
    3 427
    Par défaut
    Bonjour Nabil_ENG,

    Les dates doivent être mise entre # et pour EmpName si c'est un champ texte il faut ajouter les ".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RecordID = DLookup("[EmpName]", "tblSickness", "[EmpName]=" & Chr(34) & Me.EmpName & Chr(34) _
    " AND [Strat_date]=#" & Me.Start_Date & "# AND [End_Date]=#" & Me.End_Date & "#")
    Cependant pour ce que tu veux faire un moyen beaucoup plus efficace est une contrainte au niveau de la table.

    Nom : Unique.PNG
Affichages : 122
Taille : 51,5 Ko
    En mode création dans Outils de table, Index, tu inscrits le nom de l'index (à ton choix) puis les 3 champs concernés et en te positionnant sur le premier tu choisis Unique = Oui. Ainsi la protection se fera au niveau de la table, ce qui est beaucoup plus sécuritaire.

    Bonne journée
    Ce qui se conçoit bien s’énonce clairement et les mots pour le dire arrivent aisément. Nicolas Boileau
    Si tout est OK, n'oubliez pas de cliquer sur

Discussions similaires

  1. Ajouter des objets dans un fichier deja existant
    Par schine dans le forum Persistance des données
    Réponses: 1
    Dernier message: 31/01/2013, 02h42
  2. Réponses: 5
    Dernier message: 22/02/2007, 00h20
  3. Réponses: 1
    Dernier message: 22/11/2006, 20h07
  4. Ajouter une donnee a une chaine de charactere
    Par ben_118 dans le forum C++
    Réponses: 4
    Dernier message: 14/09/2006, 18h53
  5. [Eclipse 3.0.1]Ouvrir un projet java deja existant
    Par paca_mike dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 28/04/2005, 14h23

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