时间:2019-08-20 17:21:18 作者:Dorise 浏览量:98
office Acc Microsoft ess的特性教程图4
由于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方法执行地更快。
转换无符号整型数的算术方法如下:第一个函数读进一个无符号整型数同时返回一个已经转变位长整型的值。第二个函数读入一个长整型值,然后返回一个转变成无符号整型的值。
office Acc Microsoft ess的特性教程图5
Function lArithUintToInt (nUint As Integer)
If nUint < 0 Then
lArithUintToInt = nUint + 65536
Else
lArithUintToInt = nUint
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时会出现溢出信息。