打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
ACCESS(微软发布的关联式数据库管理系统)

Access是一款数据库应用的开发工具软件,其开发对象主要是Microsoft JET数据库和MicrosoftSQLServer数据库。由于在Office 97及以前的版本中,Microsoft JET 3.51及以前版本的数据库引擎是随Access一起安装和发布的,JET数据库与Access就有了天生的血缘关系,并且Access对JET数据库做了很多地扩充,如,在Access的环境中,可以在查询中使用自己编写的VBA函数,Access的窗体、报表、宏和模块是作为一种特殊数据存储在JET数据库文件(.mdb)中,只有在Access环境中才能使用这些对象。随着,Microsoft Windows操作系统版本的不断升级和改良,在Windows XP以后版本中,Microsoft将JET数据库引擎集成在Windwos操作系统中作为系统组件的一部分一起发布(主要原因是Windows中还有很多组件需要使用JET引擎,活动目录等)。从此JET数据库引擎从Access中分离出来,而Access也就成为了一个专门的数据库应用开发工具。

由于JET数据库引擎的分离,很多应用程序采用了JET数据库作为其应用的数据库,JET数据库符合关系数据库理论,有着完整的数据定义、数据处理、数据安全管理体系。在Microsoft Windows操作系统中,随着Microsoft在ActiveX技术上的发展,Windows中不断升级换代的数据访问组件,这些组件包括ODBC、OLEDB、DAO、ADO、ADO,JET数据库引擎和这些组件一起已组成了免费的数据库管理系统。  

Access拥有的报表创建功能能够处理任何它能够访问的数据源。Access提供功能参数化的查询,这些查询和Access表格可以被诸如VB6和.NET的其它程序通过DAO或ADO访问。在Access中,VBA能够通过ADO访问参数化的存储过程。与一般的CS关系型数据库管理不同,Access不执行数据库触发,预存程序或交互式登录操作。Access 2010包括了嵌入ACE数据引擎的表级触发和预存程序,在Access 2010中,表格,查询,图表,报表和宏在基于网络的应用上能够进行分别开发。Access 2010 与MicrosoftSharePoint2010 的集成也得到了很大改善。

ACCESS图片
它的数据文件不能突破2G的限制,它的结构化查询语言(JET SQL)能力有限,不适合大型数据库处理应用。受此限制,JET数据库引擎允许用户通过链接表和ODBC来访问大型的数据库系统,如Microsoft SQL Server、Oracle等,也可以使用链接表访问ISAM数据文件,如dBase、Excel、文本文件等,当然,这也给Access应用程序开发带来了很多的灵活性。在这方式下,处理大型数据库(服务型数据库,如SQL Server、Oracle)时,每一个链接表都有一个服务器的连接,在服务器端,连接是一种资源,除了每个连接都要占用一定服务器资源外,还要负责链接表传递过来的数据访问指令的处理并返回相应的结果给客户端的JET引擎;同时,在客户端的JET引擎中,JET引擎要负责翻译各种链接表的数据访问指令传递给服务器,还要负责将服务器返回的结果翻译成JET引擎的数据表现形式以Access来处理。为了减轻这种负担,Microsoft允许Access使用Microsoft的数据访问组件如DAO、ADO来访问各种数据源,可是这种方式复杂而又不直观,给Access面对的办公人员带来很高的技术要求。

Microsoft不甘心它的Access软件只能通过JET引擎使用链接表和ODBC这种既浪费服务器资源又浪费客户端资源的方式或者通过ADO复杂的编程和不直观的操作方式来开发大型数据库系统应用,于是,在Access 2000(Access 9)版本中加入了一种新Access应用程序开发方式——Access数据库项目ADP,同时在Office 2000的发行包中包括了MSDE1.0和Sharepoint1.0。

由于ADP的引入,Access增加了新的活力。尽管同时还引入了DAP(数据访问页),由于其过于复杂的部署和不安全因素(基于互联网部署,要启用Remote MSADC,要做跨域访问,部署复杂且不安全),在Access 2007中,Microsoft终于放弃了DAP。

Microsoft SQLServer的桌面版本能够与Access一起使用,作为Jet数据库引擎的替代。这种支持是从MSDE(Miscrosoft SQL Server桌面引擎)开始的。MSDE是MSSQL服务器2000的小型版本,以后的产品是SQL Server 2005 and 2008的Express(入门级)版本。

使用唯一的别名

在Access Basic中,如果你知道入口点(动态链接库中函数的名字),你可以调用动态链接库中的外部函数。不过,使用这一方法的限制性在于你只能声明外部函数一次。如果你安装了调用了你的模块调用的相同的Windows应用程序接口,你不会得到一个不为人所知的错误:试图用相同的函数定义安装模块。你尝试安装的模块要么是包含有相同的函数名,要么是包含在已存在的模块中有的过程名。要使你取的名字唯一,在EDIT菜单中使用FIND命令找到重复的过程名,删除这些过程。你也可以用初始值和下划线优先声明你所有从动态链接库中调用的过程,比如,声明getActiveWindow为:

