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

Langage SQL Discussion :

[ACCESS 2003] : Ajout d'enregistrement sous certaines conditions


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 190
    Points : 72
    Points
    72
    Par défaut [ACCESS 2003] : Ajout d'enregistrement sous certaines conditions
    Bonjour à tous, j'ai fais mon post dans le forum ACCESS, et on m'a conseillé de le faire sur ce forum ; voilà pourquoi je suis ici.

    Mon problème est le suivant :

    Sous ACCESS 2003, j'ai deux tables CONTRATS et AVENANTS ayant des champs identiques nommés différemment, et cela parce que je souhaite ajouter des enregistrements de la table CONTRATS vers la Table AVENANTS sous certaines conditions ; je schématise :
    Voici mes deux tables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    CONTRATS
    N°_Ct   Type_Ct   Debut_Ct   Fin_Ct       Heure_Ct   DateAvenant_Ct
    -------  -------    --------    --------  ---------   ---------------- 
         1         CDD       10/08/06   31/08/06       35         
         2         CDI        01/01/06                      35        06/08/06
         3         CDI        02/03/06                      30
     
    AVENANTS
    N°_Av    NumCt_Av   TypeCt_Av   DebutCt_Av   FinCt_Av       HeureCt_Av   Avenant_Av
    -----     --------    ---------    --------    --------      ---------   ----------------
    Ce que j'aimerais, c'est ajouter les enregistrements pour lesquels N°_Ct et DateAvenant_Ct ne se trouvent pas déjà dans la table AVENANTS.
    Ce qu'il faut comprendre, c'est que quand je rempli ou que je modifie le champ DateAvenant_Ct, l'enregistrement correspondant doit s'ajouter à la table AVENANTS pour que, juste après, je puisse modifier le même enregistrement.
    C'est le principe des modifications de contrat (ou plus communément appelé avenants au contrat de travail).

    j'espère que j'était clair, sinon je m'explique à nouveau.

    Merci

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Bonsoir Eric26

    A quoi correspondent N°_Av et NumCt_Av ?
    Quel est le lien avec le N°_Ct de la table CONTRATS?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 190
    Points : 72
    Points
    72
    Par défaut
    Bonsoir finesse20,

    N°_Av = numéro de l'enregistrement dans la table AVENANTS
    NumCt_Av = numéro du contrat ayant subi un avenant (=une modif)
    En fait N°_Ct = NumCt_Av
    les deux tables sont liées par le numéro de contrat
    N°_Ct = NUMERO AUTO
    NumCt_Av = NUMERIQUE

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Est-ce que ce code correspond à ce que tu veux obtenir?


    1.INSERT INTO Avenants ( NumCt_Av, Type_Av, Debut_Av, Fin_Av, Heure_Av, DateAvenant_Av )
    2.SELECT Contrats.Num_ct, Contrats.Type_Ct, Contrats.Debut_Ct, Contrats.Fin_Ct, Contrats.Heure_Ct, Contrats.DateAvenant_Ct
    3.FROM Contrats
    4.WHERE (((Contrats.Num_ct) Not In (select Avenants.[NumCt_Av] from Avenants)) or ((Contrats.DateAvenant_Ct) Not In (select Avenants.[DateAvenant_Av] from Avenants)));

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 190
    Points : 72
    Points
    72
    Par défaut
    Citation Envoyé par finesse20
    Est-ce que ce code correspond à ce que tu veux obtenir?


    1.INSERT INTO Avenants ( NumCt_Av, Type_Av, Debut_Av, Fin_Av, Heure_Av, DateAvenant_Av )
    2.SELECT Contrats.Num_ct, Contrats.Type_Ct, Contrats.Debut_Ct, Contrats.Fin_Ct, Contrats.Heure_Ct, Contrats.DateAvenant_Ct
    3.FROM Contrats
    4.WHERE (((Contrats.Num_ct) Not In (select Avenants.[NumCt_Av] from Avenants)) or ((Contrats.DateAvenant_Ct) Not In (select Avenants.[DateAvenant_Av] from Avenants)));
    Dis moi, pour l'executer, c'est bien comme ça hein ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Av_Ct_AfterUpdate()
        Dim SQL As String
            SQL = "INSERT INTO Avenants ( NumCt_Av, Type_Av, Debut_Av, Fin_Av, Heure_Av, DateAvenant_Av )" & _
                     "SELECT Contrats.Num_ct, Contrats.Type_Ct, Contrats.Debut_Ct, Contrats.Fin_Ct, Contrats.Heure_Ct, Contrats.DateAvenant_Ct" & _
                     "FROM Contrats" & _
                     "WHERE (((Contrats.Num_ct) Not In (select Avenants.[NumCt_Av] from Avenants)) or ((Contrats.DateAvenant_Ct) Not In (select Avenants.[DateAvenant_Av] from Avenants)));"
        DoCmd.RunSQL SQL
        End Sub

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Private Sub Av_Ct_AfterUpdate()

    Dim strSQL As String
    strSQL = "INSERT INTO Avenants ( NumCt_Av, Type_Av, Debut_Av, Fin_Av, Heure_Av, DateAvenant_Av )" & _
    "SELECT Contrats.Num_ct, Contrats.Type_Ct, Contrats.Debut_Ct, Contrats.Fin_Ct, Contrats.Heure_Ct, Contrats.DateAvenant_Ct" & _
    "FROM Contrats" & _
    "WHERE (((Contrats.Num_ct) Not In (select Avenants.[NumCt_Av] from Avenants)) or ((Contrats.DateAvenant_Ct) Not In (select Avenants.[DateAvenant_Av] from Avenants)));"
    CurrentDB.Execute(strSQL)
    End Sub

    si la chaîne SQL est trop longue tu peux faire comme ça :

    strSQL="INSERT INTO Avenants ( NumCt_Av, Type_Av, Debut_Av, Fin_Av, Heure_Av, DateAvenant_Av )"
    strSQL= strSQL & "SELECT Contrats.Num_ct, Contrats.Type_Ct, Contrats.Debut_Ct, Contrats.Fin_Ct, Contrats.Heure_Ct, "

    etc jusqu'à la fin de la requête

    sinon tu peux enregistrer ta requête normalement et l'exécuter avec

    DoCmd.OpenQuery("Nomdela requete")

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 190
    Points : 72
    Points
    72
    Par défaut
    J'ai toujours le même problème : quelque soit le champ que je modifie, il m'execute la requête alors que normalement, il devrait l'executer seulement après mise à jour du champ Av_Ct, et pas sur un autre champ (ça, j'avoue que je n'arrive pas à comprendre).

    En plus ça ne marche pas : il ajoute tout, même les enregistrements qui ont déjà été ajouté à la table AVENANTS, ce qui fait que je me retrouve avec des doublons, chose que je ne veux pas justement.

Discussions similaires

  1. enregistrer sous certaines conditions
    Par vidda72 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 19/06/2014, 16h03
  2. Réponses: 2
    Dernier message: 07/11/2013, 15h21
  3. Ajouter un champ dans une JSP sous certaines conditions
    Par intel42 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 11/04/2012, 08h59
  4. [AC-2007] Ajouter des enregistrement sous condition
    Par Gorane dans le forum IHM
    Réponses: 13
    Dernier message: 08/12/2010, 11h14
  5. Réponses: 4
    Dernier message: 08/08/2006, 15h04

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