Global OraSession As Object
Global OraDatabase As Object
Global theDynaset As Object
Sub macro1()
Connect = "easi/easi"
user/password
base = "easpas1"
sid de la base
' Connexion à la base
Set OraSession = CreateObject("OracleInProcServer.XOraSession")
Set OraDatabase = OraSession.OpenDatabase(base, Connect, 0&)
' Définition de la requête
stmt = "select * from all_tables where rownum < 11"
stmt contient la requête a exécuter
' Parsing de la requête
Set theDynaset = OraDatabase.CreateDynaset(stmt, 0&)
' theDynaset.Fields(n).Name -> nom de la n-iéme colonne
' theDynaset.Fields(n).Value -> valeur de la n-iéme colonne
' theDynaset.DbMoveNext -> enregistrement suivant
' theDynaset.RecordCount -> nombre de lignes
' theDynaset.Fields.Count -> nombre de colonne
bah là je peux pas commenter plus quand même
' par exemple
reccount = theDynaset.RecordCount
fldcount = theDynaset.Fields.Count
ici on boucle pour écrire le nom des colonnes dans la feuille excel
For Nocolonne = 1 To fldcount
Cells(1, Nocolonne) = theDynaset.Fields(Nocolonne - 1).Name
Columns(Nocolonne).ColumnWidth = 40
Next Nocolonne
If (reccount = 0) Then
Application.StatusBar = "The table " + Cells(4, 6) + " is empty."
Else
Application.StatusBar = Str(theDynaset.RecordCount) & " lines into " + Cells(4, 6) + "."
' Display data
ici on bloucle pour afficher les lignes retournées par le select
For NoLigne = 2 To reccount + 1
For Nocolonne = 1 To fldcount
Cells(NoLigne, Nocolonne) = theDynaset.Fields(Nocolonne - 1).Value
If (Nocolonne Mod 2) = 0 Then
Cells(NoLigne, Nocolonne + 1).Interior.ColorIndex = 40
End If
Next Nocolonne
If Nocolonne <> reccount Then
theDynaset.DbMoveNext
on continue à parcourir les lignes retournées par la requête
End If
Next NoLigne
End If
End Sub
Partager