dysorthographie
XLDnaute Accro
Bonjour,
Je me suis longuement posé la question de savoir si je devais publier cette source.
En effet de plus en plus nous trouvons sur les forum des adeptes de Power Query qui ne voient pas d'un bon œil l'utilisation d’ADO.
Personnellement je dispose d’Office 2007 je n’ai pas accès à Power Query.
Ayant trouvé, sur ce même forum, des utilisateurs intéressés par ma proposition m’ont convaincu de poster ma solution.
Ici l’idée est de proposer un requêteur universel, permettant d’exécuter des requêtes sur n’importe quel type de base de données.
Commençons par la connexion aux base de données :
TYPEBASE permet de définir s’il s’agit d’une base Access, SQL Serveur, Etc.
Les autres paramètres sont optionnels et doivent être utilisés en fonction de la connexion à effectuer.
Connexion à Sql serveur, Oracle, MySQL:
Connexion ACCESS :
Connexion Excel :
Connexion CSV,TXT
Quand on utilise une connexion CSV, il peut s’avérer utile de préciser quelques informations, le type de séparateur de colonnes par exemple :
Fichier Shema.ini :
Maintenant que nous avons vu la gestion du connexion string nous pouvons exécuter des requêtes SQL :
avec paramètres :
Vous pouvez récupérer le nom de toutes les tables :
Je me suis longuement posé la question de savoir si je devais publier cette source.
En effet de plus en plus nous trouvons sur les forum des adeptes de Power Query qui ne voient pas d'un bon œil l'utilisation d’ADO.
Personnellement je dispose d’Office 2007 je n’ai pas accès à Power Query.
Ayant trouvé, sur ce même forum, des utilisateurs intéressés par ma proposition m’ont convaincu de poster ma solution.
Ici l’idée est de proposer un requêteur universel, permettant d’exécuter des requêtes sur n’importe quel type de base de données.
Commençons par la connexion aux base de données :
VB:
Public Function GenereCSTRING(TYPEBASE As MyConst, _
Optional User As String, _
Optional Server As String, _
Optional Password As String, _
Optional Base As String, _
Optional Titre As Boolean)
TYPEBASE permet de définir s’il s’agit d’une base Access, SQL Serveur, Etc.
Les autres paramètres sont optionnels et doivent être utilisés en fonction de la connexion à effectuer.
Connexion à Sql serveur, Oracle, MySQL:
VB:
Cn = GenereCSTRING(SQLSERVER2005, "UserName", "ServerName", "Password", "MyBase")
Cn = GenereCSTRING(MySQL, "UserName", "ServerName", "Password", "MyBase")
Cn = GenereCSTRING(ORACLE, "UserName", "ServerName", "Password", "MyBase")
Connexion ACCESS :
VB:
Cn = GenereCSTRING(ACCESS, Base:="C:\Myrep\AAA.accdb", Password:="Password")
Connexion Excel :
VB:
Cn = GenereCSTRING(Excel, Base:="C:\Myrep\MyExcel.xlsx", Titre:=True/False)
Connexion CSV,TXT
VB:
Cn = GenereCSTRING(CSV, Server:="C:\Myrep", Titre:=True/False)
Quand on utilise une connexion CSV, il peut s’avérer utile de préciser quelques informations, le type de séparateur de colonnes par exemple :
VB:
Dim P()
ReDim P(1 To 2, 1 To 4)
P(1, 1) = "COL1": P(1, 2) = "TOTO": P(1, 3) = TypeCsv.Text: P(1, 4) = 10
P(2, 1) = "COl2": P(2, 2) = "Date": P(2, 3) = TypeCsv.Date: P(2, 4) = 8
ShemaIn "toto.txt", "C:\Myrep\CSV Test", False, Fixe, ANSI, True, "YYYYMMDD", ".", P
Fichier Shema.ini :
Code:
[toto.txt]
Format= FixedLength
ColNameHeader=True
DateTimeFormat=YYYYMMDD
DecimalSymbol="."
COL1=TOTO Text Width 10
COL2=Date DateTime Width 8
Maintenant que nous avons vu la gestion du connexion string nous pouvons exécuter des requêtes SQL :
VB:
set Rs=ExecuteRequete( "SELECT Table1.* FROM Table1;", Cn)
avec paramètres :
VB:
Set Rs = ExecuteRequete("SELECT Table1.* FROM Table1 Where Champ1=? AND Champ2=?;", Cn, "Champ1", "TOTO", "Champ2", "TITI")
Vous pouvez récupérer le nom de toutes les tables :
VB:
Dim Cn As String, T() As String
Cn = GenereCSTRING(CSV, Server:="C:\Myrep", Titre:=True)
T() = ListeTables(Cn)