Access911.net   |   a9BBS   |   OTaA System  
  搜索文章:  
Access911欢迎您光临  
   主页      上传      繁體版       论坛     
设为首页  |  加入收藏   
  
你现在的位置:文章索引 -> 文章分类 -> VBA  
 首页|  近日更新|  下载  |  文章索引  |  搜索|  术语|  承接工程|  
 
系统正在加载内容,请耐心等待...
 
 查询
 窗体
 报表
 
 
 VBA
 函数
 ADO/DAO/ADO.NET
 API
 ADP
 安全
 发布
 OA
 ASP/ASP.NET
 其他语言
 控件
 DELPHI
 C#/.Net
 本站
 其他
 小例程
 常用软件
 参考文档
 业主作品
 网友大作
 
 
友情链接
 access911.net
 
访问人次
 1702842
 
站长 E-Mail
 net911@sina.com
 access911@gmail.com
 
RSS 订阅

显示附加信息 >>>

如何获取环境变量(windows/access安装目录/mdb/temp/system/路径)?

作者:MS  摘自:access911.net  :cg1  更新日期:2002-11-20  浏览人次:

 

问题:

如何获取环境变量(windows/access安装目录/mdb/temp/system/路径)?包括:windows安装目录;windows系统目录;access安装目录;mdb文件的当前目录;windows的临时文件目录;注册表中 msaccess.exe文件所在位置。

 


方法一:

请在帮助中查阅以下内容:Environ()函数;SysCmd()函数;CurrentProject.Path属性
你还可以直接用 WSH 读取注册表来获取环境信息,比如我的文档在哪里

获取windows系统目录:        strPath = Environ("WinDir")
获取Access的安装目录:        strPath = Syscmd(acSysCmdAccessDir)

以下是所有 Environ 的环境变量名的字符串表达式
ALLUSERSPROFILE
APPDATA
CLIENTNAME
CommonProgramFiles
COMPUTERNAME
ComSpec
HOMEDRIVE
HOMEPATH
LOGONSERVER
NUMBER_OF_PROCESSORS
OS
Path
PATHEXT
PROCESSOR_ARCHITECTURE
PROCESSOR_IDENTIFIERl
PROCESSOR_LEVEL
PROCESSOR_REVISION
ProgramFiles
SESSIONNAME
SystemDrive
SystemRoot
TEMP
TMP
USERDOMAIN
USERNAME
USERPROFILE
windir

 


方法二:


SysCmd 方法
请参阅 应用于 示例 特性 
使用 SysCmd 方法可以:在状态栏中显示进度表或可选的指定文本,返回有关 Microsoft Access 及其关联文件的信息,或返回指定数据库对象(数据库对象:Access 数据库包含诸如表、查询、窗体、报表、页、宏和模块等对象;Access 项目包含诸如窗体、报表、页、宏和模块等对象。)的状态(表明对象是打开的、是新对象,还是已进行更改但没有保存)。Variant 型。 

expression.SysCmd(Action, Argument2, Argument3)

expression  必需。返回“Applies To”列表中的一个对象的表达式。

Action  必需 AcSysCmdAction。下列固有常量(固有常量:由 Access、VBA、ADO 或 DAO 提供的常量。通过单击这些库中每个库的 ,就可以在“对象浏览器”中使用这些常量。)之一,确定要执行操作的类型。下面的常量集应用于进度表。如果这些操作成功,则 SysCmd 方法返回 Null 值。否则,Microsoft Access 将产生运行时错误(运行时错误:只有当应用程序运行时才能检测到的错误。)。

AcSysCmdAction 可以是下列 AcSysCmdAction 常量之一: 
acSysCmdAccessDir。返回 Msaccess.exe 所在的目录名 
acSysCmdAccessVer。返回 Microsoft Access 的版本号。 
acSysCmdClearHelpTopic 
acSysCmdClearStatus。下列常量提供有关数据库对象状态的信息: 
acSysCmdGetObjectState。返回指定数据库对象的状态。使用该 action 值时,必须指定 argument1 和 argument2 参数。 
acSysCmdGetWorkgroupFile。返回工作组文件 (System.mdw) 的路径。 
acSysCmdIniFile。返回与 Microsoft Access 关联的 .ini 文件。 
acSysCmdInitMeter。初始化进度表。使用该操作时,必须指定 argument1 和 argument2 参数。 
acSysCmdProfile。在通过命令行打开 Microsoft Access 时,返回由用户指定的 /profile 设置。 
acSysCmdRemoveMeter。删除进度表。 
acSysCmdRuntime。如果正在运行 Microsoft Access 的运行时版本,返回 True (–1)。 
acSysCmdSetStatus。将状态栏文本设置为 text 参数。 
acSysCmdUpdateMeter。用指定值更新进度表。使用该操作时,必须指定 text 参数。 

Argument2  可选 Variant 型。字符串表达式(字符串表达式:任一求值为一列连续字符的表达式。表达式的元素可以包括:返回字符串或字符串 Variant (VarType 8) 的函数;字符串字面值、常量、变量或 Variant。),表示状态栏中靠左显示的文本。当 action 参数是 acSysCmdInitMeter、acSysCmdUpdateMeter 或 acSysCmdSetStatus 时,该参数为必需项;该参数对其他 action 参数值无效。

注意  使用 acSysCmdGetObjectState 参数时,Excel 要求使用 Argument2 及下列固有常量之一:

acTable 
acQuery 
acForm 
acReport

acMacro

acModule

acDataAccessPage

acDefault

acDiagram

acServerView

acStoreProcedure

该参数对于其他 action 参数值无效。
 

