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 :

Requete ajout avec table parametrable


Sujet :

VBA Access

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Requete ajout avec table parametrable
    Bonjour à tous,
    Une question de newbie qui n'a pas l'air d'avoir déjà été posée

    Je cherche à programmer la manip suivante :
    - l'utilisateur choisit dans une zone de liste d'un formulaire le nom de la table qui l'intéresse
    - puis une procédure automatique ajoute cette table sélectionnée dans une autre table (toujours la meme)

    Le nom de la table choisie au depart est donc un parametre variant. Je pensais résoudre ce probleme en faisant une requete ajout et un "docmd.runsql" mais il y a trop de champs dans ces tables et je dépasse les 256 caracteres que l'on peut passer par un runsql.
    Y a-t-il une meilleure solution ?
    Est-il possible de résoudre ce probleme avec un runsql ? Sinon à l'aide d'un querydef mais comment passer le paramètre du nom de la table dans la requete ?

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    select *
    Elle est pas belle la vie ?

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par random
    select *
    Il s'agit d'une requete ajout,
    "insert * "ne marche pas car il faut que je precise quels champs de la table choisie doivent être mis dans la table receveuse

  4. #4
    Membre émérite
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 757
    Points : 2 992
    Points
    2 992
    Par défaut
    Il y a une limite à 256 caractères ? Ah bon ???

    Je te confirme que j'ai des SQL qui font plusieurs centaines de caractères (peut-être certaines plus de mille) et cela fonctionne.
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par cavo789
    Il y a une limite à 256 caractères ? Ah bon ???

    Je te confirme que j'ai des SQL qui font plusieurs centaines de caractères (peut-être certaines plus de mille) et cela fonctionne.
    Quelle syntaxe emploies-tu ?
    Perso j'utilise la méthode suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        sql1 = "INSERT INTO " + Resultat_comptage_boucle + "(Nom_boucle, Nom_collecteur_boucle, Date_comptage, Heure_comptage, Unite_observation, Nombre_debit, Nombre_debit_PL, Nombre_vitesse, Nombre_taux_occupation, Campagne_de_mesure, Commentaires, Validite) "
        sql2 = "SELECT Nom_boucle, Nom_collecteur_boucle, Date_comptage, Heure_comptage, Unite_observation, Nombre_debit, Nombre_debit_PL, "
        sql3 = "Nombre_vitesse, Nombre_taux_occupation, Campagne_de_mesure, Commentaires, Validite FROM " + nomtable + ";"
        sql = sql1 + sql2 + sql3
        DoCmd.RunSQL sql
    A moins d'une faute de frappe qui m'échappe, j'ai un message d'erreur du style "Erreur dans le INSERT INTO"
    Quand je place un espion sur la variable sql je m'aperçois que celle-ci est tronquée à 256 caracteres. C'est la meme chose si j'initialise les variables sql1, sql2, sql3 et sql en variant

  6. #6
    Membre émérite
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 757
    Points : 2 992
    Points
    2 992
    Par défaut
    L'erreur INSERT INTO indique que ton SQL Statement est mal construit; pas qu'il est limité en taille.

    Déjà une chose : utilise le caractère & à la place du + pour la concaténation.

    Ma syntaxe est un truc du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Dim sSQL As String
     
       sSQL = "SELECT ................................................" & _
          "..................................................................." & _
          "..................................................................." & _
          "..................................................................." & _
          "..................................................................." & _
          "..................................................................." & _
          "..................................................................." & _
          "..................................................................."
     
       DoCMD.RUNSQL sSQL, 0
    Comme tu le vois, je code mon SQL dans une seule variable; pas dans trois ou plus.

    Si tu continues à avoir un problème; affiche ton SQL dans la debug window
    Et ensuite fait un Copy/Paste dans un query que tu auras créé via l'interface MS Access. Lance le query ainsi et tu découvriras certaiment où tu as commis une erreur.
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    OK Merci
    Je vais tester ta syntaxe

  8. #8
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    INSERT INTO matable
    SELECT matable.*
    FROM matable;
    Elle est pas belle la vie ?

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    @random

    L' instruction globale * ne marche pas car je n'insère que quelques champs.
    Il faut donc que précise lesquels dans le SELECT et comme il y en a beaucoup et que le nom de la table est une variable, la syntaxe est coton !

    @cavo789

    Bon j'ai employé ta syntaxe et ça marche. Ouf !!

    Merci à tous

  10. #10
    Membre émérite
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 757
    Points : 2 992
    Points
    2 992
    Par défaut
    Pense à cliquer sur le bouton Résolu alors car sans cela, les autres lecteurs vont croire que ta question est toujours sur le feu... C'est ce que j'ai cru et j'ai pensé que mon aide n'avait pas été OK.
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be

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

Discussions similaires

  1. requete ajout avec condition
    Par mnssylvain dans le forum Requêtes et SQL.
    Réponses: 23
    Dernier message: 26/10/2007, 16h15
  2. requete SQL avec des Parametres
    Par devlopassion dans le forum C++Builder
    Réponses: 7
    Dernier message: 18/11/2006, 11h52
  3. Requete select avec table en parametre
    Par minette dans le forum VB 6 et antérieur
    Réponses: 34
    Dernier message: 02/08/2006, 18h46
  4. [Access-VBA] Requête UNION avec tables liées
    Par adriano057 dans le forum Access
    Réponses: 4
    Dernier message: 28/07/2006, 12h11
  5. passer une requete ajout avec des enregitrement null
    Par LesLemmings dans le forum Requêtes et SQL.
    Réponses: 15
    Dernier message: 13/06/2006, 15h20

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