【问题标题】:ADODB object ignoring text in excelADODB对象忽略excel中的文本
【发布时间】:2014-02-07 16:14:43
【问题描述】:

我在 excel 中有一个数据表,其中商店编号列中包含数字和文本。我需要通过 VBA 中的 ADODB 对象使用 sql 来获取列中商店编号的列表。我正在使用以下内容来设置 ADODB。

问题:如果查询首先遇到一个数字,那么该字段将被视为数字并忽略文本。如果首先点击文本,则忽略数字。

我正在使用以下内容来设置 ADODB。这些在工作表模块提示me. 中。

Public Function Query(qry As String) As ADODB.Recordset
Dim cn As ADODB.Connection '* Connection String
Dim rs As ADODB.Recordset '* Record Set
Dim sQuery As String '* Query String
Dim FileName As String

On Error GoTo QryErr

Set cn = New ADODB.Connection
FileName = ThisWorkbook.Path & "\" & ThisWorkbook.Name
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & FileName & _
    ";Extended Properties=Excel 8.0;Persist Security Info=False"
cn.ConnectionTimeout = 40
cn.Open

Set rs = New ADODB.Recordset
Select Case LCase(qry)
    Case "dry": sQuery = SQLDry
    Case "frz": sQuery = SQLFrz
    Case "fsh": sQuery = SQLFsh
    Case "temp": sQuery = SQLTemp
    Case Else: GoTo QryErr
End Select
rs.ActiveConnection = cn
rs.Source = sQuery
rs.Open

Set Query = rs
If Not rs Is Nothing Then Set rs = Nothing
If Not cn Is Nothing Then Set cn = Nothing

QryErr:
If Err <> 0 Then
Debug.Assert Err = 0
MsgBox Err.Description
End If

End Function

对于 SQL 部分,我有以下内容。

Private Function SQLTemp() As String
Dim Name As String
Name = Me.Name
SQLTemp = "SELECT str([" & Name & "$].Store) as Store " & _
"FROM [" & Name & "$] " & _
"GROUP BY [" & Name & "$].Store"
End Function

如您所见,我尝试将字段转换为 str(),但没有帮助。

如何让查询将列视为文本,以便返回所有值。我想避免在我所有的数字前面加上 '。

【问题讨论】:

  • 请问,为什么要用adodb来做这个?
  • 我需要在 excel 中发生这种情况。除了 adodb 之外,我还可以尝试吗?我会尝试添加 IMEX=1,pnuts。
  • 我让 IMEX=1 工作,但它不能解决我的问题。

标签: sql excel vba adodb


【解决方案1】:

5 年前问过!我有同样的问题。我的解决方案是将违规列(具有“特殊字符”和“TEXT”数据类型的列)的数据类型更改为“VARCHAR”,或者您可以在查询中删除特殊字符,或者通过以下方式更改 CharacterSet Schema.ini,正如@Tim Williams 建议的那样 (msdn.microsoft.com/en-us/library/ms709353(v=vs.85).aspx)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-11
    • 1970-01-01
    • 1970-01-01
    • 2021-02-17
    • 2020-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多