【发布时间】:2012-12-04 02:57:03
【问题描述】:
我正在使用ADODB连接编写SQL语句来提取excel vba中的数据。
我的问题是我有一个单元格,其中包含一个长度超过 255 个字符的字符串。
我想知道是否有办法让我继续使用 ADODB 连接来选择超过 255 个字符的数据
这是我使用的功能。
Public Function QueryRead(sqlArg As String) As Dictionary
Dim pConnection As ADODB.Connection
Set pConnection = New ADODB.Connection
With pConnection
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=" & ActiveWorkbook.FullName & _
";Extended Properties=Excel 8.0;"
'.Provider = "MSDASQL"
'.ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};" & _
"DBQ=" & App.Path & "\ExcelSrc.xls; "
.CursorLocation = adUseClient
.Open
End With
Dim pMap As New ADODB.Recordset
Dim sql As String
sql = sqlArg
Dim resultSet As New Dictionary
pMap.Open sql, pConnection
If pMap.RecordCount > 0 Then
Dim record As Variant
Dim counter As Integer
counter = 0
Do Until pMap.EOF
Dim resultRecord As Dictionary
Set resultRecord = New Dictionary
For Each record In pMap.fields
resultRecord.Add record.Name, record.value
Next
Dim index As String
index = CStr(counter)
resultSet.Add index, resultRecord
counter = counter + 1
pMap.MoveNext
Loop
End If
pMap.Close
pConnection.Close
Set QueryRead = resultSet
End Function
我是这样称呼它的
Set resultSet = model.QueryRead("SELECT * FROM [Database$] WHERE [Level] = 2 AND [Item_No] = '" & itemNo & "'")
我的工作表名为 Database,它有 Level 和 Item_No 等列。
公式列下的一个单元格的字符串长度超过 255 个字符。
请指教。
更新
我想强调一点
a) 提取的单个字段数据超过了 255 个字符的限制。意思是说,“SELECT * FROM”中的*
b) 超过 255 个字符的不是我的输入参数
c) 超过 255 个字符的不是我的查询字符串
【问题讨论】:
-
尝试使用
ADODB.Command和数据绑定(Command.Parameters.Append Command.CreateParameter(text_index,enum_type,enum_direction,size,value))。 -
你能给我一个更清晰的图片和答案吗?谢谢。