Argument3  可选 Variant 型。数值表达式(数字表达式:计算结果为数字的任何表达式。表达式可以是变量、常数、函数和运算符的任意组合。),用于控制进度表的显示。当 action 参数是 acSysCmdSetStatus 时,该参数为必需项;该参数对其他 action 参数值无效。

注意  使用 acSysCmdGetObjectState 参数时,Excel 要求使用 Argument3。一个由 Argument2 指定类型的数据库对象的有效名称字符串表达式。该参数对于其他 action 参数值无效。

说明
例如,如果正建立一个创建新窗体的自定义向导,可以使用 SysCmd 方法来显示一个进度表,指出向导构建窗体时的进度。

通过使用各种进度表操作来调用 SysCmd 方法,可以在状态栏中显示一个已知持续时间或步骤数目的操作进度表,并且可以对其更新以表示操作的进度。

若要在状态栏中显示进度表,首先必须使用 acSysCmdInitMeter action 参数、text 和 value 参数来调用 SysCmd 方法。当 action 参数为 acSysCmdInitMeter 时,value 参数是进度表的最大值或 100%。

若要更新进度表以显示操作的进度,请用 acSysCmdUpdateMeter action 参数和 value 参数来调用 SysCmd 方法。当 action 参数是 acSysCmdUpdateMeter 时,SysCmd 方法使用 value 参数来计算进度表中显示的百分比。例如,如果设置最大值为 200,然后用 100 的值更新此表,则进度表只填满了一半。

也可以通过调用带有 acSysCmdSetStatus action 参数和 text 参数的 SysCmd 方法来更改状态栏中显示的文本。例如在排序期间,可能希望文本改为“正在排序...”。当排序完成时,还想通过删除该文本来重置状态栏。text 参数可以包含大约 80 个字符。因为状态栏文本使用成比例的字体来显示,可以显示的实际字符数目取决于 text 参数指定的所有字符的总宽度。

在增加状态栏文本宽度的同时,也减少了该进度表的长度。如果文本比状态栏还要长而且 action 参数是 acSysCmdInitMeter,则 SysCmd 方法将忽略该文本,在状态栏上无任何显示。如果文本比状态栏还要长而且 action 参数为 acSysCmdSetStatus,则 SysCmd 方法将截取文本以填充状态栏。

不能将状态栏文本设置为零长度字符串(零长度字符串:不含字符的字符串。可以使用零长度字符串来表明您知道该字段没有值。输入零长度字符串的方法是键入两个彼此之间没有空格的双引号 (" ")。) (" ")。如果想从状态栏中删除现有的文本,请将 text 参数设置为一个空格。下面的示例说明了从状态栏中删除文本的方法:

varReturn = SysCmd(acSysCmdInitMeter, " ", 100)
varReturn = SysCmd(acSysCmdSetStatus, " ")
使用 acSysCmdSetStatus action 参数调用 SysCmd 方法来设置该文本时,如果进度表已经显示,则 SysCmd 方法将自动删除此表。

可以用其他操作调用 SysCmd 方法,以决定有关 Microsoft Access 的系统信息,这些信息包括 Microsoft Access 正在运行的版本号、是否是运行时版本、Microsoft Access 可执行文件的位置、命令行中指定的 /profile 参数设置和与 Microsoft Access 相关联的 .ini 文件名。

注意   Microsoft Access 的常规和自定义设置现在都保存在 Windows“注册表”中,所以 Microsoft Access 应用程序可能不再需要 .ini 文件。acSysCmdIniFile action 参数的存在是为了与 Microsoft Access 的旧版本兼容。

用 acSysCmdGetObjectState action 参数和 objecttype 及 objectname 参数来调用 SysCmd 方法可以返回指定数据库对象的状态。对象可能为这四种状态之一:没有打开或不存在、打开、新建或更改但没有保存。

例如,如果您正在设计一个在表中插入新字段的向导,则可能需要确定表的结构是否已经更改但尚未保存,以便在修改其结构前保存它。检查 SysCmd 方法返回的值就可以确定表的状态。

使用 acSysCmdGetObjectState action 参数的 SysCmd 方法可以返回下列常量的任一组合:

常量 数据库对象的状态 值 
acObjStateOpen 打开 1 
acObjStateDirty 更改但未保存 2 
acObjStateNew 新建 4 


注意   如果 objectname 参数引用的对象未打开或不存在,则 SysCmd 方法将返回零值。

 

方法三:


你还可以直接读取注册表来获取上述信息
“我的文档”对应位置如下:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Personal

你还可以直接打开注册表编辑器自行查看
直接用程序读取的代码如下:
Function SetTypeAQuestionForHelpBox()
'本函数调用 WSH 来读取注册表达到获取环境目录的目的
    '请先到 菜单 -> 工具 -> 引用 中去引用如下类库:
    'Windows Script Host Object Model
    On Error Resume Next    
    Dim a As New WshShell
    '如果采用后引用方式,也可以写如下代码:
    'Set a = CreateObject("WScript.Shell")
    
    '先显示键的值
    Debug.Print a.RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Personal")

End Function


 

 

 
相关文章
     没有手动相关文章
     如何在简体系统中使用繁体系统开发的 ACCESS 应用程序?简繁体语言系统转换问题
     新手来看:Access的特点、概念。什么是纯 ACCESS 环境?
 
评论
     查看或发表更多的评论,请单击这里。
 
 
 
 
 
   
  Access911.net   |   a9BBS   |   OTaA System   |
建站日期:2000年4月2日  |  设计施工:陈格 ( access911 & cg1 )
 Copyright © 2000 - 2003 COMET, 陈格 保留所有权利