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 :

SQL en VBA - access 2003


Sujet :

Requêtes et SQL.

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 73
    Par défaut SQL en VBA - access 2003
    Bonjour,


    J'ai une requete qui a le code SQL suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO BASE_FACTURATION ( ID, no_societe, mnemonique, id_cpt_cli, no_avoir_facture, montant_TTC, Devise, nom_societe, typologie, annee_mois, pièce_annulee, definitif, comptabilise, niveau_traitement, niveau_trt_achat, facture_de_reference )
    SELECT E_005!no_avoir_facture & "-" & E_005!no_societe AS ID, E_005.no_societe, E_005.mnemonique, E_005.id_cpt_cli, E_005.no_avoir_facture, E_005.montant_TTC, E_005.Devise, E_005.nom_societe, E_005.typologie, E_005.annee_mois, E_005.pièce_annulee, E_005.definitif, E_005.comptabilise, E_005.niveau_traitement, E_005.niveau_trt_achat, E_005.facture_de_reference
    FROM E_005
    Comme je dois la rendre un peu automatique et que je dois la re-faire pour une vingtaine de table, je voudrais savoir si quelqu'un peu me donner le VBA pour cette fonction hyper simple mais que je n'arrive pas à faire

    Merci d'avance

    Eddy

  2. #2
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    3 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 040
    Par défaut
    ... je voudrais savoir si quelqu'un peu me donner le VBA pour cette fonction hyper simple mais que je n'arrive pas à faire...
    Tu as raison, c'est hyper simple , alors

    ...

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 73
    Par défaut
    Pas cool!!!


    J'avais déjà cherché et j'ai trouvé un tutoriel.

    Ayant déjà fait des bases de données, je passais ces fonctions via les requêtes mais là je voudrais la faire un peu plus poussé.
    Mais je n''arrive pas à l'écrire directement et je ne trouve pas où sont mes erreurs.


    Aidez moi SVP

    Merci

  4. #4
    Faw
    Faw est déconnecté
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 169
    Par défaut
    Salut,
    oui c'est possible avec l'objet TableDef
    maintenant faut voir comment ton algo pourrait être le plus simple possible...

    Dans l'absolu, il faudra quand même comparer le nom des tables (les 20) au nom
    de l'objet auquel tu accèdes et ce, tout en excluant les tables système

    donc explique un peu plus ton contexte.
    --> Y' a d'autres tables que ces 20 là dans ta base?
    --> les noms des 20 tables en question ont-ils quelque chose de spécifique style
    "elles commencent toutes par la chaine "tbàmouliner"
    etc.

    un exemple qui liste le nom de toutes les tables NON system dans une textbox.

    Attention à faire une sauvegarde avant d'être sûr

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Bascule0_Click()
    Dim db As DAO.Database
    Dim tb As DAO.TableDef
    Set db = CurrentDb
     
    For Each tb In db.TableDefs
    If Left(tb.Name, 1) <> "~" And Left(tb.Name, 4) <> "MSys" Then
     
    Me.Texte1 = Me.Texte1 & vbCrLf & tb.Name   'ici ton INSERT passera le paramètre [tb.name] en lieu et place du nom de table.
    End If
    Next tb
    End Sub

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 73
    Par défaut
    Merci de ta réponse, même s'il a fallu que je me concentre à mort pour tous comprendre!!! lol


    Et je te répondrais oui, il y a d'autres tables que celles ci dans la base.

    De plus, elle ne commence pas toutes pareil, en fait il y cinq groupes car 5 sociétés (ex: sociétéA_001, société_A_002, etc...).

    Merci donc si tu peux m'aider.



  6. #6
    Expert confirmé
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Par défaut
    Tu prends ton SQL.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO BASE_FACTURATION ( ID, no_societe, mnemonique, id_cpt_cli, no_avoir_facture, montant_TTC, Devise, nom_societe, typologie, annee_mois, pièce_annulee, definitif, comptabilise, niveau_traitement, niveau_trt_achat, facture_de_reference )
    SELECT E_005!no_avoir_facture & "-" & E_005!no_societe AS ID, E_005.no_societe, E_005.mnemonique, E_005.id_cpt_cli, E_005.no_avoir_facture, E_005.montant_TTC, E_005.Devise, E_005.nom_societe, E_005.typologie, E_005.annee_mois, E_005.pièce_annulee, E_005.definitif, E_005.comptabilise, E_005.niveau_traitement, E_005.niveau_trt_achat, E_005.facture_de_reference
    FROM E_005
    Tu te fais un beau rechercher / remplacer (dans notepad ou n'importe)
    E_005 par T0, et tu le termines par ensuite dans le code tu définis une variable qui contient ce SQL générique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim strSQL As String
    strSQL = "INSERT INTO BASE_FACTURATION ( ID, no_societe, mnemonique, id_cpt_cli, no_avoir_facture, montant_TTC, Devise, nom_societe, typologie, annee_mois, pièce_annulee, definitif, comptabilise, niveau_traitement, niveau_trt_achat, facture_de_reference )
    SELECT T0!no_avoir_facture & '-' & T0!no_societe AS ID, T0.no_societe, T0.mnemonique, T0.id_cpt_cli, T0.no_avoir_facture, T0.montant_TTC, T0.Devise, T0.nom_societe, T0.typologie, T0.annee_mois, T0.pièce_annulee, T0.definitif, T0.comptabilise, T0.niveau_traitement, T0.niveau_trt_achat, T0.facture_de_reference
    FROM %MaTable% As T0"
    après tu utilises la boucle sur les noms de table faite par Faw avec un simple replace

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL Replace(strSQL, "%MaTable%", "[" & tb.name & "]")
    à toi de jouer pour filtrer les noms des tables, Faw t'a donné la trame.

Discussions similaires

  1. conflit d'ecriture VBA Access 2003 SQL
    Par christian81 dans le forum VBA Access
    Réponses: 1
    Dernier message: 17/09/2007, 10h30
  2. SQL dans VBA access 2002
    Par kryssy dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 28/06/2006, 21h25
  3. Réponses: 12
    Dernier message: 10/06/2006, 19h07
  4. [VBA-A]SQL Between VBA Access Need Backup :)
    Par rider57 dans le forum VBA Access
    Réponses: 1
    Dernier message: 29/05/2006, 11h03
  5. Aide pour cde vba Access (2003)
    Par alpha88 dans le forum Access
    Réponses: 1
    Dernier message: 05/04/2006, 11h14

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