揭开Microsoft Access秘密技巧以及陷阱
日期:2007年7月3日 作者: 查看:[大字体 中字体 小字体]-
在MicrosoftAccess中有一些以前无正式文本的特性,它们允许你指定过程,这个过程是从一个from或report的属性工作表窗中调用的。要进入最小窗口,只需要同时按下SHIFT和F2键。
BUILDERFORM函数如果在一个模块中一个函数的定义是以“BuilderrForm开始同时包含一个类似于Onclose属性或事件标识符,按下SHIFT和F2键就可以调用这个过程。例如,当你在一个form的设计窗口中,而当前的光标落在属性窗口中的Onclose事件的编辑控制上,按下SHIFT和F2键将能调用BuilderFormOnclose函数。这使用于form和reports的大部分属性和所有事件。下面的代码将说明函数的格式:
FunctionBuilderFormOnClose(szFormName As String, szControlName AsString, szCurrentValue As String, szReserved As String)If szCurrentValue= Then DoCmd SelectObject A_MACRO, , True SendKeys %n%fs & New Macro & Enter Forms(szFormName).OnClose = New MacroElse DoCmd SelectObject A_MACRO, szCurrentValue, True SendKeys %dEnd IfEnd Function参数szFormName,szControlName,szCurrentValue,和szReserved必须声明,即使你从不使用它们。当你的函数被调用时,这些参数总是要被传递的。如果它们没有被声明,那么MicrosoftAccess将不会调用你的函数。如果有一个参数被分配到Onclose事件上,那么前面的过程将打开一个宏,如果编辑控制是空,那么代码产生一个名为“NewMacro”的新宏,同时把编辑控制值设置为“NewMacro”。诚然,前面的例子并不是非常完美,但它的确说明了要产生一个完美而有效的程序所必须的条件。
当你的应用程序启动并且把它们的可见属性设置位‘false’时,如果你安装了你所有的表格,那么你的应用程序的性能会让你感觉挺快。当你需要显示一个表格时,你只需要把该表格的可见属性设置为‘true’,这要比安装一个表格要快得多。需要记住的是,为你安装的每个表格,你都要从应用程序的全局堆中消耗存储空间。AccessBasic中的陷阱在AccessBasic中经常碰到的陷阱是对动态连接库(DLLS)中的外部过程的调用。当你提供程序给你的用户,调用外部动态链接库时将出现使用警告;否则,你将得到一条错误信息:试图用相同的函数定义安装模块。使用唯一的别名在AccessBasic中,如果你知道入口点(动态链接库中函数的名字),你可以调用动态链接库中的外部函数。不过,使用这一方法的限制性在于你只能声明外部函数一次。如果你安装了调用了你的模块调用的相同的Windows应用程序接口,你不会得到一个不为人所知的错误:试图用相同的函数定义安装模块。
你尝试安装的模块要么是包含有相同的函数名,要么是包含在已存在的模块中有的过程名。删除这些过程,在EDIT菜单中使用FIND命令找到重复的过程名,要解决这一问题,你需要使用一种叫做“别名使用“的技术。这种技术允许你给你的过程一个独一无二的名字。但是,你选择的别名也有可能不是独一无二的,所以要使你取的名字唯一,你可以用初始值和下划线优先声明你所有从动态链接库中调用的过程,比如,声明getActiveWindow为:Declarebcb_GetActiveWindowLib Kernel Alias GetActiveWindow ()AsInteger.如何传递一个空指针给动态链接库一个空的32位指针是有效的或是为一些动态链接库要求具有参数。要指定一个空值,使用0&。当你的函数调用一个过程并传递一个表达式&,“&”指定一个32位的空指针,在函数声明中,一个ASANY参数指示AccessBasic对那个参数不进行类型检查,同时把值传递到被调用的函数。下面的编码示范了一个正确的方法,告诉你如何声明一个给动态链接库中的过程传递一个空指针参数的AccessBasic函数。这段声明了WriteProfileString应用程序接口函数。
这个函数来自于外部Windows动态链接库“kernel。DeclareFunctionWriteProfileString Lib Kernel (ByVallpApplicationNameAs Any, ByVal lpKeyName As Any, ByVal lpStringAsAny)接下来的函数调用了一个外部过程,位每个参数指定一个空值。这将使WriteProfileString充满它的内部高速缓冲区,并且WIN.INI的任何变化写到磁盘上。重要的对这个函数不正确的使用会引起一般性的保护故障或修改你的WIN.INI文件。FunctionnFlushIniCache()nFlushIniCache= WriteProfileString (0&,0&, 0&)EndFunction如何从动态链接库中传递和接收无符号整型数常常有这样一种情况,要从外部动态链接库调用的过程中返回一个两个字节长的无符号整型数。然而AccessBasic不支持这种数据类型。正确地计算这种数据类型需要把它从一个无符号整型数转换程AccessBasic长数据类型。
AccessBasic整型数的范围使从-32768到32767。一个无符号整型数的范围是从0到65535。AccessBasic用最明显的一位来放置数值的符号位,所以当数值超过32767,第16位将被置成负数符号。要计算一个无符号整型数,你必须人工调整第16位。
从无符号整型数转换到AccessBasic长整型数或从AccessBasic的长整型转换成无符号整型数有两种方法。第一种方法用到了最基本的数学运算(65535被无符号整型值加或减)。第二种方法使用Bitwise操作。实际上,算术方法和Bitwise方法工作起来效果一样,只不过,算术方法可能可读性更强一些,而Bitwise方法在执行时可能更快一些。算术方法下面的lArithUintToInt(nUint)和lArithIntToUnint(lBytes)过程示范了如何使用转换无符号整型数的算术方法。第一个函数读进一个无符号整型数同时返回一个已经转变位长整型的值。第二个函数读入一个长整型值,然后返回一个转变成无符号整型的值。
FunctionlArithUintToInt(nUint As Integer) If nUint < 0 Then lArithUintToInt = nUint + 65536Else lArithUintToInt = nUintEnd IfEnd FunctionFunctionnArithIntToUnint(lBytes As Long)If lBytes > 32767 Then nArithIntToUnint = lBytes - 65536Else nArithIntToUnint = lBytesEnd IfEnd Function 按位操作方法 下面的nBWUintToInt(lBytes)和lBWIntToUint(nUint)过程示范了如何使用Bitwise方法转换无符号整型数。第一个函数读进一个无符号整型数,然后返回一个已经转换成长整型的值。第二个函数读入一个长整型值,然后返回一个已经转换的无符号整型值。第二个函数中使用了提示框的语句是为了防止当传递到函数的值大于64KB时会出现溢出信息。
1010001111100000 (-23584) AND 1111111111111111 (FFFF&) 1010001111100000 (41952)The functionsfollow: FunctionlBWIntToUint(nUint As Integer) lBWIntToUint = nUintAnd&HFFFF&End FunctionFunction nBWUintToInt(lBytes AsLong) DimnTemp As IntegerIf lBytes > 65535 Then MsgBox You passed a value larger than 65535 Exit FunctionEnd IfnTemp = lBytes And &H7FFFnBWUintToInt=nTemp Or -(lBytes And&H8000) EndFunction注意:&HFFFF&要求“&”在16进制数的末尾。这样能保证32位的16进制数通过16位的值表示出来。AccessBasic中的技巧在MicrosoftAccess中有一些以前无正式文本的特性,它们允许你指定过程,这个过程是从一个from或report的属性工作表窗中调用的。要进入最小窗口,只需要同时按下SHIFT和F2键。
(出处:急速软件下载学院)
-
- 揭开Microsoft Access秘密技巧以及陷阱 相关文章:
- ·Vista系统无法开启打印机共享怎么办?
- ·加快Windows Vista系统窗口打开速度的方法
- ·BIOS开机自检的中文解释
- ·Vista系统中CHM文档无法打开解决方法
- ·赛迪网联手浪潮 开启服务器市场盘点大门
- ·两招解决打开U盘看不到文档的问题
- ·新挂马方式开始流行 ARP挂马称雄局域网
- ·四国军棋精选手册强势开局
- ·微软开发闪存版XP
- ·开启瑞星防火墙不能上网
- 揭开Microsoft Access秘密技巧以及陷阱 相关软件
- ·旗开得胜
- ·《终极格斗2009》最新游戏视频公开
- ·《勇者斗恶龙假面女王与镜之塔》视频公开
- ·回味经典《星际争霸:母巢之战》开场动画
- ·《白骑士物语》最新游戏视频公开欣赏
- ·《推推侠》开放客户端下载
- ·《开心斗地主》V2.6试玩 纸牌游戏
- ·《女仆咖啡》开场动画
- ·《卓越之剑GE》限量公开测试客户端
- ·斯派罗传说-新的开始 汉化版
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
精品推荐
热点TOP10
- ·安全的Microsoft的ACCESS数据库加密方法
- ·Access使用查询--1.1. 用选择查询建立计算字段
- ·用SQL链接服务器访问远程Access数据库
- ·用ASP和SQL语句动态的创建Access表
- ·Access数据库的存储上限指标
- ·Access使用查询--1.2.用选择查询进行分组数据的计算
- ·几种修复ACCESS数据库的实用方法
- ·如何把Access转成SQL Server的方法介绍
- ·网站选SQL Server还是Access当后台数据库好?
- ·把Access转成SQL数据库的方法介绍
- ·如何优化MICROSOFT ACCESS提高速度
- ·揭开Microsoft Access秘密技巧以及陷阱
- ·在access中增加农历支持模块
- ·使用准则进行条件查询
- ·Access使用宏控制程序 4.常用的宏操作
- ·保护Access 2000数据库的安全
- ·掌握部署 Access项目的方法
- ·设置在 Access项目中检索的记录数
- ·以前流行的4种Access数据库安全方式
- ·数据库安全 关于Access数据库4种安全方式
