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 :

Formulaire : Créer plusieurs enregistrements en une seule fois ! [AC-2010]


Sujet :

IHM

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 30
    Points : 14
    Points
    14
    Par défaut Formulaire : Créer plusieurs enregistrements en une seule fois !
    Bonjour,

    J'aimerais, si cela est possible, pouvoir créer 4 enregistrement d'un coup lorsqu'on appuie sur le bouton ajouter. J'ai fais mes recherches mais je ne trouve aucun forum où la question a été posé

    J'en profite aussi pour poser une question , est-ce normal que lorsque je fais un ajout mais que je ne modifie aucune valeur, l'enregistrement ne s'enregistre pas ! ( lorsque j'appuie sur ajouter elle récupère les valeurs de la position ou j'étais. Par exemple, si le champ savoir avais comme valeur "il sait" dès lors que j'appuie sur ajouter, le champ savoir garde 'ajouter" mais ne s'enregistre pas ^^)

    Un très grand merci d'avance pour votre aide et pour avoir tous lu !

  2. #2
    Membre expérimenté Avatar de Gado2600
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Mai 2013
    Messages
    903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Office VBA

    Informations forums :
    Inscription : Mai 2013
    Messages : 903
    Points : 1 364
    Points
    1 364
    Par défaut
    Bonjour,

    Pour l'ajout de 4 enregistrements en même temps, via un bouton, cela est possible (en VBA par exemple) mais ils ne seront pas fait en même temps à la microseconde près.

    En ce qui concerne la seconde question, j'ai envie de dire "oui" et "non" en même temps. Nous manquons cruellement d'informations sur ce qu'il se passe lorsque vous faites votre ajout.
    Par exemple, sur la méthode que vous employez pour votre ajout, ce qu'il doit se passer, etc...

    Cordialement,
    Le sabre est une arme. Le kendo est un art de tuer. Quelles que soient les belles paroles pour l'expliquer, telle est sa vérité.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 30
    Points : 14
    Points
    14
    Par défaut
    Alors tout d'abord un grand merci pour ton aide !

    Ah mais si cela est possible, il ne sera pas possible de gérer les valeurs par défaut des 4 nouveaux formulaires ? ( en VBA )

    Ah donc je vais préciser mes propos Actuellement j'ai un formulaire Agent avec plusieurs sous formulaire. Dans l'un de ces sous-formulaires ( Savoir ) nous devons pouvoir ajouter des savoirs en se basant sur les anciens savoir ( c'est a dire ajouter un savoir avec comme valeurs par défaut l'ancien savoir ) ce qui est déjà fait, voici le code du bouton ajouter :
    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
    Private Sub Ajouter_Click()
     
      Me.Savoir.DefaultValue = """" & Me.Savoir & """"
      Me.[Savoir niveau agent].DefaultValue = """" & Me.[Savoir niveau agent] & """"
      Me.[Savoir niveau poste].DefaultValue = """" & Me.[Savoir niveau poste] & """"
      Me.[Savoir faire].DefaultValue = """" & Me.[Savoir faire] + " " & """"
      Me.[Savoir faire niveau agent].DefaultValue = """" & Me.[Savoir faire niveau agent] & """"
      Me.[Savoir faire niveau poste].DefaultValue = """" & Me.[Savoir faire niveau poste] & """"
      Me.[Savoir être].DefaultValue = """" & Me.[Savoir être] & """"
      Me.[année de saisie].DefaultValue = """" & Forms.Agent1.[Statut Sous-formulaire].Form.[année de saisie] & """"
     
      Me.Savoir.Locked = True
      Me.[Savoir faire].Locked = True
      Me.[Savoir être].Locked = True
     
      Me.Modifiable43.Visible = True
      Me.Modifiable45.Visible = True
      Me.Modifiable47.Visible = True
      Me.Modifiable49.Visible = True
     
      Me.Modifiable43.DefaultValue = """" & Me.[Savoir niveau agent] & """"
      Me.Modifiable45.DefaultValue = """" & Me.[Savoir niveau poste] & """"
      Me.Modifiable47.DefaultValue = """" & Me.[Savoir faire niveau agent] & """"
      Me.Modifiable49.DefaultValue = """" & Me.[Savoir faire niveau poste] & """"
     
      Me.[Savoir niveau agent].Visible = False
      Me.[Savoir niveau poste].Visible = False
      Me.[Savoir faire niveau agent].Visible = False
      Me.[Savoir faire niveau poste].Visible = False
     
      Me.Modifiable45.Locked = True
      Me.Modifiable49.Locked = True
     
      DoCmd.GoToRecord , , acNewRec
    Vous remarquerez que je cache quelque champ et que les Modifiables sont des listes a curseur

    Cependant, en faisant un ajout, si l'utilisateur ne souhaite pas modifier les anciennes valeurs ( il va donc juste appuyer sur ajout et va enregistrer directement sans rien modifier cette ajout) mais petit problème, le bouton pour enregistrer n'ai pas accessible et en faisant quelque recherche j'ai trouver le VBA pour faire l'enregistrement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Commande52_Click()
     
    DoCmd.RunCommand acCmdSaveRecord
     
    End Sub
    Mais il me sort comme erreur : Erreur d'éxécution '2046' : La commande ou l'action "SauvegardeEnregistrement" n'ai pas disponible pour l'instant

    J'espère que c'est un peu moins flou et si tu as une quelconque question n'hésite pas

  4. #4
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 871
    Points : 3 451
    Points
    3 451
    Par défaut
    Bonjour Doudou-Galak, Gado2600,

    Avec le code de ton post #3, il est tout à fait normal que l'enregistrement ne se fasse pas. Tu donnes au champ une valeur par défaut, cette valeur sera appliquée au champ seulement s'il y a une saisie de donnée quelconque dans le record soit un autre champ dans ton formulaire. Si aucune modification n'est faite le record n'existe pas.

    Bonne journée
    Ce qui se conçoit bien s’énonce clairement et les mots pour le dire arrivent aisément. Nicolas Boileau
    Si tout est OK, n'oubliez pas de cliquer sur

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 30
    Points : 14
    Points
    14
    Par défaut
    Bonjour Robert

    Ah ! tout s'explique ! Mais n'y aurait il pas un moyen de créer une modification puis de l'annuler (ou du moins de contourner l'obligation de modification ou encore de forcer cette enregistrement ?) sans que l'utilisateur n'ai à faire quelque chose ( Mes utilisateurs sont très compétant dans l'art de faire des bêtises ! ).

    Un grand merci à toi

  6. #6
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 871
    Points : 3 451
    Points
    3 451
    Par défaut
    Bonjour Doudou-Galak,

    Je ne suis pas un fervent des bricoles, je crois que la meilleure solution consiste à insérer dans la table les données et par la suite de se positionner sur ce nouvel enregistrement.

    Donc tu pourrais inscrire directement les données désirées de la façon suivante:
    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
    Private Sub Ajouter_Click()
        'Déclaration des variables
        Dim db As DAO.Database: Set db = CurrentDb
        Dim rst As DAO.Recordset
        Dim strSQL As String
        'Construction du record
        strSQL = "Select TaTable.* From TaTable;"
        Set rst = db.OpenRecordset(strSQL)
        'Ajout des informations
        rst.AddNew
            rst("LeBonChamp") = chr(34) & Me.Savoir & chr(34)
            ....et la suite
            'On récupère la clé primaire du record pour le retrouver par la suite dans ton formulaire
            strSQL = rst("LeChampQuiEstLaCle")
        rst.Update
        'On libère la mémoire
        rst.Close
        Set rst = Nothing
        Set db = Nothing
        'On met à jour le formulaire
        Me.Requery
            'On se positionne sur le nouvel enregistrement
            Me.RecordsetClone.FindFirst strSQL
            Me.Bookmark = Me.RecordsetClone.Bookmark
     
    End Sub
    Bonne journée
    Ce qui se conçoit bien s’énonce clairement et les mots pour le dire arrivent aisément. Nicolas Boileau
    Si tout est OK, n'oubliez pas de cliquer sur

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 30
    Points : 14
    Points
    14
    Par défaut
    Ah j'aime ta façon de concevoir les choses !

    Par contre, j'ai débuté le VBA y a pas trop longtemps ! Et en essayant ton code ( en l'ayant adapté) il m'en ressort cette erreur : Erreur d'éxecution 3001 : Arguments non valide. En ciblant cette ligne :

    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
    Private Sub Ajouter_Click()
       'Déclaration des variables
        Dim db As DAO.Database: Set db = CurrentDb
        Dim rst As DAO.Recordset
        Dim strSQL As String
        'Construction du record
        strSQL = "Select Savoir.* From Savoir;"
        Set rst = db.OpenRecordset(strSQL)
        'Ajout des informations
        rst.AddNew
            rst("Savoir") = Chr(34) & Me.Savoir & Chr(34)
            rst("Savoir niveau agent") = Chr(34) & Me.Savoir_niveau_agent & Chr(34)
            rst("Savoir niveau poste") = Chr(34) & Me.Savoir_niveau_poste & Chr(34)
            rst("Savoir faire") = Chr(34) & Me.Savoir_faire & Chr(34)
            rst("Savoir faire niveau agent") = Chr(34) & Me.Savoir_faire_niveau_agent & Chr(34)
            rst("Savoir faire niveau poste") = Chr(34) & Me.Savoir_faire_niveau_poste & Chr(34)
            rst("année de saisie") = Forms.Agent1.[Statut Sous-formulaire].Form.[année de saisie]
            'On récupère la clé primaire du record pour le retrouver par la suite dans ton formulaire
            strSQL = rst("id_Savoir")
        rst.Update
        'On libère la mémoire
        rst.Close
        Set rst = Nothing
        Set db = Nothing
        'On met à jour le formulaire
        Me.Requery
            'On se positionne sur le nouvel enregistrement
            Me.RecordsetClone.FindFirst strSQL
            Me.Bookmark = Me.RecordsetClone.Bookmark
    End Sub
    Hum.. Ce ne serais pas à cause de la mémoire que nous avons libéré ?

  8. #8
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 871
    Points : 3 451
    Points
    3 451
    Par défaut
    Bonjour Doudou-Galak,

    Non ce n'est pas la mémoire, c'est une erreur de ma part. Il faut dire sur cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strSQL = "[LeChampDeLaCléPrimaire]= " & rst("LeChampDeLaCléPrimaire")
    De plus il faut faire attention, si le champ est numérique mon code est bon. Si le champ est au format texte il faut ajouter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strSQL = "[LeChampDeLaCléPrimaire]= " & chr(34) & rst("LeChampDeLaCléPrimaire") & chr(34)
    Maintenant ça devrait fonctionner.

    Bonne journée
    Ce qui se conçoit bien s’énonce clairement et les mots pour le dire arrivent aisément. Nicolas Boileau
    Si tout est OK, n'oubliez pas de cliquer sur

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 30
    Points : 14
    Points
    14
    Par défaut
    Ah, ça n'as pas marché Mais ce n'est pas très grave j'ai trouvé une petite bricole pour valider l'enregistrement (je sais que vous n'en êtes pas fans, mais tout bon informaticien dois savoir reconnaitre ses limites ! (SQL + VBA) 1 | Doudou 0

    Eh bien je te remercie pour tout ton aide Robert, et désolé de t'avoir fais perdre du temps

    Allez passe une bonne journée

    PS: Pour ceux qui sont intéressé, j'ai juste changer la valeur d'un champ à la main et l'ai remis à sa valeur initial (Oui je sais pas très futfut ! Mais on fais comme on peux )

  10. #10
    Candidat au Club
    Homme Profil pro
    programmation des applications
    Inscrit en
    Septembre 2016
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Niger

    Informations professionnelles :
    Activité : programmation des applications
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2016
    Messages : 1
    Points : 2
    Points
    2
    Par défaut doudou
    Je suis interessé, moi aussi j'ai ce probleme

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

Discussions similaires

  1. Enregistrer un formulaire avec x input en une seule fois
    Par viny1976 dans le forum MkFramework
    Réponses: 6
    Dernier message: 23/09/2016, 10h52
  2. [Débutant] Créer plusieurs enregistrements depuis une seule vue.
    Par DaCoolG dans le forum ASP.NET MVC
    Réponses: 8
    Dernier message: 28/04/2015, 10h34
  3. Réponses: 1
    Dernier message: 12/03/2008, 21h44
  4. [MySQL] Modifier plusieurs enregistrements en une seule fois
    Par ClaudeP dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 16/05/2007, 23h07
  5. Insérer plusieurs enregistrements en une seule requête
    Par pyd001 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 26/02/2004, 10h38

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