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érification de redondances avant ajout dans table [AC-2003]


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 7
    Points : 7
    Points
    7
    Par défaut Vérification de redondances avant ajout dans table
    Salut à tous,

    j'ai un petit problème concernant la vérification des données que je dois ajouter dans une table.

    Ma table se présente de la forme suivante :

    subir (idarret (texte), code_arret (numérique), code_machine (texte), dureeAM (numérique), observation (texte))

    L'idarret est de la forme suivante : AAAAWW-XX avec AAAA l'année en cours, WW la semaine en cours et XX le numéro de l'arrêt qui s'incrémente à chaque nouvel arrêt. Donc en gros, aujourd'hui on aurait 200918-1.

    Voilà maintenant que j'ai situé mon contexte, je vous explique mon problème.

    Je veux qu'avant chaque ajout dans la table "subir" (les champs sont récupérés dans des zones de textes), il y ait un contrôle sur le code_machine et le code_arret saisie qui envoie un message si il y a déjà un enregistrement pour la semaine et l'année en cours.

    C'est un peu compliqué à expliquer donc je donne un exemple :

    Lignes déjà présente dans la table :

    idarret code_arret code_machine dureeAM observation
    200918-1 222 A1 5 blibli
    200918-2 223 A2 9 blabla

    Imaginons maintenant que je veuille rentrer cette nouvelle ligne:

    idarret code_arret code_machine dureeAM observation
    200918-3 222 A1 18

    Cela ne va pas poser de problème à l'ajout car ce n'est pas le même idarret (clé) mais il y a une redondance que je veux signaler à l'utilisateur.

    J'ai donc pensé à utiliser des Recordset avec du SQL mais le problème est qu'il faut faire des comparaisons avec des champs du formulaire et puis il y a 4 conditions, et je ne sais pas comment faire quelque chose de rapide et performant.

    Pour la vérification de l'année et de la semaine, j'utilise la fonction Mid de cette façon:
    Mid(idarret,1,4) = " & ztYear & " And Mid(idarret,5,2) = " & ztNumSemaine & "

    Mais je sais pas si faire des vérifications sur le formulaire à chaque ajout ne va pas alourdir celui ci.

    J'ai vu qu'il existait une fonction FindFirst avec les Recordset, mais je ne vois pas trop comment lui imposer mes 4 conditions.

    Bref si quelqu'un a une piste à me donner, ça m'aiderait beaucoup, je reste dispo pour toute autre question si je n'ai pas été assez clair.

    Merci à ceux qui se pencheront sur le sujet

    A+

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 38
    Points : 32
    Points
    32
    Par défaut
    Tu peux également tester ta table avec un recordset qui devrait ressembler à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim strSQLSubir As String, rstSubir As Variant
     
    strSQLSubir  = "SELECT * FROM subir WHERE idarret like " & chr(34) & Left (idarret,6) & "*" & chr(34) & " AND code_arret = " & code_arret _
    & " AND code_machine = " & code_machine
    Set rstSubir = Currentdb.OpenRecordset (strSQLSubir)
     
    If rstSubir.RecordCount = 0 then MsgBox "Un enregistrement du même type existe déja.", vbInformation
     
    rstSubir.Close
    set rstSubir = Nothing
    Ca permet de vérifier qu'un ou plus d'un autre enregistrement avec ces 3 critères existe dèja et de le signaler.

  3. #3
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 878
    Points : 4 754
    Points
    4 754
    Par défaut
    Jesus, j'ajoute une petite correction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If rstSubir.RecordCount > 0 then ...
    "Always look at the bright side of life." Monty Python.

  4. #4
    Membre chevronné
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Points : 2 178
    Points
    2 178
    Par défaut
    correctif

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    strSQLSubir  = "SELECT * FROM subir WHERE idarret like """ & Left (idarret,6) & "*"" AND code_arret = " & code_arret & " AND code_machine = """ & code_machine & """"
    code_machine étant du texte, il faut l'encadrer de guillemets

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 7
    Points : 7
    Points
    7
    Par défaut Ca marche!
    Yeessss merci beaucoup à vous 3 pour cette solution, ça marche parfaitement maintenant.

    Quand je pense que j'ai passé 2 jours à essayé de le faire, mais ne connaissant pas les Recordset, je faisais un peu n'importe quoi

    Bref, encore merci, je met de ce pas le tag "Résolu"

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

Discussions similaires

  1. association ManyToMany : problème ajout dans table
    Par cecile38 dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 19/07/2011, 09h18
  2. [AC-2002] problème liste déroulante ajout dans table
    Par special-k dans le forum IHM
    Réponses: 9
    Dernier message: 01/10/2010, 18h25
  3. Probleme de requette d'ajout dans table automatiquement
    Par sooprano dans le forum Langage SQL
    Réponses: 2
    Dernier message: 19/11/2008, 16h47
  4. Ajout dans table par formulaire
    Par Elendill dans le forum VBA Access
    Réponses: 5
    Dernier message: 25/05/2007, 19h49
  5. Ajout dans table en sql
    Par lito74 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 24/10/2006, 17h41

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