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 65 66
|
Public Function FctExecOracle1( _
ByVal StrUsr1 As String, _
ByVal StrPwd1 As String, _
ByVal StrNomBase As String, _
ByVal StrRequete As String, _
ByVal WbkActif1 As Workbook, _
ByVal StrFeuilleDestination As String, _
Optional ByVal StrCelluleDestination As String = "A1") As Boolean
Dim SheetActif As Worksheet
Dim StrBaseConnexion As String
Dim StrCmdSQL As String
Dim BoolResult As Boolean
Dim StrNomProcApp As String 'Stockage de la procédure appelante
On Error GoTo Erreur
StrNomProcApp = NomProc
NomProc = "FctExecOracle1" 'Gestion des erreurs (procédure en cours)
BoolResult = False
Set SheetActif = WbkActif1.Worksheets(StrFeuilleDestination)
SheetActif.Visible = True
SheetActif.Select
Selection.ClearContents
SheetActif.Range(StrCelluleDestination).Activate
StrBaseConnexion = "ODBC;DRIVER={Microsoft ODBC pour Oracle}" & _
";UID=" & StrUsr1 & _
";PWD=" & StrPwd1 & _
";SERVER=" & StrNomBase
StrCmdSQL = FctFiltreCaractere(StrRequete)
StrCmdSQL = FctFiltreQuote(StrRequete)
'/!\ D : Pour tester => chaîne SQL reconstituée, donnée ici à titre d'exemple...
' StrRequete = "SELECT sum(nvl(a0,0)) ""A0"", sum(nvl(a1,0)) ""A1"", sum(nvl(a2,0)) ""A2"", sum(nvl(a3,0)) ""A3"", sum(nvl(a4,0)) ""A4"", sum(nvl(a5,0)) ""A5"", sum(nvl(a6,0)) ""A6"", sum(nvl(autoa0,0)) ""Auto A0"", sum(nvl(autoa1,0)) ""Auto A1"", sum(nvl(autoa2,0)) ""Auto A2"", sum(nvl(autoa3,0)) ""Auto A3"", sum(nvl(autoa4,0)) ""Auto A4"", sum(nvl(autoa5,0)) ""Auto A5"", sum(nvl(autoa6,0)) ""Auto A6"", sum(nvl(b0,0)) ""B0"", sum(nvl(b1,0)) ""B1"", sum(nvl(b2,0)) ""B2"", sum(nvl(b3,0)) ""B3"", sum(nvl(b4,0)) ""B4"", sum(nvl(b5,0)) ""B5"", sum(nvl(b6,0)) ""B6"", sum(nvl(autob0,0)) ""Auto B0"", sum(nvl(autob1,0)) ""Auto B1"", sum(nvl(autob2,0)) ""Auto B2"", sum(nvl(autob3,0)) ""Auto B3"", sum(nvl(autob4,0)) ""Auto B4"", sum(nvl(autob5,0)) ""Auto B5"", sum(nvl(autob6,0)) ""Auto B6"", sum(recette) ""Recette"", sum(cap_a) ""Cap A"", sum(cap_b) ""Cap B"", sum(traf_a + traf_b) ""Trafic total"" FROM tog_base_resa WHERE (dpt_date between '01/07/08' and '30/07/08')" & _
' "and ENTITE in ('PARISRHONE ', 'RHONEPARIS', 'PAITALIE', 'ITALIEPA', 'PARISALPES', 'ALPESPARIS', 'PAGRENOBLE', 'GRENOBLEPA', 'PAGENEVE', 'GENEVEPA', 'PABOUR', 'BOURPA', 'PASUIS', 'SUISPA') and leg_orig=peak_leg order by entite, dpt_date, niveau, type_train"
'/!\ F : Pour tester
With ActiveSheet.QueryTables.Add(Connection:=StrBaseConnexion, _
Destination:=Range(StrCelluleDestination), Sql:=CStr(StrCmdSQL))
.FieldNames = True
.AdjustColumnWidth = True
.Refresh (False) 'attend le résultat avant de continuer la procédure
End With
BoolResult = True
Sortie:
Set SheetActif = Nothing
FctExecOracle1 = BoolResult
Exit Function
Erreur:
MsgBox Err.Number & " - " & Err.Description, vbCritical, CstApplication
GoTo Sortie
End Function |