Office中国论坛/Access中国论坛

标题: 从Access导入数据到Excel的问题 [打印本页]

作者: ddtkld    时间: 2008-5-17 23:15
标题: 从Access导入数据到Excel的问题
使用Microsoft Query,从Access导入数据到Excel。
要求:能在Excel中输入日期,比如是2008-01-01、2008-01-02,根据日期从access的datesum表中提取数据。
问题:Microsoft Query记录文件目录,导致拷贝到别的机器上必须使用相同的盘和目录才行,比如附件必须在F盘下才能运行。

有没有解决办法?请各位DX指教。(用别的办法实现也可以)



具体详见附件。
作者: Grant    时间: 2008-5-18 11:17
原帖由 ddtkld 于 2008-5-17 23:15 发表
使用Microsoft Query,从Access导入数据到Excel。
要求:能在Excel中输入日期,比如是2008-01-01、2008-01-02,根据日期从access的datesum表中提取数据。
问题:Microsoft Query记录文件目录,导致拷贝到别的机器上 ...


能在Excel中输入日期 ?  (还是在查询中输入日期)
作者: ddtkld    时间: 2008-5-18 22:05
在Excel中输入日期,作为SQL语句的条件之一,到Access数据库中查询,将结果返回Excel
作者: ddtkld    时间: 2008-5-18 22:37
谢谢版主,我再把问题重写一下吧。

关于如何实现在Excel中读入Access数据的问题
比如:
根据Excel的sheet1的A1单元格的值(对应于OrderID),从Access文件"订货.mdb“中的Order表中读数据。还要实现每次改变A1的值,就刷新数据。
Order表的格式如下:
OrderID OrderDate GoodsID GoodsNum
1 2008-1-1 1 10
2 2008-1-1 4 40
3 2008-1-2 2 20
4 2008-1-3 3 30
查询语句如下:
SELECT OrderID, OrderDate, GoodsID, GoodsNum FROM Order
WHERE OrderID = A1
如何用最简单的办法实现?请各位DX指点。
另外,要求能拷贝到别的机器上运行(Access文件与Excel文件在同一文件夹中)
(我试过使用MICROSOFT QUERY能实现动态查询,但无法拷贝到别的目录去运行)
作者: liwen    时间: 2008-5-19 12:46
Private Sub Workbook_Open()
On Error Resume Next
'    a = "SELECT `js$`.所属变电站, `js$`.柜线编号, `js$`.所属柜线, Sum(iif(`js$`.备注='专用 ',1,0)) AS '专用数量', Sum(iif(`js$`.备注='专用 ',`js$`.shiyrl,0)) AS '专用总容量', Sum(iif(`js$`.备注='公用 ',1,0)) AS '公用数量', Sum(iif(`js$`.备注='公用 ',`js$`.shiyrl,0)) AS '公用总容量', Count(`js$`.备注) AS '总数量', Sum(`js$`.shiyrl) AS '总容量' FROM `" & Left(ThisWorkbook.FullName, Len(ThisWorkbook.FullName) - 4) & "`.`js$` `js$` GROUP BY `js$`.所属变电站, `js$`.柜线编号, `js$`.所属柜线"
'With ActiveSheet.QueryTables.Add(Connection:= _
        "ODBC;DSN=Excel Files;DBQ=" & ThisWorkbook.FullName & ";DefaultDir=" & ThisWorkbook.Path & ";DriverId=790;MaxBufferSize=2048;PageTimeout=5;", Destination:=Range("A1"))
'        .CommandText = a 'Array(a)
'        .Refresh BackgroundQuery:=False
'End With

For i = 0 To ActiveSheet.QueryTables.Count
Debug.Print ActiveSheet.QueryTables.Item(i).Name
Next
Debug.Print ActiveSheet.QueryTables.Item(1).CommandText
Debug.Print ActiveSheet.QueryTables.Item("ExternalData_1").Connection

End Sub


查询的链接和Sql语句可以动态更改,按你这种情况,也就是需要更改查询的链接Connection语句。
作者: ddtkld    时间: 2008-5-19 22:38
谢版主。本人是Excel编程新手,请问有没有关于从Excel访问数据库的说明?
我找到一些,但针对性不强。
有好资料,我是有信心学好的。[:50]

[ 本帖最后由 ddtkld 于 2008-5-19 22:55 编辑 ]
作者: liwen    时间: 2008-5-22 14:04
http://www.office-cn.net/vvb/thread-57563-1-1.html
(EXCEL VBA开发工资管理系统范例详解)
这个是从EXCEL里访问ACCESS数据库的示例
作者: liwen    时间: 2008-5-22 15:12
针对你的问题其实就一句,更改链接语句
Private Sub Workbook_Open()
Sheets("sheet1").QueryTables.Item("导入access数据").C & ThisWorkbook.Path & "\update_from_select.mdb;DefaultDir=" & ThisWorkbook.Path & ";DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;"
'下面这两句只需用一次,也就是说编辑好之后其实就不用了
'a = "SELECT DateSum.OrderDate, DateSum.DateMoney  FROM DateSum DateSum WHERE (DateSum.OrderDate=?)"
'Sheets("sheet1").QueryTables.Item(1).CommandText = a
End Sub
作者: ddtkld    时间: 2008-5-22 23:18
感谢!




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3