Activé la requet SQL avec du VBA

Bonjour à tous ,

Je souhaiterai mettre une requet SQL (déjà faite et fonctionnelle )dans du VBA afin de pouvoir aller chercher ma base de données en automatique ?

Avez vous des pistes ......

D'avance merci

Bonjour,

Oui, on peux indiquer des pistes. Mais il faudrait d'abord connaitre le support de la base : Access?, Dbase? MySql? Sql-Server? Oracle?

Pierre

Bonjour pierre ,

Merci de prendre le temps de me répondre

le support de base : MYSQL

ci dessous la requet en question

SELECT t.id as id_statut,a.id,t.libelle as statut,DATE_FORMAT(date_cloture,'%d-%m-%Y %H:%i') as DateCloture

,revendeur,u1.Prenom as Declenche_Prenom,u1.Nom as Declenche_Nom,u2.Prenom as Suivi_Prenom,u2.Nom as Suivi_Nom

,a.telephone,l.enseigne,code_orma,telephone_appel,code_orma_modif_clot,telephone_2

FROM att a,att_typecloture t,utilisateurs u1, utilisateurs u2,att_livraison l

WHERE t.id = a.statut

AND a.statut > -1

AND (

( t.id BETWEEN 5 AND 9 ) OR t.id = 12 OR t.id = 13

)

AND u1.UserId = a.declenche_par

AND u2.UserId = a.suivi_par

AND a.id = l.att_id

AND a.date_create BETWEEN '2019-01-01 00:00:00' AND '2019-01-31 23:59:59'

ORDER BY date_cloture DESC

Ok,

Pour une base Mysql, d'abord un script de connexion et de déconnexion (en renseignant utilement les parties "perso" (adresse_serveur, nom_de_la_base, identifiant, mot_de_passe) :

Public Cnx As Object, Rst As Object

Sub Connect_MySql(Optional x As Byte)
Dim Db As String

    Set Cnx = CreateObject("ADODB.Connection")
    Cnx.Provider = "MSDASQL"
    With Sheets("config")
        Db = "DRIVER={MySQL ODBC 5.1 Driver};" & _
             "SERVER= adresse_serveur;" & _
             "DATABASE= nom_de_la_base;" & _
             "USER= identifiant;" & _
             "PASSWORD= mot_de_passe;" & _
             "Option=3"
    End With
    Cnx.Open Db
    Set Rst = CreateObject("ADODB.Recordset")
End Sub

Sub Close_Cnx(Optional x As Byte)
    On Error Resume Next
    If x > 0 Then Rst.Close
    Cnx.Close
    Set Cnx = Nothing
    Set Rst = Nothing
End Sub

Ensuite pour un SELECT (dont le résultat est ici collé en "Feuil1"), on écrit une procédure du genre :

Sub Lire()
Dim Req As String, T As Variant

    On Error GoTo errhdlr
    Connect_MySql

    Req = "SELECT t.id as id_statut,a.id,t.libelle as statut, " & _
          " DATE_FORMAT(date_cloture,'%d-%m-%Y %H:%i') as DateCloture, " & _
          " revendeur,u1.Prenom as Declenche_Prenom,u1.Nom as Declenche_Nom, " & _
          " u2.Prenom as Suivi_Prenom,u2.Nom as Suivi_Nom,a.telephone, " & _
          " l.enseigne,code_orma,telephone_appel,code_orma_modif_clot,telephone_2 " & _
          " FROM att a,att_typecloture t,utilisateurs u1, utilisateurs u2,att_livraison l " & _
          " WHERE T.ID = a.statut " & _
          " AND a.statut > -1 " & _
          " AND (( t.id BETWEEN 5 AND 9 ) OR t.id = 12 OR t.id = 13) " & _
          " AND u1.UserId = a.declenche_par " & _
          " AND u2.UserId = a.suivi_par " & _
          " AND a.id = l.att_id " & _
          " AND a.date_create BETWEEN '2019-01-01 00:00:00' AND '2019-01-31 23:59:59' " & _
          " ORDER BY date_cloture DESC "

    Rst.Open Req, Cnx
    If Not (Rst.EOF And Rst.BOF) Then
        Rst.MoveFirst
        T = Rst.GetRows
        With Sheets("Feuil1")
            .Range("A1").Resize(UBound(T, 2) + 1, UBound(T, 1) + 1) = Application.Transpose(T)
        End With
    End If
    Close_Cnx
    Exit Sub

errhdlr:
    Close_Cnx
    MsgBox "Lire - Erreur " & Err.Number & vbCrLf & Err.Description
End Sub

Pierre

Super

Merci pierre

Rechercher des sujets similaires à "active requet sql vba"