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 :

Comment contourner l'erreur 3828 pour un insert into pour une table liée avec champ multi valeurs ? [AC-365]


Sujet :

VBA Access

  1. #1
    Membre régulier
    Homme Profil pro
    informaticien retraité
    Inscrit en
    Mai 2017
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : informaticien retraité

    Informations forums :
    Inscription : Mai 2017
    Messages : 270
    Points : 107
    Points
    107
    Par défaut Comment contourner l'erreur 3828 pour un insert into pour une table liée avec champ multi valeurs ?
    Bonjour,

    J'ai une base de données contenant une table avec un champ à valeurs multiples. Dernièrement j'ai décidé de lier la table mais depuis ce temps j'obtiens l'erreur 3828 qui me dit qu'on ne peut référencer une table liée ayant un champ avec des valeurs multiples.

    Est-il possible de contourner cette erreur et si oui comment ?

    Merci.

  2. #2
    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
    Pourquoi ne pas importer ta table en vba ?
    "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

  3. #3
    Membre régulier
    Homme Profil pro
    informaticien retraité
    Inscrit en
    Mai 2017
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : informaticien retraité

    Informations forums :
    Inscription : Mai 2017
    Messages : 270
    Points : 107
    Points
    107
    Par défaut
    Bonjour hyperion13,

    Effectivement je crois que c'est la meilleure solution, je vais en faire l'essai.

    Merci de votre réponse, bonne journée.

  4. #4
    Membre régulier
    Homme Profil pro
    informaticien retraité
    Inscrit en
    Mai 2017
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : informaticien retraité

    Informations forums :
    Inscription : Mai 2017
    Messages : 270
    Points : 107
    Points
    107
    Par défaut
    Bonjour hyperion13,

    J'ai effectivement modifié ma procédure pour amener la table externe dans ma base courante mais j'ai le même problème mais avec l'erreur 3825 et le message suivant :
    "Erreur No 3825 - SELECT * ne peut pas être utilisé dans une requête INSERT INTO si la table source ou de destination contient un champ à plusieurs valeurs."

    En fait ce qu'on doit comprendre, le message aurait dû être "Si vous avez un champ à plusieurs valeurs, on ne peut utiliser INSERT INTO peu importe si c'est dans sa base courante ou externe".

    J'ai aussi tenté de faire un APPEND enregistrement par enregistrement mais ça ne fonctionne pas non plus.

    Auriez-vous une autre idée ?

    Merci.

  5. #5
    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
    Je pensais que l'erreur était due à la liaison externe de la table.
    Il y a une solution donnée ici.
    Il faut d'abord exécuter un INSERT INTO sans le champ multivalues, puis exécuter un UPDATE avec le champ multivalues.
    "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

  6. #6
    Membre régulier
    Homme Profil pro
    informaticien retraité
    Inscrit en
    Mai 2017
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : informaticien retraité

    Informations forums :
    Inscription : Mai 2017
    Messages : 270
    Points : 107
    Points
    107
    Par défaut
    Bonjour hyperion13,

    Je suis désolé pour le délai mais j'ai un petit problème de santé qui m'a empêché de faire l'essai de la solution.

    Je comprend très bien la façon de procéder et je désire l'adopter mais dans l'exemple, on travaille avec le 2ième INSERT INTO avec des valeurs déjà connues mais dans mon cas je peux avoir plusieurs valeurs qui me sont inconnues, je dois d'abord les trouver pour les utiliser dans le INSERT INTO.

    J'ai aussi tenté de travailler avec les recettes des liens suivants :
    https://warin.developpez.com/access/multivalue/ et
    https://warin.developpez.com/access/...tiValueVideSQL

    Mais tous les essais que j'ai effectué jusqu'ici n'ont rien donné, je continue à chercher.

    Connaissez-vous une façon de procéder ?

    Merci.

  7. #7
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    Bonjour,

    Connaissez vous les objets recordset ?
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  8. #8
    Membre régulier
    Homme Profil pro
    informaticien retraité
    Inscrit en
    Mai 2017
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : informaticien retraité

    Informations forums :
    Inscription : Mai 2017
    Messages : 270
    Points : 107
    Points
    107
    Par défaut
    Bonjour hyperion13,

    Je les utilise mais vraiment sans les contrôler, je comprend moyennement le principe.

    Merci

  9. #9
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    Je vous laisse vous familiariser avec les recordset en suivant ce tuto.

    Vous parcourez un 1er recordset basé sur la table source.

    Ensuite, pour chaque enrg. du 1er recordset, il faudra récupérer le contenu du champ multivalué. et l'injecter dans la table destination (à l'aide aussi d'un recordset et de sa méthode addnew) :

    https://warin.developpez.com/access/multivalue/#LV

    Cdlt
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  10. #10
    Membre régulier
    Homme Profil pro
    informaticien retraité
    Inscrit en
    Mai 2017
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : informaticien retraité

    Informations forums :
    Inscription : Mai 2017
    Messages : 270
    Points : 107
    Points
    107
    Par défaut
    Bonjour hyperion13,

    Parfait, je vais suivre votre recommandation et je vais vous revenir avec le résultat.

    Merci.

  11. #11
    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 James,
    Ce n'est pas moi qui t'ai répondu Post#7 et Post#9, mais User que je salue.
    J'ai fait un truc rapidos sur la base de ce lien et ça à l'air de fonctionner.
    Citation Envoyé par JamesPel Voir le message
    Bonjour hyperion13,
    Je les utilise mais vraiment sans les contrôler, je comprend moyennement le principe.
    Merci
    Citation Envoyé par JamesPel Voir le message
    Bonjour hyperion13,
    Parfait, je vais suivre votre recommandation et je vais vous revenir avec le résultat.
    Merci.
    EDIT : 2022.06.27 j'ai amélioré le truc rapidos
    Fichiers attachés Fichiers attachés
    "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

  12. #12
    Membre régulier
    Homme Profil pro
    informaticien retraité
    Inscrit en
    Mai 2017
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : informaticien retraité

    Informations forums :
    Inscription : Mai 2017
    Messages : 270
    Points : 107
    Points
    107
    Par défaut
    Bonjour à vous deux,

    Désolé User de vous avoir confondu avec hyperrion13, je sors tout juste de l'hôpital et c'est probablement le résidu des médicaments que j'ai reçus qui ont fait que j'ai confondu. Comme mentionné je vais tout de même utiliser votre suggestion pour me permettre de mieux comprendre les recordsets, votre suggestion m'est très intéressante.

    Aussi hyperion13, je regarde attentivement la base d'essai fournie et j'essaie de l'appliquer à ma base et je vous en redonne des nouvelles.

    Merci à vous deux pour votre assistance si précieuse.

  13. #13
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    Citation Envoyé par hyperion13 Voir le message
    Salut James,
    Ce n'est pas moi qui t'ai répondu Post#7 et Post#9, mais User que je salue.
    J'ai fait un truc rapidos sur la base de ce lien et ça à l'air de fonctionner.
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  14. #14
    Membre régulier
    Homme Profil pro
    informaticien retraité
    Inscrit en
    Mai 2017
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : informaticien retraité

    Informations forums :
    Inscription : Mai 2017
    Messages : 270
    Points : 107
    Points
    107
    Par défaut
    Bonjour hyperion13 et User,

    Pour User, j'ai commencé à regarder le document que vous m'avez recommandé.

    Pour hyperion13, j'ai fait l'essai de votre procédure et ça semble très bien fonctionner, j'y ai apporté des modifications qui me sont nécessaires.

    Par contre, je me pose sérieusement la question : "Dois-je revenir aux tables en relation au lieu de tables avec des champs à valeur multiple.".

    Je vous explique, je dois envoyer à un utilisateur, hors de mon réseau, ma base de données avec les tables liées. Pour ce faire je dois modifier l'emplacement des tables liées en VB, ce que j'ai fait grâce à des discussions disponibles sur internet. Tout fonctionne bien sauf pour deux tables et devinez lesquelles ! Ce sont celles avec des champs à valeur multiples, pour celles-ci on me dit que les tables n'existent pas. Pour toutes les autres tables ça a très bien fonctionné. J'ai vérifié sur internet et je n'ai rien trouvé.

    En conclusion, j'ai trois choix :
    - Soit cesser d'utiliser les tables liées et revenir aux tables locales et continuer d'utiliser les champs à valeur multiples;
    - Soit continuer à utiliser les tables liées et modifier les champs à valeur multiples en tables avec relations;
    - Soit continuer à utiliser les tables liées avec les champs à valeur multiples tels quels, mais je n'ai pas de solution.

    Ma préférence serait de continuer à utiliser les tables liées tel que mentionné dans le troisième choix.

    N'ayant pas, actuellement, de solution, je réfléchis et si je décide de continuer avec le troisième choix, je crois que je devrai ouvrir une nouvelle discussion, car le problème du début n'est pas le même maintenant.

    Alors je me donne quelques jours pour prendre une décision, dans tous les cas, votre aide m'a grandement été utile et j'ai pu avancer mais il me semble que les champs à valeur multiple ne sont pas totalement intégrés dans Access, du moins c'est mon humble opinion.

    Merci et lorsque ma décision sera prise, je vais inscrire comme résolu car tout ce que vous m'avez fourni est très à propos à mon problème initial.

    Merci encore.

  15. #15
    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
    En fait tu te poses la question si on doit suivre les fondamentaux de l'analyse conceptuelle qui nous orienterait à créer une relation NAire (n,n) (img Choix2) ou si on peut utiliser une relation binaire (1,n) (img Choix1)
    Dans mon Post#11 j'avais ajouté une deuxième bdd où j'avais finalisé la sub() pour que le INSERT INTO ne génère pas d'erreur avec les champs multivalués et boucle sur tous les enregistrements que la tbl pouvait contenir.
    Quel choix adopter? Bonne question. Je dirai tout dépend du contexte. Travaille-t-on ou non en local?
    Images attachées Images attachées  
    "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

  16. #16
    Membre régulier
    Homme Profil pro
    informaticien retraité
    Inscrit en
    Mai 2017
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : informaticien retraité

    Informations forums :
    Inscription : Mai 2017
    Messages : 270
    Points : 107
    Points
    107
    Par défaut
    Bonjour hyperion13,

    Vous avez très bien compris mon problème, je me donne la fin de la semaine pour prendre une décision, les deux procédures que vous m'avez fournies, répondent correctement à mon premier problème mais là j'en suis vraiment à la réflexion concernant "Quel choix adopter ?".

    Si je n'avais pas eu le dernier problème lors du changement de chemin du fichier soit, les tables liées contenant des champs multi valeur donnent une erreur "table introuvable", j'aurais terminé et tout fonctionnerait très bien grâce à vos suggestions mais, je suis maintenant bloqué.

    Donc en fin de semaine, réflexion !, réflexion !

    Merci.

  17. #17
    Membre régulier
    Homme Profil pro
    informaticien retraité
    Inscrit en
    Mai 2017
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : informaticien retraité

    Informations forums :
    Inscription : Mai 2017
    Messages : 270
    Points : 107
    Points
    107
    Par défaut
    Bonjour à vous deux,

    J'ai finalement pris une décision, avec les difficultés que j'ai rencontré et que je rencontre encore, j'ai décidé de cesser d'utiliser les champs à valeur multiple. Selon ce que je constate, on ne peut éviter de programmer en VBA si la base est moindrement complexe.

    J'ai grandement apprécié votre aide, tant pour les codes VBA que pour les références de lecture.

    Merci pour toute l'aide que vous m'avez apporté pour cette discussion, j'ai appris beaucoup. Étant autodidacte, il me manque encore beaucoup de connaissances mais grâce à des gens comme vous, je m'améliore beaucoup plus rapidement et j'augmente mes connaissances.

    Merci encore.

  18. #18
    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 James,
    Heureux d'apprendre que tu as décidé de revenir dans le champ de la normalisation des bases de données.
    Pour un usage classique sans retraitement, les MVF peuvent être employés. Si retraitement c'est un véritable casse-têtes. La preuve avec tes problèmes rencontrés.
    D'ailleurs nombreux sont le MVP qui recommandaient de "fuir" les MVF et de privilégier les relation binaires ou Naires.
    A une prochaine peut-être.
    "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

  19. #19
    Membre régulier
    Homme Profil pro
    informaticien retraité
    Inscrit en
    Mai 2017
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : informaticien retraité

    Informations forums :
    Inscription : Mai 2017
    Messages : 270
    Points : 107
    Points
    107
    Par défaut
    Bonjour hyperion13,

    Vos propos me rassurent face à la décision que j'ai prise. Vous semblez avoir beaucoup de vécu en Access et VBA, j'apprécie beaucoup votre dernière réponse.

    J'aurai certainement d'autres questions à l'avenir et vos interventions sont toujours à propos et bienvenues.

    Merci encore et à la prochaine.

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

Discussions similaires

  1. Insert into d'une table vers une autre
    Par psyko72 dans le forum VB.NET
    Réponses: 7
    Dernier message: 28/09/2007, 11h23
  2. INSERT INTO dans une table vide
    Par DeepXtaZy dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 22/06/2007, 08h37
  3. Recordset pour INSERT INTO dans une table vide
    Par tAKAmAkA dans le forum VBA Access
    Réponses: 12
    Dernier message: 09/02/2007, 20h52
  4. Insert Into dans une table avec select
    Par smail25 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 15/12/2006, 13h06
  5. Réponses: 3
    Dernier message: 21/02/2006, 11h44

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