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 :

Créer un table à partir d'une requête SQL


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Technicien SI
    Inscrit en
    Septembre 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien SI
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2
    Par défaut Créer un table à partir d'une requête SQL
    Bonjour à toutes et à tous,

    Je suis un novice en Access VBA qui a besoin d'aide dans un travail où je suis en difficulté:
    On m'a demandé de faire une connexion à une base de données Postgre avec un formulaire et des listes déroulantes qui modifie dynamiquement le server, la database et la table que je veux ouvrir et afficher, ça c'est chose faite. J'ai réussi à faire une requête SELECT simple sur cette table mais maintenant je n'arrive pas à faire apparaître le résultat de cette requête (Champs+données) dans une Table.

    Au mieux, j'arrive à afficher un champ de colonne et une ligne dans un formulaire mais ça s'arrête là; Est-ce que vous pourriez m'aider svp?

    ---

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    Private Sub Connexion_Select_Click()
     
    Dim CONN As ADODB.Connection
    Dim requestSA As ADODB.Recordset
     
    Dim intLignes As Integer, intColonnes As Integer
    Dim intLig As Integer, intCol As Integer
     
    Set CONN = New ADODB.Connection
    Set requestSA = New ADODB.Recordset
     
    Var_Serveur = Forms![Connexion]![Field_Serveur]
    Var_Database = Forms![Connexion]![Field_Database]
    Var_User = Forms![Connexion]![Field_User]
    Var_Password = Forms![Connexion]![Field_Password]
    Var_Table = Forms![Connexion]![Field_Table]
     
    CONN.ConnectionString = "DRIVER={PostgreSQL UNICODE};Port=xxx;SERVER=" & Var_Serveur & ";DATABASE=" & Var_Database & ";Uid=" & Var_User & ";Pwd=" & Var_Password & ""
     
    CONN.Open
    MsgBox "connexion réussie"
    DoCmd.OpenForm "Formulaire1"
     
    If Var_Serveur = "xxxxxxxxxx" Then
        If Var_Database = "xxx" Then
     
            requestSA.Open "SELECT * FROM public.""xxx""", CONN
     
        Else: MsgBox "Autre table dans la Production"
        End If
    ElseIf Var_Serveur = "xxxxxxxxxx" Then
        If Var_Database = "xxx" Then
            Dim TableDefName As DAO.TableDef
            Dim FieldName As String
            Dim i As Integer
     
            requestSA.Open "SELECT * FROM public." & Var_Table & "", CONN
     
     
            For i = 0 To requestSA.Fields.Count
            FieldName = requestSA.Fields.Item(0).Name
            Forms![Formulaire1]![Field1] = FieldName
     
            Next
     
            Do While (Not requestSA.EOF)
     
                Forms![Formulaire1]![Col1Lig1] = requestSA![user_id]
                Forms![Formulaire1]![Col2Lig1] = requestSA![UserName]
                Forms![Formulaire1]![Col3Lig1] = requestSA![Password]
                Forms![Formulaire1]![Col4Lig1] = requestSA![email]
                Forms![Formulaire1]![Col5Lig1] = requestSA![created_on]
                Forms![Formulaire1]![Col6Lig1] = requestSA![last_login]
                requestSA.MoveNext
            Loop
     
        Else: MsgBox "Autre table dans la recette"
        End If
    Else: MsgBox "Mauvaise sélection"
    End If
     
    'requestSA.Close
    CONN.Close
    End Sub
    --- Voilà mon "pâté", ne saignez pas des yeux tout de suite svp, délivrez-moi avant T_T

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    Bonjour.

    Si tu veux voir tes données comme une "table" il faut faire une table liée pas établir manuellement une connexion comme tu l'as fait.

    Pour créer une table liée, va dans l'onglet Données Externes et choisi l'option Plus puis base de données ODBC.

    Si tu ne veux pas faire de table liée alors il faut recopier tes données dans une table locale.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Technicien SI
    Inscrit en
    Septembre 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien SI
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2
    Par défaut
    J'ai souvent vu le terme des tables liées dans des discussions, est-ce que c'est possible de faire des tables liées, créées automatiquement grâce au code svp?

    A l'avenir, cette application sera modifier pour montrer tout les serveurs, database et tables avec les listes déroulante, et ça ne serait pas ergonomique pour eux qu'on leur fasse un "tuto" pour afficher la requête qu'ils ont rentrés.

    Faire un "DoCmd" d'un table, qui récupère tout les noms des colonnes sur la 1ere ligne, puis une boucle qui rempli le reste de la table créée avec la table, je pense que c'est possible? J'ai déjà testé d'autres boucles (à part celle de mon exemple) mais à chaque fois je dois louper quelque chose.

    ---

    En fait, j'aimerais que mon formulaire de base qui propose les listes déroulantes de Server, database, table et les champs user et password soit une version manuelle de la connexion ODBC où le client choisis via ce formulaire à quoi il veut être connecté plutôt que de rentrer une nouvelle connexion ODBC via le gestionnaire. Mais la table qu'affiche automatiquement Access depuis Postgre, je n'arrive pas à la faire en code svp.

Discussions similaires

  1. Réponses: 9
    Dernier message: 28/03/2018, 16h57
  2. [VxiR2] Créer un indicateur à partir d'une requête SQL
    Par BipBipBO dans le forum Deski
    Réponses: 4
    Dernier message: 29/07/2014, 09h18
  3. Création d'une table à partir d'une requête SQL
    Par GBAGO dans le forum Informix
    Réponses: 2
    Dernier message: 26/11/2009, 07h41
  4. Créer un tableau html à partir d'une requête sql
    Par biba35 dans le forum Langage
    Réponses: 5
    Dernier message: 05/02/2009, 09h14
  5. Réponses: 2
    Dernier message: 21/04/2008, 17h01

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