设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2710|回复: 4
打印 上一主题 下一主题

querytable 的数据源路径

[复制链接]
跳转到指定楼层
1#
发表于 2005-3-23 07:33:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是一段在excel中作querytable的代码:

     With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _

        "ODBC;DBQ=photo.mdb;DefaultDir=;Driver={Microsoft Access Driver " _

        ), Array( _

        "(*.mdb)};DriverId=25;FIL=MS Access;MaxBufferSize=2048;MaxScanRows=8ageTimeout=5;SafeTransactions=0;Threads=3;UID=admin;UserCo" _

        ), Array("mmitSync=Yes;")), Destination:=Range("a2"))

为何 DefaultDir 这一句为何不能等于一个string型变量

我改为一个绝对的路径来给这个数据源,运行没有问题。

设为空将读取 "我的文档" 这个默认路径 可是那个photo.mdb并不是在"我的文档"

我改为一个绝对的路径来给这个数据源,运行没有问题。

[此贴子已经被作者于2005-3-22 23:33:56编辑过]

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2005-3-24 05:14:00 | 只看该作者
当然可以等于一个string型变量,不知道你是怎么设置的?"ODBC;DBQ=photo.mdb;DefaultDir=" & 变量 & ";Driver={Microsoft Access Driver "
3#
 楼主| 发表于 2005-3-24 06:23:00 | 只看该作者


我想把e这个变量赋给DefaultDir,以便于读取和该活动工作簿相同目录下的.mdb文件路径

c这个变量赋给from后面的一句

关于DBQ,我想应该可以直接写上mdb的名称photo.mdb就可以的,直接写死,不给变量







[此贴子已经被作者于2005-3-23 22:23:43编辑过]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
4#
发表于 2005-3-27 05:28:00 | 只看该作者
EXCEL有自带ACCESS的DSN驱动,不必自建ODBC。简化后的代码如下:

    With ActiveSheet.QueryTables.Add(Connection:="ODBC;DSN=MS Access Database;DBQ=" & ThisWorkbook.Path & "\photo.mdb;DefaultDir=;", Destination:=Range("A1"))

        .CommandText = Array("SELECT 表1.ID, 表1.姓名, 表1.照片 FROM 表1")

        .Refresh BackgroundQuery:=False

    End With

[此贴子已经被作者于2005-3-26 21:49:59编辑过]

5#
 楼主| 发表于 2005-3-29 04:54:00 | 只看该作者
问题解决。

看到这个旧贴,贴上修改后的代码。

Private Sub CommandButton1_Click()
'在本例中 取得了来自mdb的一个表 "表1"中的数据
'可以利用如下代码,来建立 根据acc中数据 自动刷新 图表的问题

'PivotTables  数据透视表对象  帮助关键词 "pivottables"
'querytable   查询表   指使用外部数据源的工作表  帮助关键词 "querytables"

Application.StatusBar = "Query is currently refreshing: please wait"


'更新前清除所有单元格的内容
Cells.Select
Selection.ClearContents
Range("A1").Select
'******************************


With ActiveSheet.QueryTables.Add(Connection:="ODBC;DSN=MS Access Database;DBQ=" & ThisWorkbook.Path & "\photo.mdb;DefaultDir=;", Destination:=Range("A1"))
        .CommandText = Array("SELECT 表1.ID, 表1.姓名, 表1.照片 FROM 表1")
       .Refresh BackgroundQuery:=False


   
' 如果行号作为第一列添加到指定查询表则为 True。 _
Boolean 类型,可读写。也就是在刷新后的数据区域添加自动编号
.RowNumbers = True
'******************************

'如果每次打开工作簿时,数据透视表高速缓存或查询表自动更新, _
本属性为 True。默认值为 False。Boolean 类型,可读写。
'  .RefreshOnFileOpen = False


'=========设置 excel去查询acc数据在后台执行 和 定时刷新数据的间隔=============

'本示例使第一张工作表上的数据透视表报表的查询在后台执行。
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
  
'返回或设置两次刷新之间的分钟数,可读写.Long 类型. _
说明: 将周期设置为 0(零)则会使定时刷新失效,等同于将该属性设置为 Null。

.RefreshPeriod = 1  '每相隔1分钟 定时刷新来自acc表中的数据
.PreserveColumnInfo = True

'MsgBox "Query is currently refreshing: please wait"
Application.StatusBar = "Query is currently refreshing: please wait"

End With


'动态改变状态栏的提示消息
With Worksheets(1).QueryTables(1)
    If .Refreshing Then
    Application.StatusBar = "Query is currently refreshing: please wait"
    Else
    Application.StatusBar = "Query is currently refreshed complete" '改变状态栏的提示消息
    End If
   
End With

'=============相关路径的取得===========
'取得 "我的文档" 的路径
Debug.Print "The current default file path is " & Application.DefaultFilePath
'取得当前工作簿的路径和完整文件名称
Debug.Print "The name of the active workbook is " & ActiveWorkbook.Path & "\" & ActiveWorkbook.Name
'取得excel 应用程序的路径:
Debug.Print "The path is " & Application.Path
'============end=======================

'===========取得标题和工作表名称==========
'设置应用程序的标题名称
ActiveWorkbook.Worksheets.Application.Caption = "从 access 表中取得数据"
'活动工作表的名称
ActiveSheet.Name = "取得acc表中的数据"
'============end=======================
End Sub







多谢老鬼的指教!!!





[此贴子已经被作者于2006-5-30 21:02:14编辑过]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-6-4 12:42 , Processed in 0.089332 second(s), 29 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表