AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > ACCESS

Access秘密、技巧和陷阱

51自学网 http://www.51zixue.net



算术方法
  下面的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位的值表示出来。


Access Basic中的技巧
  在Microsoft Access 中有一些以前无正式文本的特性,它们允许你指定过程,这个过程是从一个from或report的属性工作表窗中调用的。要进入最小窗口,只需要同时按下SHIFT和F2键。

BUILDER FORM函数

  如果在一个模块中一个函数的定义是以“Builderr Form"开始同时包含一个类似于Onclose属性或事件标识符,按下SHIFT和F2键就可以调用这个过程。例如,当你在一个form的设计窗口中,而当前的光标落在属性窗口中的Onclose事件的编辑控制上,按下SHIFT和F2键将能调用BuilderFormOnclose函数。这使用于form和reports的大部分属性和所有事件。下面的代码将说明函数的格式:

Function BuilderFormOnClose (szFormName As String, szControlName As String,

               szCurrentValue As String, szReserved As String)


If szCurrentValue = "" Then

    DoCmd SelectObject A_MACRO, "", True

    SendKeys "%n%fs" & "New Macro" & "{Enter}"

    Forms(szFormName).OnClose = "New Macro"

Else

   DoCmd SelectObject A_MACRO, szCurrentValue, True

   SendKeys "%d"

End If

  

End Function

参数szFormName, szControlName, szCurrentValue, 和 szReserved必须声明,即使你从不使用它们。当你的函数被调用时,这些参数总是要被传递的。如果它们没有被声明,那么Microsoft Access将不会调用你的函数。如果有一个参数被分配到Onclose事件上,那么前面的过程将打开一个宏,如果编辑控制是空,那么代码产生一个名为“New Macro”的新宏,同时把编辑控制值设置为“New Macro”。诚然,前面的例子并不是非常完美,但它的确说明了要产生一个完美而有效的程序所必须的条件

 
 

上一篇:用软件解决低版本Access文件打不开的问题  下一篇:使ACCESS数据库保持同步