2014-09-24 276 views
0

我想从Access表导入数据到Excel中。我得到一个语法错误当我运行这条线时出现这个错误:。Select [Time],[Tank],FROM“UnitOneRouting”,WHERE [Date] =“& RpDate & ORDER BY Tank,Time”,cn,adOpenStatic ,adLockOptimistic,adCmdTable 在访问表中有四列(按顺序)日期,时间,坦克,评论。我只想输入两列,时间和坦克,但是按照坦克,时间的顺序;我想根据Excel工作表中给出的日期导入它们。谢谢从Access表导入数据到Excel表

如何重新排列以下部分以打开表格,选择列(基于日期)并导入数据。

随着RS '打开记录 。开 “UnitOneRouting”,CN,ADOPENSTATIC,ADLOCKOPTIMISTIC,adCmdTable ' 过滤器行根据日期 。选择[时间],[坦克]从 “UnitOneRouting”,其中[日期] = “& RpDate & ORDER BY坦克,时间”,CN,ADOPENSTATIC,ADLOCKOPTIMISTIC,adCmdTable rs.Open,TargetRange 尾随着

**代码开始这里**

Sub ADOImportFromAccessTable() 
Dim DBFullName As String 
Dim TableName As String 
Dim TargetRange As Range 
Dim RpDate As Range 

DBFullName = "U:\Night Sup\Production Report 2003 New Ver 5-28-10_KA.mdb" 
TableName = "UnitOneRouting" 
Set TargetRange = Range("C5") 
Set RpDate = Range("B2").Cells 


Dim cn As ADODB.Connection, rs As ADODB.Recordset, intColIndex As Integer 
    Set TargetRange = TargetRange.Cells(1, 1) 
    ' open the database 
    Set cn = New ADODB.Connection 
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _ 
     "U:\Night Sup\Production Report 2003 New Ver 5-28-10_KA.mdb" & ";" 
    Set rs = New ADODB.Recordset 
    With rs 
     ' open the recordset 
     .Open "UnitOneRouting", cn, adOpenStatic, adLockOptimistic, adCmdTable 
     ' filter rows based on date 
     .Select [Time], [Tank], FROM "UnitOneRouting", WHERE [Date] = " & RpDate & ORDER BY Tank, Time", cn, adOpenStatic, adLockOptimistic, adCmdTable 
     rs.Open , TargetRange 
    End With 
    rs.Close 
    Set rs = Nothing 
    cn.Close 
    Set cn = Nothing 
End Sub 

回答

0

问题是第二个和第三个.Open命令。将您的声明调整为:

With rs 
    .Open "SELECT Time, Tank FROM " & TableName & " WHERE [Date] = " & RpDate & _ 
"ORDER BY Tank, Time", cn, adOpenStatic, adLockOptimistic, adCmdTable 
    ' all records 
    ' cn.CursorLocation = adUseClient 
    ' filter rows based on date 

End With 
+0

当我运行该行时,出现错误“FROM子句中的语法错误”。 。打开“SELECT Time,Tank FROM”&TableName&“WHERE [Date] =”&RpDate&“ORDER BY Tank,Time”,cn,adOpenStatic,adLockOptimistic,adCmdTable – Kish 2014-09-25 13:31:54

+0

TableName是一个变量不仅仅是硬编码?像:“SELECT Time,Tank FROM UnitOneRouting WHERE [Date] =”&RpDate&_ “ORDER BY Tank,Time”,cn,adOpenStatic,adLockOptimistic,adCmdTable – 2014-09-25 14:16:55

+0

是的,我可以硬编码它。我试图改变,以前没有给出解决方案。我从上面复制了代码并进行了测试。下面的行给出了一个编译错误:预期:行号或标签或语句或语句结尾 “选择时间,坦克FROM UnitOneRouting WHERE [日期] =” – Kish 2014-09-25 14:42:00