Microsoft Access技巧及陷阱讲解

使用唯一的别名 数据挖掘交友

在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函数。这段声明了WriteProfileString应用程序接口函数。这个函数来自于外部Windows动态链接库“kernel”。

Declare Function WriteProfileString Lib "Kernel" 
(ByVal lpApplicationName As Any, ByVal lpKeyName As Any, ByVal lpString As Any)  

接下来的函数调用了一个外部过程,位每个参数指定一个空值。这将使WriteProfileString充满它的内部高速缓冲区,并且WIN.INI的任何变化写到磁盘上。

重要的对这个函数不正确的使用会引起一般性的保护故障或修改你的WIN.INI文件。 数据挖掘论坛

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

如何从动态链接库中传递和接收无符号整型数 数据挖掘实验室

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

数据挖掘研究院

Access Basic整型数的范围使从-32768到32767。一个无符号整型数的范围是从0到65535。Access Basic用最明显的一位来放置数值的符号位,所以当数值超过32767,第16位将被置成负数符号。要计算一个无符号整型数,你必须人工调整第16位。

数据挖掘工具

从无符号整型数转换到Access Basic长整型数或从Access Basic的长整型转换成无符号整型数有两种方法。第一种方法用到了最基本的数学运算(65535被无符号整型值加或减)。第二种方法使用Bitwise操作。实际上,算术方法和Bitwise方法工作起来效果一样,只不过,算术方法可能可读性更强一些,而Bitwise方法在执行时可能更快一些。 数据挖掘实验室

算术方法 数据挖掘论坛

下面的lArithUintToInt (nUint)和lArithIntToUnint(lBytes)过程示范了如何使用转换无符号整型数的算术方法。第一个函数读进一个无符号整型数同时返回一个已经转变位长整型的值。第二个函数读入一个长整型值,然后返回一个转变成无符号整型的值。 数据挖掘交友

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 数据挖掘论坛 

按位操作方法 数据挖掘工具

下面的nBWUintToInt(lBytes) 和 lBWIntToUint(nUint)过程示范了如何使用Bitwise方法转换无符号整型数。第一个函数读进一个无符号整型数,然后返回一个已经转换成长整型的值。第二个函数读入一个长整型值,然后返回一个已经转换的无符号整型值。第二个函数中使用了提示框的语句是为了防止当传递到函数的值大于64KB时会出现溢出信息。

数据挖掘工具

    1010001111100000 (-23584) 
  AND 1111111111111111 (FFFF&) 
    ---------------- 
    1010001111100000 (41952) 

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位的值表示出来。 数据挖掘交友

[数据挖掘工作交流] [数据挖掘研究院] [数据挖掘论坛] [数据挖掘实验室]
上一篇:Microsoft Access技巧及陷阱讲解
下一篇:Microsoft Access技巧及陷阱讲解
最新评论共有 0 位网友发表了评论 , 查看所有评论
发表评论( 不能超过250字,需审核,请自觉遵守互联网相关政策法规。 )
匿名?
数据挖掘网站导航 数据挖掘论坛导航
  • 数据挖掘工具
  • 数据挖掘论坛
  • DataCruncher - Cognos
  • MineSet - MathSoft
  • Intelligent Miner - GainSmarts
  • Sqlserver - SAS - Clementine
  • CART - Weka - WizSoft
  • NeuroShell - ModelQuest
  • data mining tools - Darwin
  • 数据挖掘交友
  • 数据挖掘博客
  • 数据挖掘工具
  • 数据挖掘资源
  • 数据挖掘技术算法
  • 数据挖掘相关期刊、会议
  • 研究院联盟合作专区
  • 数据挖掘基础与相关技术
  • 数据挖掘厂商与就业
  • 数据挖掘研究者乐园
  • 知名厂商数据挖掘工具资料
  • 国内数据挖掘实验室
  • Foreign Data Mining Lab
  • 热点关注
  • 获取ACCESS2000数据库中所有表的名称
  • 防止ACCESS数据库被下载的9种方法
  • Access与Sql Server之ASP代码比较
  • 长期使用中型Access数据库的一点经验
  • Office中Word与Access数据交流技巧
  • Access中的模糊查询
  • 教你在Access数据库中如何使用SQL
  • ACCESS中使用SQL语句
  • 如何远程调用Access数据库方法详解
  • 设定Access数据库自增长字段初始值
  • 论坛最新话题
  • 搜索引擎Ask.com改版 搜索速度质量双双提升
  • 正规省级、国家级别期刊征集论文稿件
  • 寻data mining cookbook 一书的配套光盘
  • 网博垂直搜索引擎完全开源版
  • 电脑也会成为火灾元凶 操作不当也会有危险
  • 网络暴力间接逼死崔真实 韩国拟立法实名上
  • 网络最流行的歌曲单良《那一场雪》推荐给大
  • 快国庆了大家怎么安排
  • 08年“铁观音秋茶”安溪铁观音,茶叶批发网
  • 快国庆了大家怎么安排
  • 相关资讯
    数据挖掘实验室资料
  • 注册成为SAS用户与爱好者俱乐部会员
  • 水南梅
  • 明日烟
  • 新人报道
  • 下载
  • 厦门服务器托管,450元/月—0592-5177319 高
  • 买空间送域名--0592-5177319 高静
  • mit ocw 数据挖掘相关课程连接
  • Introduction to Data Mining
  • Data Mining & Business Intelligence