我是在 VBA 中使用 SQL 的新手,似乎无法使我的查询正常工作。我在论坛中搜索并尝试了许多不同的解决方案,但无济于事。
这是我的代码:
Sub RequeteClasseurFerme_Excel2007()
Dim Cn As ADODB.Connection
Dim Fichier As String
Dim NomFeuille As String, texte_SQL As String
Dim Rst As ADODB.Recordset
Dim CoPo As String
'Définit le classeur fermé servant de base de données
Fichier = ThisWorkbook.Worksheets("Menu").Range("B7").Value
'Nom de la feuille dans le classeur fermé
NomFeuille = "Data"
CoPo = ActiveWorkbook.Worksheets("Menu").Range("B3").Value
Set Cn = New ADODB.Connection
'--- Connexion ---
With Cn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
& Fichier & ";Extended Properties=""Excel 12.0;HDR=NO;"""
.Open
End With
'-----------------
'Request
request_SQL = "SELECT * FROM [" & NomFeuille & "$] WHERE [" & NomFeuille & "$].[CodePostal] LIKE '" & CoPo & "%'"
Set Rst = New ADODB.Recordset
Set Rst = Cn.Execute(request_SQL)
Worksheets("Data2").Range("A1").CopyFromRecordset Rst
'
'... la requête ...
'
'rst.Find
'--- Fermeture connexion ---
Cn.Close
Set Cn = Nothing
我很确定它是这样的,因为当我删除它时,它确实返回了我所有的结果。
您应该始终使用参数:
Sub RequeteClasseurFerme_Excel2007()
Dim Cn As ADODB.Connection
Dim Fichier As String
Dim NomFeuille As String, texte_SQL As String
Dim cmd As ADODB.Command
Dim Rst As ADODB.Recordset
Dim CoPo As String
'Définit le classeur fermé servant de base de données
Fichier = ThisWorkbook.Worksheets("Menu").Range("B7").Value
'Nom de la feuille dans le classeur fermé
NomFeuille = "Data"
CoPo = ActiveWorkbook.Worksheets("Menu").Range("B3").Value
Set Cn = New ADODB.Connection
'--- Connexion ---
With Cn
.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
& Fichier & ";Extended Properties=""Excel 12.0;HDR=YES;"""
.Open
End With
'-----------------
'Request
request_SQL = "SELECT * FROM [" & NomFeuille & "$] WHERE [" & NomFeuille & "$].[CodePostal] LIKE ?"
Set cmd = New ADODB.Command
cmd.ActiveConnection = Cn
cmd.CommandText = request_SQL
cmd.Parameters.Append cmd.CreateParameter("@postalCode", adVarChar, adParamInput, 50)
cmd.Parameters("@postalCode").Value = CoPo + "%"
Set Rst = cmd.Execute
Worksheets("Data2").Range("A1").CopyFromRecordset Rst
'
'... la requête ...
'
'rst.Find
'--- Fermeture connexion ---
Cn.Close
Set Cn = Nothing
End Sub
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句