我在Excel中有一个宏来运行.sql文件,该文件连接到Oracle以提取数据。我的问题是,根据.sql文件的第一行是否为注释行,我有一个非常奇怪的“错误”。
如果只有--
或整个注释行位于选择之后,则可以使用,但是如果第一行的--
之后有某些内容,则无法使用。 (与/**/
的处理相同。不能在/ *和* /之间插入内容,否则将无法正常工作。)
以下是.sql的一些示例:
示例1(无效):
-- test
select
*
from ABC.ABC_FIELD ABCField
where what_ever = 15
示例2(可行):
--
select
*
from ABC.ABC_FIELD ABCField
where what_ever = 15
示例3(可行):
select
-- test
*
from ABC.ABC_FIELD ABCField
where what_ever = 15
以下是VBA可能相关的代码。似乎在rs.Open行失败(rs
根本没有打开),但是我没有收到任何错误。因此rs.Fields.Count
等于0,这使得尝试读取记录失败。
Public cnn As ADODB.Connection
...
Set cnn = New ADODB.Connection
cnn.ConnectionString = "Dsn=ABC_ORA;UID=" & UserId & ";PWD=" & Password & ";Persist Security Info=true"
cnn.Open
...
Dim myFile As String
Dim text As String
Dim textline As String
LaRequete = ""
myFile = Application.Worksheets(FeuilleParametres).Range("FICHIER").Value
Open myFile For Input As #1
Do Until EOF(1)
Line Input #1,textline
LaRequete = LaRequete & textline & " " & vbCrLf
Loop
Close #1
...
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.Open LaRequete,cnn.ConnectionString
For iCols = 0 To rs.Fields.Count - 1
resultatsSheet.Cells(1,iCols + 1).Value = rs.Fields(iCols).Name
Next
这是我在ADODB.Connection
中遇到的两个错误。抱歉,描述是法文。
Error 1
Native Error: 0
Number : -2147217887
Source : "microsoft OLE DB Provider for ODBC Drivers"
Description : "Une opération OLE-DB en plusieurs étapes a généré des erreurs. Vérifiez chaque valeur d'état OLE-DB disponible. Aucun travail n'a été effectué."
Error 2
Help Context : 1240640
Native Error : -2147217887
Number : -2147217887
Source : "ADODB.Connection"
Description : "Le fournisseur ne prend pas en charge cette propriété."
我希望我提供了解决此问题所需的所有信息。谢谢。