Declare bcb_GetActiveWindow Lib'Kernel'Alias'GetActiveWindow'() As Integer.

传递空指针给动态库

一个空的32位指针是否有效是对一些动态链接库参数要求。要指定一个空值,使用0&。当你的函数调用一个过程并传递一个表达式0&,“&”指定一个32位的空指针,在函数声明中,一个AS ANY参数指示Access Basic对那个参数不进行类型检查,同时把值传递到被调用的函数。

声明一个给动态链接库中的过程传递一个空指针参数的Access Basic函数示例如下:

Declare FunctionWriteProfileStringLib'Kernel'

(ByVal lpApplicationName As Any, ByVal lpKeyName As Any, ByVal lpString As Any)

Function nFlushIniCache()

nFlushIniCache =WriteProfileString(0&, 0&, 0&)

End Function

这段声明了WriteProfileString应用程序接口函数,这个函数来自于外部Windows动态链接库“kernel”。该函数调用了一个外部过程,为每个参数指定一个空值。这将使WriteProfileString充满它的内部高速缓冲区,并且将WIN.INI的任何变化写到磁盘上。

动态库调用无符号整数

常常有这样一种情况,要从外部动态链接库调用的过程中返回一个两个字节长的无符号整型数。然而Access Basic不支持这种数据类型。正确地计算这种数据类型需要把它从一个无符号整型数转换程Access Basic长数据类型。

从无符号整型数到Access Basic长整型数的相互转换有两种方法:第一种是最基本的数学 运算。第二种是使用Bitwise操作。两种方法效果一样,算术方法可读性更强,Bitwise方法执行地更快。

转换无符号整型数的算术方法如下:第一个函数读进一个无符号整型数同时返回一个已经转变位长整型的值。第二个函数读入一个长整型值,然后返回一个转变成无符号整型的值。

Function lArithUintToInt (nUint As Integer)

If nUint<0 Then

lArithUintToInt = nUint 65536

Else

lArithUintToInt = nUint

ACCESS图片
End If

End Function

Function nArithIntToUnint (lBytes As Long)

If lBytes>32767 Then

nArithIntToUnint = lBytes - 65536

Else

nArithIntToUnint = lBytes

End If

End Function

使用Bitwise方法转换无符号整型数:第一个函数读进一个无符号整型数,然后返回一个已经转换成长整型的值。第二个函数读入一个长整型值,然后返回一个已经转换的无符号整型值。第二个函数中使用了提示框的语句是为了防止当传递到函数的值大于64KB时会出现溢出信息。

The functions follow:

Function lBWIntToUint(nUint As Integer)

lBWIntToUint = nUint And&HFFFF&

End Function

Function nBWUintToInt(lBytes As Long)

Dim nTemp As Integer

If lBytes>65535 Then

MsgBox'You passed a value larger than 65535'

Exit Function

End If

nTemp = lBytes And&H7FFF

nBWUintToInt = nTemp Or -(lBytes And&H8000)

End Function

注意:&HFFFF&要求“&”在16进制数的末尾。这样能保证32位的16进制数通过16位的值表示出来。

SHIFT和F2键调用过程

在Microsoft Access 中有一些以前无正式文本的特性,它们允许你指定过程,这个过程是从一个from或report的属性工作表窗中调用的。要进入最小窗口,只需要同时按下SHIFT和F2键。

如果在一个模块中一个函数的定义是以“Builderr Form”开始,同时包含一个类似于Onclose属性或事件标识符,按下SHIFT和F2键就可以调用这个过程。例如,当你在一个form的设计窗口中,而当前的光标落在属性窗口中的Onclose事件的编辑控制上,按下SHIFT和F2键将能调用BuilderFormOnclose函数。这使用于form和reports的大部分属性和所有事件。下面的代码将说明函数的格式:

Function BuilderFormOnClose (szFormName As String,

szControlName As String, szCurrentValue As String, szReserved As String)

If szCurrentValue =''Then

DoCmd SelectObject A_MACRO,'', True

SendKeys'%n%fs'&'New Macro'&'{Enter}'

Forms(szFormName).OnClose ='New Macro'

Else

DoCmd SelectObject A_MACRO, szCurrentValue, True

SendKeys'%d'

End If End Function

参数szFormName, szControlName, szCurrentValue, 和 szReserved必须声明,即使你从不使用它们。当你的函数被调用时,这些参数总是要被传递的。如果它们没有被声明,那么Microsoft Access将不会调用你的函数。如果有一个参数被分配到Onclose事件上,那么前面的过程将打开一个宏,如果编辑控制是空,那么代码产生一个名为“New Macro”的新宏,同时把编辑控制值设置为“New Macro”。

诚然,前面的例子并不是非常完美,但它的确说明了要产生一个完美而有效的程序所必须的条件。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
【译文】为什么使用Access作为开发工具[Access软件网]
ACCESS高级注入教程
php操作access数据库函数
ASP远程局域网连接ACCESS的问题
如何在启动时禁用/启用SHIFT键[ACCESS中国/OFFICE中国(access技巧/...
Delphi之通过ADOX操作access数据库
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服