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 :

ajouter enregistrement sous-formulaire [AC-2003]


Sujet :

VBA Access

  1. #1
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 293
    Points : 91
    Points
    91
    Par défaut ajouter enregistrement sous-formulaire
    bonjour,
    j'ai un sous-formulaire qui viens d'une table,
    j'aimerai ajouter un enregistrement dès que mon champ "date_controle_suivant" arrive à échéance.
    qu'il copie l'enregistrement dont la date est dépassée pour le placer en nouvel enregistrement et que le champ "date_controle_suivant" passe dans le champ "date_controle" et ainsi de suite en suite pour en faire un suivi complet

    en vous remerciant de l'aide

    Marcmarc

  2. #2
    Membre actif
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2007
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2007
    Messages : 169
    Points : 241
    Points
    241
    Par défaut
    Tu devrais pouvoir faire ça avec une requête (?)

    Quelque chose du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO TaTable (date_controle, date_controle_suivant, Champs1, Champs2) 
      SELECT date_controle_suivant, NovelleDate, Champs1, Champs2
      FROM TaTable  WHERE date_controle_suivant < Now();
    (à adapter bien sur a ton code...)

    Ensuite, pour ne pas recopier à chaque fois tous les enregistrements, tu peux:
    • Soit rajouter un champs booléen "EstCopié" à ta table
    • Soit garder la date de ton dernier contrôle et dire que date_controle_suivant doit être compris entre cette date et maintenant

  3. #3
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 293
    Points : 91
    Points
    91
    Par défaut
    Merci, je viens de regarder , je testerais demain, merci

    marcmarc

  4. #4
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 293
    Points : 91
    Points
    91
    Par défaut
    Re bonjour,

    merci pour l'aide , mais je bloque...
    en plus j'ai mis une case a cocher et la date réel du contrôle a effectuer, donc je dois indiquer la date réel et cocher la case si travail fait est ok et a partir de là, il peut copier l'enregistrement pour prévoir et recevoir le nouvel enregistrement, ainsi, le nouvel entretien qui sera prévu
    la date réel deviendra la date du contrôle du nouvel enregistrement et ainsi de suite....

    j'ai placer en annexe une partie de ce que j'ai fais mais , étant très novice dans access surtout dans toutes ces manipulations de nouveaux enregistrements, ainsi, je rame , je rame

    pouvez-vous m'aider a résoudre ce petit soucis

    merci d'avance

    Marcmarc
    Fichiers attachés Fichiers attachés

  5. #5
    Membre actif
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2007
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2007
    Messages : 169
    Points : 241
    Points
    241
    Par défaut
    Salut,

    Si j'ai bien compris, tu as différents employés pour lesquels tu dois faire des tests réguliers de leur dosimètre. Et une personne peut avoir plusieurs dosimètres différents (?)

    Voici différentes remarques:
    • Si tu veux pouvoir gérer efficacement les évènements, tu dois avoir un formulaire en mode continu plutôt qu'en mode feuille de données (et faire la liaison entre les deux formulaires sur le champs numéro employé).
    • Ensuite, j'ajouterais simplement un bouton pour valider et copier l'enregistrement.


    Comme un exemple vaut mieux que des paroles, tu trouveras en PJ ta base modifiée...
    Fichiers attachés Fichiers attachés

  6. #6
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 293
    Points : 91
    Points
    91
    Par défaut
    Merci Lionel, pour cette avancée,
    c'est exactement cela, pour moi en mode formulaire c'est OK aussi, mais dans l'exemple envoyé, je vois que cela fonctionne mais lorsque je passe au second employé , je n'ai aucun champs et dès lors ne sais pas ajouter les infos pour le deuxième employé.

    comment fait on ?

    merci

  7. #7
    Membre actif
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2007
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2007
    Messages : 169
    Points : 241
    Points
    241
    Par défaut
    Ajoute un bouton sur ton formulaire "fml_employe" avec le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Commande10_Click()
        DoCmd.SetWarnings False
        DoCmd.RunSQL "INSERT INTO tbl_dosimetre_employe (fk_employe) " & _
            "VALUES (" & Me.id_employe.Value & ");"
        DoCmd.SetWarnings True
        Me.sfml_dosimetre_employe.Form.Requery
    End Sub
    => Cela ajoutera un enregistrement vide pour l'employé en cours

    PS: N'hésite pas à voter pour les messages si les réponses sont satifaisantes

  8. #8
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 293
    Points : 91
    Points
    91
    Par défaut
    Merci,
    c'est ok pour moi.
    et je vais adapter également sur d'autre formulaires de ma bd.

    je vois que j'ai encore beaucoup à apprendre
    merci de cette aide.

    Marcmarc

  9. #9
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 293
    Points : 91
    Points
    91
    Par défaut
    Bonjour Lionel,

    je viens de remarquer lors de l'encodage du nouvel enregistrement,
    lorsque j’inscris la date réel dans le champ, et que je valide celui-ci
    dans le nouvel enregistrement le champ "date_contrôle" sont différent
    la date et le mois sont inverser ?
    en annexe une copie écran
    Peux tu encore m'aider , j'ai essayer de modifier le code
    qui était "d" en "m" , mais rien n'y a fait...

    en te remerciant

    Marcmarc
    Images attachées Images attachées  

  10. #10
    Membre actif
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2007
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2007
    Messages : 169
    Points : 241
    Points
    241
    Par défaut
    C'est du au fait que lorsqu'une date est insérée via SQL, elle doit être au format mm/dd/yyyy.

    Pour cela, il te faut utiliser la fonction Format avec le paramètre "mm/dd/yyyy" et l'appliquer à tes dates dans la requête.

    Ca donnerait alors ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub cmdValider_Click()
        DoCmd.SetWarnings False
        DoCmd.RunSQL "INSERT INTO tbl_dosimetre_employe (numero_dosimetre_employe, periodicite_dosimetre_employe, " & _
                "date_controle_dosimetre_employe, date_controle_suivant_dosimetre_employe, entreprise_controle_dosimetre_employe, fk_employe) " & _
            "VALUES (" & Me.numero_dosimetre_employe.Value & ", " & Me.periodicite_dosimetre_employe.Value & ", " & _
                "#" & Format(Me.date_reel_controle_dosimetre_employe.Value, "mm/dd/yyyy") & "#, " & _
                "#" & Format(DateAdd("d", Me.periodicite_dosimetre_employe.Value, Me.date_reel_controle_dosimetre_employe.Value), "mm/dd/yyyy") & "#, " & _
                "'" & Me.entreprise_controle_dosimetre_employe.Value & "', " & Me.fk_employe.Value & ");"
        DoCmd.SetWarnings True
        Me.Requery
    End Sub

  11. #11
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 293
    Points : 91
    Points
    91
    Par défaut
    merci,
    cela fonctionne
    ainsi j'ai encore appris qqe chose de très utile et très inintéressant.

    Merci à toi

    Marcmarc

  12. #12
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 293
    Points : 91
    Points
    91
    Par défaut
    bonjour,
    je viens d'adapter un autre sous formulaire identique a ma base pour les dosimetres
    mais j'ai toujours une erreur de syntaxe 3143
    j'ai remplacer dans le code tous ce qui était employe par machine car table identique
    mais je ne vois pas ou se trouve l'erreur...
    Et savoir qu'elle est mon erreur ?
    voila le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Private Sub entretien_fait_dosimetre_machine_Click()
     
        DoCmd.SetWarnings False
        DoCmd.RunSQL "INSERT INTO tbl_dosimetre_machine (numero_dosimetre_machine, periodicite_dosimetre_machine, " & _
                "date_controle_dosimetre_machine, date_controle_suivant_dosimetre_machine, entreprise_controle_dosimetre_machine, fk_machine) " & _
            "VALUES (" & Me.numero_dosimetre_machine.Value & ", " & Me.periodicite_dosimetre_machine.Value & ", " & _
                "#" & Format(Me.date_reel_controle_dosimetre_machine.Value, "mm/dd/yyyy") & "#, " & _
                "#" & Format(DateAdd("d", Me.periodicite_dosimetre_machine.Value, Me.date_reel_controle_dosimetre_machine.Value), "mm/dd/yyyy") & "#, " & _
                "'" & Me.entreprise_controle_dosimetre_machine.Value & "', " & Me.fk_machine.Value & ");"
        DoCmd.SetWarnings True
        Me.Requery
     
    End Sub
    en vous remerciant de l'aide
    j'ai placer en annexe une partie de ce que j'ai fais , je rame, et ne trouve pas mon erreur

    pouvez-vous m'aider a résoudre ce petit soucis
    Un bon week-end a vous tous

    Marcmarc
    Fichiers attachés Fichiers attachés

  13. #13
    Membre actif
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2007
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2007
    Messages : 169
    Points : 241
    Points
    241
    Par défaut
    Salut!

    Le problème vient du champs fk_Machine qui est vide.
    => Il faut que tu mettes l'expression fk_Machine entre guillemets simples
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '" & Me.fk_machine.Value & "'
    Remarque additionnelle:
    Plus globalement, attention au type de tes champs!
    Par exemple le champ numero_dosimetre_machine est un champ texte dans la table tbl_dosimetre_machine. Donc pour être propre, il te faudrait soit mettre l'expression entre guillemets simples dans la requête, soit changer le type de champ en Numérique.

  14. #14
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 293
    Points : 91
    Points
    91
    Par défaut
    Bonjour,

    Merci Lionel,
    j'ai changer et remit le champ en numérique, enlever mon sf et je l'ai refait avec la bonne relation et remplacé, maintenant, cela fonctionne correctement et effectivement , la relation n'était pas identique comme ma table employe.

    En te remerciant de cette aide précieuse et surtout pour toutes les infos et les astuces.

    bon journée

    Marcmarc

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

Discussions similaires

  1. Ajout enregistrement sous formulaire avec onglet
    Par maxime350 dans le forum IHM
    Réponses: 5
    Dernier message: 04/06/2008, 08h10
  2. Pb enregistrement sous-formulaire
    Par gueff dans le forum Access
    Réponses: 3
    Dernier message: 08/07/2006, 11h23
  3. renversement des enregistrements sous formulaire
    Par sebos21 dans le forum Access
    Réponses: 2
    Dernier message: 25/05/2006, 10h48
  4. suppression enregistrement sous formulaire
    Par fscli dans le forum Access
    Réponses: 6
    Dernier message: 24/05/2006, 16h37
  5. Enregistrer sous-formulaire meme si pas rempli
    Par mat75019 dans le forum Access
    Réponses: 3
    Dernier message: 22/04/2006, 08h32

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