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 83 84 85 86 87 88 89 90 91 92 93 94 95 96
| Public Enum MyAdo
ACCESS97
ACCESS2000
ACCESS2012
ODBC
ORACLE
SQLSERVER2005
SQLServer2008R2
SQLite
SQLite3
CSV
xls
MySQL
End Enum
Sub Test()
Dim CnServeur As Object, CnExcel As Object: Set CnServeur = CreateObject("AdoDb.Connection"): Set CnExcel = CreateObject("AdoDb.Connection")
CnServeur.Open = GenereCSTRING(SQLSERVER2005, "TblCAB", "MOI", "MOI", "DESKTOP-NQG9COU\SQLEXPRESS")
CnExcel.Open GenereCSTRING(xls, ThisWorkbook.FullName)
Sql = "CREATE TABLE #MyTblCAB (CAB varchar(30))" & vbCrLf
With CnExcel.Execute("Select [CAB] From [TblCAB$]")
If Not .EOF Then
t = "('" & .GetString(, , "", "'),('", "")
t = Left(t, Len(t) - 3)
Sql = Sql & "INSERT INTO #MyTblCAB VALUES " & vbCrLf
Sql = Sql & t & vbCrLf
End If
.Close
End With
CnServeur.Execute Sql
ActiveCell.CopyFromRecordset CnServeur.Execute("Select * from #MyTblCAB")
Sql = "dbo.MAJ_TableCAB" ' je nomme ma procédure stockée
With CreateObject("ADODB.Command")
.ActiveConnection = CnServeur
.CommandText = Sql
.CommandTimeout = 0 'evite que le delai d'attente de requete expire (que la requte bugue)
.CommandType = 4 'invoque une procédure stockée. Le serveur SQL doit savoir où aller chercher la commande, c'est le pourquoi de la ligne qui spécifie le CommandType
.Parameters.Append .CreateParameter("@nom", 200, 1, 129, "AA") 'CAB
Set Rs = .Execute
ActiveCell.CopyFromRecordset Rs
End With
With CreateObject("ADODB.Command")
.ActiveConnection = CnServeur
.CommandText = Sql
.CommandTimeout = 0 'evite que le delai d'attente de requete expire (que la requte bugue)
.CommandType = 4 'invoque une procédure stockée. Le serveur SQL doit savoir où aller chercher la commande, c'est le pourquoi de la ligne qui spécifie le CommandType
.Parameters.Append .CreateParameter("@nom", 200, 1, 129, "BB") 'CAB
ActiveCell.CopyFromRecordset .Execute
End With
End Sub
Private Function GenereCSTRING(TYPEBASE As MyAdo, Base As String, Optional User As String, Optional PassWord As String, Optional Server As String, Optional AvecTitre As Boolean = True)
'Permet de générer le Cornec String
'1 - ACCESS 97
'2 - ACCESS 2000
'3 - ACCESS 2012
'4 - ODBC
'5 - ORACLE
'6 - SQL SERVER 2005
'7 - SQL Server 2008 R2
'8 - SQLite
'9 - SQLite3
If Trim("" & Base) = "" Then Base = Base
Select Case TYPEBASE
Case xls
GenereCSTRING = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Base & ";Extended Properties=""Excel 12.0;HDR=" & Array("No", "YES")(Abs(AvecTitre)) & ";"""
Case ACCESS97
GenereCSTRING = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=" & Base
Case ACCESS2000
GenereCSTRING = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Base & ";Persist Security Info=False"
Case ACCESS2012
GenereCSTRING = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Base & ";"
Case MySQL
GenereCSTRING = " DRIVER={MySQL ODBC 5.1 Driver};SERVER=" & Server & ";UID=" & User & ";DATABASE=" & Base & ";Password=" & PassWord
Case ODBC
GenereCSTRING = "Provider=MSDASQL.1;Password=" & PassWord & ";Persist Security Info=True;User ID=" & User & ";Data Source=" & Base
Case ORACLE
GenereCSTRING = "Provider=OraOLEDB.Oracle.1;Password=" & PassWord & ";Persist Security Info=True;User ID=" & User & ";Data Source=" & Base
Case SQLSERVER2005
'GenereCSTRING = "Driver={SQL Server};SERVER=" & Server & ";DATABASE=" & Base & ";UID=" & User & ";Pwd=" & PassWord & ";"
GenereCSTRING = "Provider=SQLOLEDB.1;Password=" & PassWord & ";Persist Security Info=True;User ID=" & User & ";Initial Catalog=" & Base & ";Data Source=" & Server
Case SQLServer2008R2
GenereCSTRING = "Provider=SQLNCLI;Server=" & Server & ";Database=" & Base & ";UID=" & User & ";PWD=" & PassWord & ";"
Case SQLite
GenereCSTRING = "Provider=OleSQLite.SQLiteSource.3; Data Source=" & Base
GenereCSTRING = "Driver={SQLite ODBC (UTF-8) Driver};Database=" & Base & ";StepAPI=;Timeout="
Case SQLite3
GenereCSTRING = "Driver={SQLite3 ODBC Driver};Database=" & Base & ";LongNames=0;Timeout=4000;NoTXN=0;SyncPragma=NORMAL;StepAPI=0;"
Case CSV
GenereCSTRING = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Server & ";Extended Properties=""Text;HDR=" & Array("No", "YES")(Abs(AvecTitre)) & ";FMT=Delimited;"""
Case Else
GenereCSTRING = "PAS ASSEZ DE PARAMETRES RENSEIGNES !!!"
End Select
End Function |
Partager