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

IHM Discussion :

Valeur par défaut d'un champ [AC-2010]


Sujet :

IHM

  1. #1
    Membre régulier
    Inscrit en
    Mai 2012
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 219
    Points : 94
    Points
    94
    Par défaut Valeur par défaut d'un champ
    Bonjour à tous !

    Je viens vers vous car je n'arrive pas à résoudre un problème ayant trait au remplissage automatique d'un champs ou sa valeur par défaut :

    Je possède une table affectation (un) qui est reliée à une table candidature (plusieurs) et à une table horaires (plusieurs).

    La table affectation contient simplement le nom de l'affectation du salarié (par exemple boisvert ou rodin). Cette dernière est sélectionnée dans la table candidature (la candidature 1 est affectée à boisvert).

    La table horaire contient l'ensemble des heures effectuées par le salarié avec une candidature pour une affectation, par exemple le salarié 1 de la candidature 1 a travaillé tant d'heures le 15 janvier au boisvert.

    J'aimerais que la clé étrangère de la table horaire (Code_affectation donc) soit automatiquement la même que celle de la table candidature lorsque je créé une nouvelle ligne afin d'éviter de devoir la re-sélectionner dans la liste.

    J'espère avoir été suffisamment clair, n'hésitez pas à me demander des précisions,

    Cordialement,

    Sardaucar

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 107
    Points : 5 230
    Points
    5 230
    Par défaut
    Bonjour,

    Une solution est de modifier (en VBA) la valeur par défaut du champ sur l'événement "enter" ou "getfocus"

  3. #3
    Membre régulier
    Inscrit en
    Mai 2012
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 219
    Points : 94
    Points
    94
    Par défaut
    J'ai essayé comme ça mais ça nécessite d'attendre que l'on se positionne sur le champs adéquat avant qu'il se remplisse. J'aurai aimé savoir s'il était possible de le créer à la création de la ligne.

    Pour créer les lignes j'ai un bouton avec cette commande :

    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
    Private Sub Commande31_Click()
     
        DtDeb = Me.Date_début
        DtFin = Me.Date_fin
        Num_Contrat = Me.ID_contrat
        '
        For Boucle = 0 To DateDiff("d", DtDeb, DtFin)
            MaDate = DtDeb + Boucle
            DoCmd.SetWarnings False
            DoCmd.RunSQL ("INSERT INTO T_horaires ( Code_contrat, Date_horaire ) SELECT " & Num_Contrat & " AS ID_contrat, #" & Format(MaDate, "m/d/yyyy") & " # AS Date_horaire;")
            DoCmd.SetWarnings True
     
        Next
     
        Me.Requery
     
    End Sub
    Puis-je intégrer dans ce code un remplissage automatique de mon champs pour chaque ligne créée ?

  4. #4
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 107
    Points : 5 230
    Points
    5 230
    Par défaut
    Dans ce cas pourquoi ne pas mettre Code_affectation dans l'insert ???

    Sinon la valeur par défaut peut aussi être renseignée ailleurs (dès que change Code_affectation par exemple)

  5. #5
    Membre régulier
    Inscrit en
    Mai 2012
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 219
    Points : 94
    Points
    94
    Par défaut
    j'ai essayé en mettant ceci dans l'instruction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL ("INSERT INTO T_horaires ( Code_contrat, Date_horaire ) SELECT " & Code_affectation & " AS ID_affectation #" & Num_Contrat & " AS ID_contrat, #" & Format(MaDate, "m/d/yyyy") & " # AS Date_horaire;")
    Mais ça me renvoie une erreur dans la clause insert into...

  6. #6
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 107
    Points : 5 230
    Points
    5 230
    Par défaut
    Il ne faut pas de select puisque les données sont connues
    Et puis il faut mettre autant de données de chaque coté et faire gaffe aux , & #

    Par ailleurs currentdb.execute a une meilleure gestion d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    currentdb.execute "insert into T_horaires (Code_affectation, Code_contrat, Date_horaire) values (" & Code_affectation & "," & Num_Contrat & ", #" & Format(MaDate, "m/d/yyyy") & "#;"), dbFailOnError

  7. #7
    Membre régulier
    Inscrit en
    Mai 2012
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 219
    Points : 94
    Points
    94
    Par défaut
    en insérant ton instruction j'ai une toujours l'erreur sur insert to :s.

    Est-ce par ce que on ne précise pas où trouver la valeur ID_affectation (dans la table affection) à mettre dans le champ Code_affectation ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CurrentDb.Execute "insert into T_horaires (Code_affectation, Code_contrat, Date_horaire) values (" & Code_affectation & "," & Num_Contrat & ", #" & Format(MaDate, "m/d/yyyy") & dbFailOnError

  8. #8
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 107
    Points : 5 230
    Points
    5 230
    Par défaut
    Tel que tu l'as écrit elle est supposée être dans la variable Code_affectation, comme Num_Contrat...

  9. #9
    Membre régulier
    Inscrit en
    Mai 2012
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 219
    Points : 94
    Points
    94
    Par défaut
    oui tout à fait mais pas dans code_affectation de la table horaire mais code_affectation de la table candidature ^^'.

    la différence c'est que le code_contrat situé dans la table contrat est en relation directe avec la table horaire alors qu'il y a une table affectations qui aliment et la table candidature et la table horaires. l'idée étant que je récupère le num de l'affectation de la table candidature pour le mettre dans la table horaire au moment de la création de la ligne !

  10. #10
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 107
    Points : 5 230
    Points
    5 230
    Par défaut
    Dans l'instruction ci-dessous, le 2e Code_affectation n'est pas un champ d'une table mais une variable de la fenêtre courante. Si c'est la variable d'une autre fenêtre il faut l'adresser en conséquence...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CurrentDb.Execute "insert into T_horaires (Code_affectation, Code_contrat, Date_horaire) values (" & Code_affectation & "," & Num_Contrat & ", #" & Format(MaDate, "m/d/yyyy") & dbFailOnError

  11. #11
    Membre régulier
    Inscrit en
    Mai 2012
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 219
    Points : 94
    Points
    94
    Par défaut
    mmmh si par fenêtre tu entends ce qui est affiché à l'écran, c'est sur la même fenêtre mais les lignes crées sont dans le sous formulaire du formulaire affiché. Cad que je vois les deux à l'écran mais l'un est le sous formulaire de l'autre.

    Attends je fais un test, ça risque pas de marcher si j'ai pas déclaré ma variable code_affectation au début -_-.

    Alors, j'ai déclaré mes variables comme il suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        DtDeb = Me.Date_début
        DtFin = Me.Date_fin
        Num_Contrat = Me.ID_contrat
        Code_affectation = Me.ID_affectation
    et à priori il les récupère bien.

    Par contre quand je clique j'ai ce message d'erreur qui apparait :

    erreur de syntaxe dans la date dans l'expression "#1/22/2013128".

    et là je ne sais pas trop que faire :s

  12. #12
    Membre régulier
    Inscrit en
    Mai 2012
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 219
    Points : 94
    Points
    94
    Par défaut
    Pour information j'ai réussi à résoudre le problème en écrivant ceci :

    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
    Private Sub Commande31_Click()
     
        DtDeb = Me.Date_début
        DtFin = Me.Date_fin
        Num_Contrat = Me.ID_contrat
        Code_affectation = Me.ID_affectation
     
     
        For Boucle = 0 To DateDiff("d", DtDeb, DtFin)
            MaDate = DtDeb + Boucle
            DoCmd.SetWarnings False
     
              DoCmd.RunSQL ("INSERT INTO T_horaires ( Code_contrat, Date_horaire, Code_affectation) SELECT " & Num_Contrat & " AS ID_contrat, #" & Format(MaDate, "dd/mm/yyyy") & " # AS Date_horaire, " & Code_affectation & " AS Code_affecation;")
     
     
            DoCmd.SetWarnings True
     
        Next
     
        Me.Refresh
     
    End Sub

    Merci pour toutes vos réponses !

  13. #13
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 107
    Points : 5 230
    Points
    5 230
    Par défaut
    Ca marchait aussi avec values mais il manquait "#);" à la fin

    Et les alias ne servent à rien

  14. #14
    Membre régulier
    Inscrit en
    Mai 2012
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 219
    Points : 94
    Points
    94
    Par défaut
    je ne vois pas ce que tu veux dire par rapport aux instructions de fin, j'ai essayé mais à chaque fois ça m'a renvoyé l'erreur dans insert into :s

    Après test il se trouve que je plaçais mal mes objets

    Du coup j'ai privilégié ta solution, merci !

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/10/2005, 16h07
  2. Réponses: 5
    Dernier message: 23/09/2005, 10h00
  3. [CR] valeurs par défaut d'un champ parametre auto
    Par FUNZIE dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 30/03/2005, 14h41
  4. [SQL - Access] Valeur par défaut d'un champs
    Par Demiurge dans le forum Access
    Réponses: 2
    Dernier message: 11/02/2005, 17h16
  5. Valeur par défaut d'un champ date
    Par Fabby69 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 17/09/2004, 12h48

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