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 :

Créer des enregistrements vides dans des tables


Sujet :

Access

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Equateur

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Créer des enregistrements vides dans des tables
    Bonjour à tous!

    Je travaille sur une base de donnée comportant de nombreuses variables pour une même personne. Pour des raisons pratiques, ces informations sont enregistrées dans différents tableaux thématiques, tous liés entre eux par une relation un-à-un.

    Mon objectif étant de disposer d'un formulaire principal pour les données générales, et d'autres formulaires thématiques, accessibles à partir de boutons disposés sur le formulaire principal.

    A cette fin, j'aurais besoin de réaliser une macro, qui lorsque un enregistrement est ajouté sur le formulaire principal, crée automatiquement cet enregistrement (vide), au sein de tous les tableaux secondaires.

    Honnêtement je galère avec VisualBasic, je ne sais pas comment m'y prendre.

    Si vous avez une idée, je suis preneur,

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonjour,

    Quelle est la NECESSITE de :
    [QUOTE bluebird3] A cette fin, j'aurais besoin de réaliser une macro, qui lorsque un enregistrement est ajouté sur le formulaire principal, crée automatiquement cet enregistrement (vide), au sein de tous les tableaux secondaires. [/QUOTE]
    s'il n'y a pas de valeurs?

    Parce qu'à première vue, ce que tu veux faire est incohérent indépendamment de VBA.

    Bonne continuation
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 15
    Points : 22
    Points
    22
    Par défaut
    Est-ce que tu parle d'une fonction dans ce genre ?
    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
    Function AjouterLigneDansTable(nomTable As String, nomChamp As String, Identifiant As String) As Boolean
        'Fonction qui va ajouter une ligne dans une table avec l'identifiant.
     
        Dim rst As DAO.Recordset
     
        'Requête qui va chercher les enregistrement ayant cette identifiant
        Set rst = CurrentDb.OpenRecordset("SELECT [" & nomChamp & _
        "] FROM [" & nomTable & _
        "] WHERE [" & nomChamp & "] = '" & Identifiant & "';")
        If rst.EOF Then
        'Si pas de résultat
            DoCmd.RunSQL "INSERT INTO [" & nomTable & "]([" & nomChamp & _
            "]) VALUES ('" & Identifiant & "');" 'INSERER une nouvelle ligne dans la table avec l'identifiant
            AjouterLigneDansTable = True
        Else
            AjouterLigneDansTable = False
        End If
        rst.Close: Set rst = Nothing  'Fermeture de la table de la requête
    End Function

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Equateur

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci pour vos réponses!

    J'ai en effet testé la macro proposée par T4keo, adaptée en définissant les variables, avec un tableau test, et en l'exécutant grâce à un simple bouton sur un formulaire
    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
    Private Sub Commande19_Click()
    Function AjouterLigneDansTable(nomTable As String, nomChamp As String, Identifiant As String) As Boolean
        'Fonction qui va ajouter une ligne dans une table avec l'identifiant.
        nomTable = "MenuTest"
        nomChamp = "N°"
        Identifiant = "17"
     
        Dim rst As DAO.Recordset
     
        'Requête qui va chercher les enregistrement ayant cette identifiant
        Set rst = CurrentDb.OpenRecordset("SELECT [" & nomChamp & _
        "] FROM [" & nomTable & _
        "] WHERE [" & nomChamp & "] = '" & Identifiant & "';")
        If rst.EOF Then
        'Si pas de résultat
            DoCmd.RunSQL "INSERT INTO [" & nomTable & "]([" & nomChamp & _
            "]) VALUES ('" & Identifiant & "');" 'INSERER une nouvelle ligne dans la table avec l'identifiant
            AjouterLigneDansTable = True
        Else
            AjouterLigneDansTable = False
        End If
        rst.Close: Set rst = Nothing  'Fermeture de la table de la requête
    End Function
    End Sub
    Malheureusement, aucun enregistrement 17 n'est créé à son activation. Avez-vous une idée de mon erreur?

    @Madefemere: La nécessité vient du fait que si je ne réalise pas cette manipulation, je ne peux pas créer des liens vers des sous-formulaires dirigés vers le même enregistrement que celui du formulaire principal... car ce nouvel enregistrement n'existe simplement pas. ET je ne peux pas me fier pour ces sous-formulaires à une création automatique d'enregistrement type "NumAuto", car le numéro d'enregistrement peut différer de celui de l'enregistrement principal. Bref, ça ne marche pas.

    J'ai bien conscience que ce n'est sans doute pas la méthode la plus adaptée.
    As-tu une autre démarche en tête? Mon objectif pour cette partie de la BdD est finalement trivial: Disposer de 5 tableaux liés un-à-un, afin de disposer plus facilement des différents types d'informations concernant un unique enregistrement.

  5. #5
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 869
    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 869
    Points : 3 448
    Points
    3 448
    Par défaut
    Bonjour bluebird3,

    Je crois que la réponse de madefemere est la bonne réponse. Si ton MCD est bien conçu une table principale en relation avec les autres tables. Un formulaire principal avec liaison père/fils tu vas avoir de façon automatique dès que tu inscriras des données dans un enregistrement fils la liaison que tu veux. Si aucune donnée pourquoi créer un enregistrement? Sinon tout inclure dans la même table.

    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

  6. #6
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    A mon avis, la modélisation n'est pas bonne.
    Postez votre modèle relationnel

Discussions similaires

  1. Réponses: 30
    Dernier message: 24/10/2011, 18h37
  2. Réponses: 1
    Dernier message: 08/12/2009, 22h35
  3. Exclure des enregistrements vide dans une requête sql
    Par beegees dans le forum Langage SQL
    Réponses: 1
    Dernier message: 31/03/2009, 19h42
  4. Ajouter des enregistrements liés dans des tables
    Par nounadevelop dans le forum Modélisation
    Réponses: 6
    Dernier message: 13/01/2009, 19h53
  5. Réponses: 7
    Dernier message: 22/08/2007, 11h49

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