[AccessD] New Computer Gives Error

Stuart McLachlan stuart at lexacorp.com.pg
Sat Jun 9 16:35:08 CDT 2012


Yep, 64bit Office with calls toi 32bit API functions is the problem.

The fix is fairly simple.  Here's a example of what you need to do (from one of my apps using 
similar functions).

#If VBA7 Then

Private Declare PtrSafe Function GetTempPath Lib "kernel32" Alias "GetTempPathA" _
        (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long

Declare PtrSafe Function GetOpenFileName Lib "comdlg32.dll" Alias _
        "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long

Private Declare PtrSafe Function apiGetUserName Lib "advapi32.dll" Alias _
        "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Public Declare PtrSafe Function ShellExecute Lib "SHELL32.DLL" Alias _
     "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, _
    ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal 
nShowCmd As Long) As Long

#Else

Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
    GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long

Private Declare Function apiGetUserName Lib "advapi32.dll" Alias _
    "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Public Declare Function ShellExecute Lib "SHELL32.DLL" Alias _
    "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, _
     ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal 
nShowCmd As Long) As Long  

#End If




On 9 Jun 2012 at 5:01, rockysmolin at bchacc.com wrote:

> forgot to send plain text.
> 
> R
> 
> 
> 
> -------- Original Message --------
> Subject: RE: [AccessD] New Computer Gives Error
> From: <rockysmolin at bchacc.com>
> Date: Sat, June 09, 2012 5:01 am
> To: "Access Developers discussion and problem solving"
> <accessd at databaseadvisors.com>
> 
> Further here are the Declares in the app - most are from the ADH 2003. 
> Adding PtrSafe creates a compile error - So I'm thinking that's an
> Access 2010 reserved word.
> 
> 
> Declare Function adh_apiGetOpenFileName Lib "comdlg32.dll" _
>  Alias "GetOpenFileNameA" (ofn As tagOPENFILENAME) As Boolean
> 
> Declare Function adh_apiGetSaveFileName Lib "comdlg32.dll" _
>  Alias "GetSaveFileNameA" (ofn As tagOPENFILENAME) As Boolean
> 
> 
> Declare Function ShellExecute Lib "shell32.dll" Alias _
>    "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation _
>    As String, ByVal lpFile As String, ByVal lpParameters _
>    As String, ByVal lpDirectory As String, ByVal nShowCmd _
>    As Long) As Long
>    
> 
> Private Declare Function ts_apiGetOpenFileName Lib "comdlg32.dll" _
>  Alias "GetOpenFileNameA" (tsFN As tsFileName) As Boolean
> 
> Private Declare Function ts_apiGetSaveFileName Lib "comdlg32.dll" _
>  Alias "GetSaveFileNameA" (tsFN As tsFileName) As Boolean
> 
> Private Declare Function CommDlgExtendedError Lib "comdlg32.dll" () As
> Long
> 
> 
> Private Declare Function SHGetPathFromIDList Lib "shell32.dll" _
>  Alias "SHGetPathFromIDListA" (ByVal pidl As Long, _
>  ByVal pszPath As String) As Long
> 
> Private Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" _
>  (ByVal hwndOwner As Long, ByVal nFolder As Long, _
>  pidl As ITEMIDLIST) As Long
> 
> Private Declare Function SHBrowseForFolder Lib "shell32.dll" Alias _
>  "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long
> 
> 
> Declare Function adh_apiDeleteDC Lib "gdi32" _
>  Alias "DeleteDC" (ByVal hdc As Long) As Long
> Declare Function adh_apiGetDeviceCaps Lib "gdi32" _
>  Alias "GetDeviceCaps" (ByVal hdc As Long, _
>  ByVal nIndex As Long) As Long
> Declare Function adh_apiGetClientRect Lib "USER32" _
>  Alias "GetClientRect" (ByVal hWnd As Long, _
>  lpRect As adhTypeRect) As Long
> Declare Function adh_apiIsIconic Lib "USER32" _
>  Alias "IsIconic" (ByVal hWnd As Long) As Long
> Declare Function adh_apiMoveWindow Lib "USER32" _
>  Alias "MoveWindow" (ByVal hWnd As Long, _
>  ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, _
>  ByVal nHeight As Long, ByVal bRepaint As Long) As Long
> Declare Function adh_apiGetSystemMetrics Lib "USER32" _
>  Alias "GetSystemMetrics" (ByVal nIndex As Long) As Long
> Declare Function adh_apiCreateIC Lib "gdi32" _
>  Alias "CreateICA" (ByVal lpDriverName As String, _
>  ByVal lpDeviceName As String, ByVal lpOutput As String, _
>  lpInitData As Any) As Long
> Declare Function adh_apiGetWindowRect Lib "USER32" _
>  Alias "GetWindowRect" (ByVal hWnd As Long, _
>  lpRect As adhTypeRect) As Long
> Declare Function adh_apiGetParent Lib "USER32" _
>  Alias "GetParent" (ByVal hWnd As Long) As Long
> Declare Function adh_apiGetOpenFileName Lib "comdlg32.dll" _
>  Alias "GetOpenFileNameA" (ofn As tagOPENFILENAME) As Boolean
> Declare Function adh_apiGetSaveFileName Lib "comdlg32.dll" _
>  Alias "GetSaveFileNameA" (ofn As tagOPENFILENAME) As Boolean
> Declare Function CommDlgExtendedError Lib "comdlg32.dll" () As Long
> Declare Function adhChooseCOlor Lib "msaccess.exe" _
>  Alias "#53" (ByVal hWnd As Long, RGB As Long) As Long
>  
> Private Declare Function apiMessageBoxW Lib "user32.dll" Alias
> "MessageBoxW" _
>        (ByVal hWnd As Long, ByVal Txt As String, _
>        ByVal Caption As String, ByVal Typ As Integer) As Integer
> 
> 
>   -------- Original Message --------
>  Subject: [AccessD] New Computer Gives Error
>  From: <rockysmolin at bchacc.com>
>  Date: Sat, June 09, 2012 4:42 am
>  To: "Access Developers discussion and problem solving"
>  <accessd at databaseadvisors.com>
>  
>  Dear List:
>  
>  I am out of town until the 17th so figuring out what's wrong with an
> app
>  that has been running fine and now doesn't is awkward. 
>  
>  The user got a new computer with (I think) W7 and new Office (but he
>  doesn't know which version) and sent me the screen shot he gets when he
>  tries to open the app. 
>  
>  The error reads:"The expression you entered as the event property
>  setting produced the following error code: the code in this project
> must
>  be updated for use on 64-bit systems. Please review and update Declare
>  statements and then mark them with the PtrSafe attribute."
>  
>  Is he running the 64-bit Office and needs to load 32-bit version
>  instead? 
>  
>  MTIA,
>  
>  Rocky
>  
>  
>  -- 
>  AccessD mailing list
>  AccessD at databaseadvisors.com
>  http://databaseadvisors.com/mailman/listinfo/accessd
>  Website: http://www.databaseadvisors.com
> 
> 
> -- 
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com
> 

--
Stuart McLachlan

Ph:    +675 340 4392 
Mob: +675 7100 2028
Web: http://www.lexacorp.com.pg



More information about the AccessD mailing list