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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du 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
    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
    Par défaut
    select *

  3. #3
    Membre du 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
    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 Expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 797
    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.

  5. #5
    Membre du 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
    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 Expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 797
    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.

+ 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