【发布时间】: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 工作,但它不能解决我的问题。