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 :

Alimenter table à partir de date


Sujet :

Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 30
    Points : 17
    Points
    17
    Par défaut Alimenter table à partir de date
    Bonjour,

    Voici mon souci

    Dans le formulaire F_encodageDate j'ai 6 dates :
    Les 2 premières dates correspondent au calendrier global
    - txtDateDebut
    - txtDateFin
    Les 2 date suivante correspondent au date de début et de fin de la période "RFP" (les dates doivent être comprises dans le calendrier globale)
    - DateRFPDebut
    - DateRFPFin
    Les 2 date suivante correspondent au date de début et de fin de la période "RIM" (les dates doivent être comprises dans le calendrier globale)
    - DateRIMDebut
    - DateRIMFin

    A partir de ces 6 dates je souhaite alimenter la table T_DateDeSuivi
    Dans cette table il y a les champs suivants :
    - CodeDateSuivi (ce champ doit être alimenté obligatoirement de 1 à 15 ==> donc 15 lignes maximum dans cette table)
    - SemaineNum (corresond au numéro de semaine)
    - DateSemaine (correspond au dernier jour de chaque semaine)
    - CodeDateSuivi_RFP (numéroté de 1 à X => à partir de la DateRFPDebut et jusqu'à la DateRFPFin choisies dans le formulaire)
    - CodeDateSuivi_RIM (numéroté de 1 à X => à partir de la DateRIMDebut et jusqu'à la DateRIMFin choisies dans le formulaire)

    J'avais déjà participé à ce forum dans une autre discussion donc je mets en PJ la BDD.
    Le problème étant que le CodeDateSuivi n'est pas alimenté de 1 à 15.

    Pourriez-vous regarder svp ?
    Fichiers attachés Fichiers attachés

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Bonjour,

    Je ne comprends pas ce que tu fais.

    C'est quoi RFP et RIM ?

    Donne un exemple complet d'un cas en donnant les 6 dates et en montrant le résultat que tu voudrais obtenir.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    Voici un exemple de ce que je souhaite faire

    Date de Recette Calendrier Global
    I Date début : 11/07/2014
    I DIate de fin : 17/10/2014

    Date de Recette RFP
    I Date début : 11/07/2014
    I DIate de fin : 10/10/2014

    Date de recette RIM
    I Date début : 01/08/2014
    I DIate de fin : 17/10/2014

    T_Date de suivi
    "CodeDateSuivi" "Semaine" "Date semaine" "CodeDateSuivi_RFP" "CodeDateSuivi_RIM"
           1            28      11/07/2014         1                   (vide)
           2            29      18/07/2014         2                   (vide)
           3            30      25/07/2014         3                   (vide)
           4            31      01/08/2014         4                     1
           5            32      08/08/2014         5                     2
           6            33      15/08/2014         6                     3
           7            34      22/08/2014         7                     4
           8            35      29/08/2014         8                     5
           9            36      05/09/2014         9                     6
          10            37      12/09/2014        10                     7
          11            38      19/09/2014        11                     8
          12            39      25/09/2014        12                     9
          13            40      03/10/2014        13                    10
          14            41      10/10/2014        14                    11
          15            42      17/10/2014      (vide)                  12

  4. #4
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Avec les données que tu montres et un clic sur chacun des boutons (Encoder date...)

    J'obtiens le résultat souhaité, sauf pour la 1re colonne (car autonum => commence au N° suivant de la précédente exécution).



    `
    À part, le souci de la 1re colonne, quel est le problème ?
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    Les soucis sont :
    - effectivement la 1ere colonne doit obligatoirement commencer par 1
    - si l'utilisateur se trompe il faudrait ecraser les donnée par les nouvelles. Or la macro crée de nouvelle ligne à chaque fois au lieu d'écraser les anciennes données

  6. #6
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Cette fois, c'est clair.

    Un peu de patience, on cherche.

    Au fait, pourquoi 3 boutons ? On peut déclencher les trois étapes en un seul clic.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  7. #7
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    À quoi sert la source de F_encodageDate ? (Je l'ai supprimée.)

    Voici ce que j'ai modifié dans ton code :

    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  8. #8
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    Ca fonctionne très bien, mais malheureusement il y a un problème.
    En effet, la table T_DateSuivi qui est liée à plusieurs autres tables.
    Dans la vraie BDD il n'est pas possible de supprimer les lignes car il a une liaison avec la clé primaire CodeDateSuivi
    J'ai l'erreur suivante : "3720 : Impossible de modifier le champ "CodeDateSuivi". Il fait partie d'une ou plusieurs relation"
    C'est pour cela qu'il est indispensable que le CodeDateSuivi soit toujours de 16 lignes avec un CodeDateSuivi (1 à 16).

    Serait il possible d'avoir le même résultat qu'à présent mais sans supprimer les lignes à chaque mise à jour ?
    On pourrait laisser tout le temps les 16 lignes avec les CodeDateSuivie (1 à 16) et mettre à jour les autres données ?

    Cette dernière solution résolverait mon problème

  9. #9
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    On pourrait laisser tout le temps les 16 lignes avec les CodeDateSuivie (1 à 16) et mettre à jour les autres données ?

    Pas compris !

    Dans ton 1er exemple, il y avait 15 lignes.

    Dans le 2d, 16.

    Quoi qu'il en soit ce nombre (de semaines) va chaque fois dépendre de la période.

    Pourquoi ce N° est-il autonum dans la table ?

    Bref, pour t'aider, je dois comprendre le contexte.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  10. #10
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    (Il s'agit bien de 16 lignes méaculpa pour mon 1er exemple )

    Mais le nombre de ligne ce n'est pas bien grave je peux faire un contrôle dessus pour interdire une plage au dessus de 16 semaines.
    Et dans la réalité il n'y a jamais plus de 16 semaines, et si il y en a moins ce n'est pas dramatique de laisser vide les lignes


    Eh bien voici le contexte de ma BDD
    Elle sert à suivre l'avancement d'une équipe de recetteurs durant 2 périodes données (RFP et RIM).

    La BDD pour être paramètrée a plsueiurs Tables : T_DateDeSuivi ; T_Projet ; T_ADG ; T_Outil ... dans ces table la colonne clé primaire et le nombre de ligne ne changent jamais (CodeDateSuivi ; CodePojet ; CodeADG ; CodeOutil ...)
    La T_Avancement_Modèle reprend CodeDateSuivi, CodeADG, CodeOutil... ==> il a 16 lignes x nb d'ADG (acte de gestion)

    A chaque campagne de test, on rattache à chaque personne de l'équipe des projets.
    Donc j'ai une requêtte qui utilise la T_Avancement_Modèle est qui copie les lignes et qui les collent dans la T_Avancement en ajoutant le CodeIR (Nom du recetteur) et le CodeProjet (nom du projet) qui lui est rattaché.
    Après j'ai une autre requête qui supprime les ADG non utile pour le recetteur

    Voici en gros le contexte

    Donc c'est pour cela qu'il faut que ma Table T_DateDeSuivi conserve le même nombre de ligne

  11. #11
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Je n'ai pas tout compris, mais ceci correspond à ce que tu demandes : je passe par une table T_Tampon et j'en transfère ensuite le contenu dans T_DateDeSuivi en gardant la 1re colonne intacte.

    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
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    Option Compare Database
    Option Explicit
    Private Sub btnEncoder_Click()
    Dim SemaineVal As Integer
    Dim idate As Date
    Dim strsql As String
    'Vérifier que les valeurs saisies sont bien des dates
    If IsDate(Me.txtDateDebut) And IsDate(Me.txtDatefin) Then
    'Vérifier l'ordre des dates saisies
        If Me.txtDateDebut < Me.txtDatefin Then
            'Purger la table T_Tampon
            DoCmd.SetWarnings False
            DoCmd.RunSQL "DELETE T_CodeDateSuivi FROM T_Tampon;"
            'Réinitialiser CodeDateSuivi
            DoCmd.RunSQL "ALTER TABLE [T_Tampon] ALTER [CodeDateSuivi] COUNTER(1,1) ;"
            'Boucler la valeur avec un pas de 7
            For idate = Me.txtDateDebut To Me.txtDatefin Step 7
                SemaineVal = Semaine(idate)
                'Créer la requête SQL et ajouter dans T_Tampon
                strsql = "INSERT INTO T_Tampon ( SemaineNum, DateSemaine )" _
                        & " VALUES (" & SemaineVal & ",#" & Format(idate, "mm/dd/yyyy") & "#)"
                DoCmd.RunSQL strsql
            Next idate
            'Réinitialiser les colonnes (autres que CodeDateSuivi) de T_DateDeSuivi
            DoCmd.RunSQL "UPDATE T_DateDeSuivi SET T_DateDeSuivi.SemaineNum = Null," _
                      & "T_DateDeSuivi.DateSemaine = Null, T_DateDeSuivi.CodeDateSuivi_RFP = Null," _
                      & "T_DateDeSuivi.CodeDateSuivi_RIM = Null;"
            'Regarnir T_DateDeSuivi avec T_Tampon
            '(transfert ligne par ligne, des colonnes de T_Tampon dans T_DateDeSuivi)
            DoCmd.RunSQL "UPDATE T_DateDeSuivi INNER JOIN T_Tampon " _
                               & "ON T_DateDeSuivi.CodeDateSuivi = T_Tampon.CodeDateSuivi " _
                               & "SET T_DateDeSuivi.SemaineNum = [T_Tampon].[SemaineNum], " _
                               & "T_DateDeSuivi.DateSemaine = [T_Tampon].[DateSemaine], " _
                               & "T_DateDeSuivi.CodeDateSuivi_RFP = [T_Tampon].[CodeDateSuivi_RFP], " _
                               & "T_DateDeSuivi.CodeDateSuivi_RIM = [T_Tampon].[CodeDateSuivi_RIM];"
            DoCmd.SetWarnings True
        Else
            MsgBox " La date de fin est antérieure à la date de début ! corrigez !"
            Exit Sub
        End If
    Else
        MsgBox "Vous n'avez pas saisi des dates !"
        Exit Sub
    End If
    Me.T_DateDeSuivi.Requery
    End Sub
     
    '---------------------------------------------------------------------------------------
    ' CopyRight : Ce code est librement ditribuable, copiable et imprimable, sous la seule
    '             contrainte de laisser visible la totalité des commentaires identifiant
    '             l'auteur de ce code, ses coordonnées et ce copyright et ce, sans
    '             limitation de durée dans le temps.
    '---------------------------------------------------------------------------------------
    ' Module    : modDateTimeFunctions
    ' Date      : vendredi 21 décembre 2007 13:53
    ' Auteur    : Maxence Hubiche (mhubiche@club-internet.fr -  06.18.61.14.35)
    '---------------------------------------------------------------------------------------
     
    Public Function Semaine(LaDate As Variant) As Variant
    '---------------------------------------------------------------------------------------
    ' Procedure : Semaine
    ' Date      : vendredi 21 décembre 2007 13:56
    ' Auteur    : Maxence Hubiche (mhubiche@club-internet.fr -  06.18.61.14.35)
    ' Objet     : Renvoie le numéro de la semaine pour le calendrier français
    ' Spec      : Cette fonctino empèche le débordement en semaine 53, en mettant les jours
    '               de la semaine 53 en semaine 1
    ' Retour    : Renvoie un Byte (n° de la semaine) ou Null si l'argument n'était pas une
    '               date
    '---------------------------------------------------------------------------------------
    '
        Dim bytTemp As Byte
        If IsDate(LaDate) Then
            bytTemp = CByte(DatePart("ww", LaDate, vbMonday, vbFirstFourDays)) Mod 53
            If bytTemp = 0 Then bytTemp = 1
            Semaine = bytTemp
        Else
            Semaine = Null
        End If
    End Function
     
    Private Sub btnencoderRFP_Click()
    Dim semaineRFP As Integer
    Dim idate As Date
    Dim strsql As String
    'Vérifier que les valeurs saisies sont bien des dates
    If IsDate(Me.DateRFPDebut) And IsDate(Me.DateRFPFin) Then
    'Vérifier l'ordre des dates saisies
        If Format(Me.DateRFPDebut, "mm/dd/yyyy") < Format(Me.DateRFPFin, "mm/dd/yyyy") Then
            'Boucler la valeur avec un pas de 7
            semaineRFP = 1
            For idate = Me.DateRFPDebut To Me.DateRFPFin Step 7
     
             DoCmd.SetWarnings False
                'Créer la requête SQL de mise à jour
                strsql = "UPDATE T_DateDeSuivi SET T_DateDeSuivi.CodeDateSuivi_RFP =" & semaineRFP _
                        & " WHERE T_DateDeSuivi.SemaineNum=" & Semaine(idate)
                DoCmd.RunSQL strsql
                semaineRFP = semaineRFP + 1
            Next idate
            DoCmd.SetWarnings True
     
     
        Else
            MsgBox " La date de fin est antérieure à la date de début ! corrigez !"
            Exit Sub
        End If
    Else
        MsgBox "Vous n'avez pas saisi des dates !"
        Exit Sub
    End If
    Me.T_DateDeSuivi.Requery
     
    End Sub
     
    Private Sub btnEncoderRIM_Click()
    Dim semaineRIM As Integer
    Dim idate As Date
    Dim strsql As String
    'Vérifier que les valeurs saisies sont bien des dates
    If IsDate(Me.DateRIMDebut) And IsDate(Me.DateRIMFin) Then
    'Vérifier l'ordre des dates saisies
        If Format(Me.DateRIMDebut, "mm/dd/yyyy") < Format(Me.DateRIMFin, "mm/dd/yyyy") Then
            'Boucler la valeur avec un pas de 7
            'Commencer la numérotation RIM à "1"
            semaineRIM = 1
            For idate = Me.DateRIMDebut To Me.DateRIMFin Step 7
     
            DoCmd.SetWarnings False
                'Créer la requête SQL  de mise à jour
                strsql = "UPDATE T_DateDeSuivi SET T_DateDeSuivi.CodeDateSuivi_RIM =" & semaineRIM _
                        & " WHERE T_DateDeSuivi.SemaineNum=" & Semaine(idate)
                DoCmd.RunSQL strsql
                semaineRIM = semaineRIM + 1
            Next idate
            DoCmd.SetWarnings True
     
     
        Else
            MsgBox " La date de fin est antérieure à la date de début ! corrigez !"
            Exit Sub
        End If
    Else
        MsgBox "Vous n'avez pas saisi des dates !"
        Exit Sub
    End If
    Me.T_DateDeSuivi.Requery
     
    End Sub
    Fichiers attachés Fichiers attachés
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  12. #12
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    Merci beaucoup ca marche nikel
    J'essaie de transposer le code dans la BDD rééle et après je mettrai résolu

  13. #13
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    J'ai une erreur 3259

    En effet j'ai ajouté une table pour conserver les 6 dates saisies dans le formulaire pour que l'utilisateur puisse les modifier sans les resaisir

    Erreur d'éxécution 3259 - Type de champ de données non valide


    Pourriez vous regarder svp !
    Fichiers attachés Fichiers attachés

  14. #14
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Probablement parce que T_Tampon n'avait jamais rien contenu. Pour mon test, je l'avais créée en copiant T_DateDeSuivi.

    Vois, maintenant ça fonctionne.
    Fichiers attachés Fichiers attachés
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

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

Discussions similaires

  1. Alimenter une table à partir de fichiers
    Par remys dans le forum kettle/PDI
    Réponses: 0
    Dernier message: 02/02/2009, 14h51
  2. Réponses: 4
    Dernier message: 07/08/2008, 17h12
  3. Alimentation tables complexe ? Date.
    Par Sw3eT dans le forum Requêtes
    Réponses: 2
    Dernier message: 21/05/2008, 20h33
  4. alimenter une table à partir d'un fichier log
    Par info_look dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 07/01/2008, 13h05
  5. Alimentation d'une table de dimension date
    Par kluh dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 01/07/2005, 14h34

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