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

Requêtes et SQL. Discussion :

Requête ajout en VBA ?


Sujet :

Requêtes et SQL.

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 239
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 239
    Points : 555
    Points
    555
    Par défaut Requête ajout en VBA ?
    Salut à tous,

    Voilà mon petit problème,

    En SQL VBA, je crée un jeu d'enregistrement, on va l'appeler SQL1.

    Ensuite, une requête ajout SQL2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    StrSQLAjout = "INSERT INTO Table ( LibellésPresta, SommeDeproduction, Numfacok, NumPresta ) SELECT [Sql1]![champ1], [Sql1]![champ2], [Sql1]![champ3], [Sql1]![champ4] FROM Sql1;"
    Donc, ma requête SQL2 fait référence à ma requête1

    Mais si je la lance avec il me met un message comme quoi il ne trouve pas la table ou la requête source?

    Comment faire référence a une requête créée en sql vba dans une autre sql en vba???

    Merci A+

  2. #2
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 768
    Points
    7 768
    Par défaut
    Bonsoir,

    Une requête SQL créée en VBA est simplement une chaîne de caractères.
    Si Sql1 est une variable String dont le contenu est une instruction SQL, ce n'est pas une requête du point de vue Access (Moteur Jet).
    Le moteur de base de données attend un nom d'objet Table ou Requête derrière FROM, ou bien une sous-requête.

    Ca doit marcher en intégrant SQL1 en tant que sous-requette.
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    StrSQLAjout = "INSERT INTO Table ( LibellésPresta, SommeDeproduction, Numfacok, NumPresta ) SELECT [Sql1]![champ1], [Sql1]![champ2], [Sql1]![champ3], [Sql1]![champ4] FROM (" & SQL1 & ") As Sql1;"
    Dans SQL1 ne pas mettre de point virgule à la fin.

    A+

  3. #3
    Membre expérimenté
    Avatar de Mahefasoa
    Homme Profil pro
    Manager IT
    Inscrit en
    Octobre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Manager IT

    Informations forums :
    Inscription : Octobre 2003
    Messages : 835
    Points : 1 664
    Points
    1 664
    Par défaut
    Bonsoir,
    Le problème ne s'agit pas de VBA mais de SQL! Ce que tu demandes est de pouvoir exécuter une requête (en SQL) contenant dans sa clause FROM un autre instruction SQL (requête)->C'est une sous-requête!Mais attention, ce n'es t pas ce qu'il y a de mieux en terme de performance.
    Bref, pour ton cas, voici le système:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    INSERT INTO Table ( LibellésPresta, SommeDeproduction, Numfacok, NumPresta )
    SELECT S.champ1, S.champ2, S.champ3, S.champ4 FROM [SELECT xxxx FROM xxxx WHERE xxxx ORDER BY xxxx]. AS S;"
    Ce que j'ai mis entre crochets est la sous-requête (suivie d'un point!). Elle est désignée par l'alias S. Faites attention de ne pas mettre de crochets dans la sous-requête. Remplaces les xxxx par le bon argument (champ, table, etc.).

    Bon courage et @+

  4. #4
    Membre expérimenté
    Avatar de Mahefasoa
    Homme Profil pro
    Manager IT
    Inscrit en
    Octobre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Manager IT

    Informations forums :
    Inscription : Octobre 2003
    Messages : 835
    Points : 1 664
    Points
    1 664
    Par défaut
    En y pensant bien, tu n'as pas besoin d'utiliser une sous-requête. Il suffit que tu ajoutes l'INSERT avant ton SELECT en jouant dans FROM et WHERE (si nécessaire). En bref, bien organiser sa requête et tu n'as pas besoin d'une sous-requête. Peux-tu poster ici l'instruction SQL de SQL1?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 239
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 239
    Points : 555
    Points
    555
    Par défaut
    Salut à tous,

    Merci pour vos réponses, j'ai changé ma façon de faire, plus de problème.

    Merci pour vos conseils

    A+

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

Discussions similaires

  1. [AC-2003] Requête ajout en VBA
    Par Daejung dans le forum VBA Access
    Réponses: 4
    Dernier message: 12/03/2010, 14h19
  2. comment appliquer un requête ajout en VBA
    Par adriennoob dans le forum VBA Access
    Réponses: 8
    Dernier message: 24/06/2009, 18h06
  3. éxecution d'une requête ajout avec VBA
    Par averooès dans le forum VBA Access
    Réponses: 16
    Dernier message: 06/02/2009, 17h22
  4. Réponses: 6
    Dernier message: 13/12/2007, 03h13
  5. Probleme avec requête Ajout dans VBA
    Par deglingo37 dans le forum Access
    Réponses: 1
    Dernier message: 26/05/2006, 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