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 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
' indices des pilotes d'accès aux données
Public Const tpzPiloteODBC = 0 ' pilote par défaut
Public Const tpzPiloteSQLSERVER = 1
Public Const tpzPiloteORACLE = 2
Public Const tpzPiloteACCESS = 3
' chaînes de caractères pour la liste pilote d'accès aux données
Public tpzNomListePilotes(tpzPiloteCount) As String '= ["connexion ODBC", "Microsoft SQL Server", "Oracle", "Microsoft Access"]
Public tpzDllPilotes(tpzPiloteCount) As String '= ["crdb_odbc.dll", "crdb_ado.dll", "crdb_oracle.dll", "crdb_ado.dll"]
Private Function ConnectTables(ByRef pCrxReport As CRAXDRT.Report) As Boolean
Dim crDBTable As CRAXDRT.DatabaseTable
Dim crConnProperty As CRAXDRT.ConnectionProperty
On Error GoTo ErrorHandler
' définit les propriétés de connexion pour chacune des tables du rapport
For Each crDBTable In pCrxReport.Database.Tables
With crDBTable.ConnectionProperties
crDBTable.TestConnectivity
If Not (crDBTable.DllName = "crdb_query.dll") Then
' récupère la DLL de connexion à la base de données
' en fonction du choix sélectionné dans la liste
crDBTable.DllName = tpzDllPilotes(lstPilotesBDD.ListIndex)
' efface toutes les propriétés de connexion
.DeleteAll
End If
' restaure ces propriétés en fonction du type de connexion
Select Case lstPilotesBDD.ListIndex
Case tpzPiloteODBC
' définit le DSN et les infos de login
Call .Add("DSN", txtRptServer.Text)
Call .Add("Database", txtRptDatabase.Text)
Call .Add("User Id", txtRptUser.Text)
Call .Add("Password", txtRptPassword.Text)
Case tpzPiloteACCESS
' définit le fichier BDD et le mot de passe
Call .Add("Database Name", txtRptDatabase.Text)
' si un mot de passe est défini, on met à jour la propriété
If Len(txtRptPassword.Text) > 0 Then
Call .Add("Database Password", txtRptPassword.Text)
End If
Case tpzPiloteORACLE
' définit le nom du service et les infos de login
Call .Add("Server", txtRptServer.Text)
Call .Add("User Id", txtRptUser.Text)
Call .Add("Password", txtRptPassword.Text)
Case tpzPiloteSQLSERVER
' définit la source de données et les infos de login
Call .Add("Data Source", txtRptServer.Text)
Call .Add("Database", txtRptDatabase.Text)
Call .Add("Provider", "SQLOLEDB")
Call .Add("User Id", txtRptUser.Text)
Call .Add("Password", txtRptPassword.Text)
End Select
End With
Next
' renvoie VRAI pour connection OK
ConnectTables = True
Exit Function
ErrorHandler:
' renvoie FALSE pour connection NOK
ConnectTables = False
End Function |
Partager