office交流網--QQ交流群號

Access培訓群:792054000         Excel免費交流群群:686050929          Outlook交流群:221378704    

Word交流群:218156588             PPT交流群:324131555

Access窗體之間參數傳遞如何傳遞對象的通用模塊函數

2017-07-22 22:25:00
zstmtony
原創
2702

我們知道在Access窗體之間可以傳遞各種參數。

但這些參數一般是字符或數字,有關Access窗體傳遞參數的技巧可以參考這里:

http://www.access-cn.com/info/1574-cn.html

但如何讓Access之間可以傳遞對象這種參數呢。Access窗體本身并不提供這種功能


我在幫客戶編寫一個定制的Access軟件系統時遇到了這個問題,后來 經過各種嘗試

最終使用API實現了窗體之間傳遞對象參數的功能,后把它放在我們的Access通用開發平臺中,再開源出來

詳細源碼如下:



Option Compare Database
Option Explicit

Private Const POINTERSIZE As Long = 4
Private Const ZEROPOINTER As Long = 0

Private Declare Sub apiCopyMemory Lib "kernel32" Alias "RtlMoveMemory" (hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)
 

'模塊來源:Access交流網
'作者:tmtony
'日期:2010年06月03日
 
'將對象轉換為指針,用于窗體間參數傳遞
Public Function gf_ObjToPointer(ByRef objThisObject As Object) As Long
    Dim lngThisPointer As Long

    apiCopyMemory lngThisPointer, objThisObject, POINTERSIZE
    gf_ObjToPointer = lngThisPointer

End Function

'將指針轉換為對象,用于窗體間參數傳遞
Public Function gf_PointerToObj(ByVal lngThisPointer As Long) As Object
    Dim objThisObject As Object

    apiCopyMemory objThisObject, lngThisPointer, POINTERSIZE
    Set gf_PointerToObj = objThisObject
    apiCopyMemory objThisObject, ZEROPOINTER, POINTERSIZE

  '  Set objThisObject = Nothing  '有些時候要去掉

End Function  
分享
北京十一选五基本走势