Microsoft Access秘密、技巧和陷阱(2)_Access数据库教程

编辑Tag赚U币
教程Tag:暂无Tag,欢迎添加,赚取U币!

推荐:用Access分析网站实例
如何用 Access 分析一个网站,或者在网站上提交一个查询,得到结果后存储进数据库哪? 如何用 Access 下载 DVBBS 论坛上所有的帖子? 如何用 ACCESS 编写灌水程序? 方法一: 答案非常

  如何传递一个空指针给动态链接库

  一个空的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时会出现溢出信息。

分享:怎样在vc、delphi中使用mysql
  怎样在vc、delphi、vb等程序中使用mysql呢(mysql odbc驱动程序的使用)?我们经常会遇到这样问题,怎样在非web程序或asp程序中使用mysql数据库呢?对于这个问题有两个解决方案:   1

来源:模板无忧//所属分类:Access数据库教程/更新时间:2008-08-22
相关Access数据库教程