为了防止当传递到函数的值大于64KB时会出现溢出信息。
1010001111100000 (-23584)
AND 1111111111111111 (FFFF&)
1010001111100000 (41952) The functionsfollow: Function lBWIntToUint(nUint As Integer)lBWInt ToUint = nUintAnd&HFFFF& End Functionwww.iTbulo.comDa99x
Function nBWUintToInt(lBytes AsLong)DimnTemp As Integer If lBytes > 65535 Then
MsgBox You passed a value larger than 65535
Exit Function End If nTemp = lBytes And &H7FFFnBWUintToInt=nTemp Or -(lBytes And&H8000) EndFunction 注意:&HFFFF&要求“&”在16进制数的末尾。这样能保证32位的16进制数通过16位的值表示出来。www.iTbulo.comDa99x
AccessBasic中的技巧
在MicrosoftAccess中有一些以前无正式文本的特性,它们允许你指定过程,这个过程是从一个from或report的属性工作表窗中调用的。要进入最小窗口,只需要同时按下SHIFT和F2键。www.iTbulo.comDa99x
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”。诚然,前面的例子并不是非常完美,但它的确说明了要产生一个完美而有效的程序所必须的条件。 www.iTbulo.comDa99x
|