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 :

Insérer des données via un formulaire


Sujet :

VBA Access

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Insérer des données via un formulaire
    Bonjour à tous, étant depuis longtemps un visiteur sur ce site, je viens quérir votre aide !

    TL;DR : Je dois faire une insertion de données via formulaire access, et donc via une procédure vba (et je découvre avec douleur sa rigidité)

    Problème : Lors de mon clic sur le bouton d'insertion, il paraîtrait que je viole une règle de clé, mais laquelle ? J'ai longtemps cherché et je suis à court d'idées...

    Je précise que l'id de ma table est bien en NuméroAuto et Sans doublons. Ma table Parent dispose d'un id et de tous les champs de la requête (avec une FK pour l'id_patient à la fin)

    Et je vous met le code de ma requête ici :

    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
    Private Sub Insert_P2_autre_parent_Click()
     
    Dim pere As String
            pere = "INSERT INTO PARENT ( "
            pere = pere & " [lien_parente]"
            pere = pere & ", [ethnie_par]"
            pere = pere & ", [ethnie_autre_par]"
            pere = pere & ", [poids_par]"
            pere = pere & ", [taille_par]"
            pere = pere & ", [date_naiss_par]"
            pere = pere & ", [id_pat]"
     
            pere = pere & ") VALUES("
            pere = pere & " ""Père"","
            pere = pere & " """ & Me.ethnie_par_pere & ""","
            pere = pere & " """ & Me.ethnie_autre_par_pere & ""","
            pere = pere & " """ & Me.poids_par_pere & ""","
            pere = pere & " """ & Me.taille_par_pere & ""","
            pere = pere & " """ & Me.date_naiss_par_pere & ""","
            pere = pere & " """ & Me.id_pat & """);"
     
        Debug.Print (pere)
        DoCmd.RunSQL (pere)
     
        DoCmd.Save
        DoCmd.Close
        DoCmd.OpenForm "P2"
    End Sub
    Voilà, si vous avez des idées, ou déjà rencontré ce problème, n'hésitez pas à m'en faire part cela m'aiderait beaucoup ! et Merci d'avance !

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Bonjour,

    Je n'ai pas tout compris dans l'affirmation suivante :

    Je dois faire une insertion de données via formulaire access, et donc via une procédure vba
    Insérer des données depuis un formulaire ne nécessite l'utilisation d'une requête (ou autre) qu'à la condition que ce formulaire ne soit pas lié à la table.

    Autrement dit :
    Si ton formulaire est lié à la table Parent et que tu tentes d'écrire la même chose dans cette même table il est normal et logique que tu viole la PK id_pat. En effet avec JET le numéroauto est déjà connu (calculé et inscrit dans la table) avant la sauvegarde du nouvel l'enregistrement.


    Mais peut-être que ce n'est pas ce que tu fais.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    C'est bien cela que je fais, mais mes champs sont bien indépendants de toutes sources de contrôle... Je trouve ça bizarre (cf photos)
    Nom : dezdzedez.PNG
Affichages : 215
Taille : 6,8 Ko

    Merci pour la confirmation du NuméroAuto, au moins on sait que ça vient pas de l'id du parent, et donc vu que les autres champs sont optionnels... cela viendrait de l'id_pat ?

    EDIT : En crééant un patient "test" l'erreur se transforme en "erreur de conversion de type"

  4. #4
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Salut,
    Si votre formulaire a pour source de données la tbl PARENT, le plus simple est de recréer à nouveau le formulaire. Voir
    .
    Sinon, si vous travaillez à partir d'un form indépendant, le plus simple pour insérer votre enregistrement serait :
    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
    Private Sub Insert_P2_autre_parent_Click()
    Dim Dbs As DAO.Database
    Dim Rst As DAO.Recordset
    Set Rst = CurrentDb.OpenRecordset("SELECT * FROM PARENT")
    Rst.AddNew
    Rst![lien_parente] = "Père"
    Rst![ethnie_par] = Me.ethnie_par_pere.Value
    Rst![ethnie_autre_par] = Me.ethnie_autre_par_pere.Value
    Rst![poids_par] = Me.poids_par_pere.Value
    Rst![taille_par] = Me.taille_par_pere.Value
    Rst![date_naiss_par] = Me.date_naiss_par_pere.Value
    Rst.Update
    Rst.Close
    Set Rst = Nothing
    DoCmd.Close
    End Sub
    PS : Je note que vous collectez des données ethniques. Êtes-vous en conformité avec la décision du Conseil constitutionnel (2007) et les recommandations de la CNIL ?
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  5. #5
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    "C'est bien cela que je fais, mais mes champs sont bien indépendants de toutes sources de contrôle... Je trouve ça bizarre (cf photos)"

    La source du formulaire est vide ?
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par loufab Voir le message
    "C'est bien cela que je fais, mais mes champs sont bien indépendants de toutes sources de contrôle... Je trouve ça bizarre (cf photos)"

    La source du formulaire est vide ?
    Pas celle du formulaire, elle requête sur la table patient et parent

    En ce qui concerne votre code hyperion13, je teste ça demain je vous tiens au courant, je pense l'avoir compris ! Mais étant novice en VBA cela ne me serait pas venu tout seul ahah

    Oui ne vous en faites pas niveau réglémentation, c'est OK

    Edit: ça marche ! J'ai pas trop bien compris pourquoi mais j'ai rajouté Rst![id_pat] = Me.id_pat.Value et tout marche ! Merci

  7. #7
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Soit tu mets la source et tu laisses l'ihm gérer ça, soit tu ne mets aucune source et tu fais tout à la main… mais pas les 2.

    Ton problème vient de là.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/04/2011, 14h04
  2. [1.x] recuperation des données via le formulaire
    Par nechalus dans le forum Symfony
    Réponses: 1
    Dernier message: 18/08/2010, 16h08
  3. [AC-2007] Saisie des données via un formulaire
    Par Abed_H dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 27/03/2010, 09h57
  4. [MySQL] Insérer des données d'un formulaire dans la base
    Par ciel65 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 15/01/2007, 09h39
  5. [SQL] Pb Sql lors de l envoie des données via un formulaire
    Par xtiand4 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 12/06/2006, 14h18

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