---Soumis par Dev Ashish---
Ouvrir un état dans une autre base de données.
(Q) Comment puis-je ouvrir un état présent dans une autre base de données, utilisant Automation?
(A) Access 97 nous donne une nouvelle méthode, OpenCurrentDatabase, de l'objet Application. Le code suivant utilise cette méthode pour accéder à un état dans une autre base de données.
'************ Code Start ************* Private Declare Function apiSetForegroundWindow Lib "user32" _ Alias "SetForegroundWindow" _ (ByVal hwnd As Long) _ As Long Private Declare Function apiShowWindow Lib "user32" _ Alias "ShowWindow" _ (ByVal hwnd As Long, _ ByVal nCmdShow As Long) _ As Long Private Const SW_MAXIMIZE = 3 Private Const SW_NORMAL = 1 Function fOpenRemoteReport(strMDB As String, _ strReport As String, _ Optional intView As Variant) _ As Boolean Dim objAccess As Access.Application Dim lngRet As Long On Error GoTo fOpenRemoteReport_Err If IsMissing(intView) Then intView = acViewPreview If Len(Dir(strMDB)) > 0 Then Set objAccess = New Access.Application With objAccess lngRet = apiSetForegroundWindow(.hWndAccessApp) lngRet = apiShowWindow(.hWndAccessApp, SW_NORMAL) 'lepremier appel à ShowWindow semble ne pas avoir d'effet lngRet = apiShowWindow(.hWndAccessApp, SW_NORMAL) .OpenCurrentDatabase strMDB .DoCmd.OpenReport strReport, intView Do While Len(.CurrentDb.Name) > 0 DoEvents Loop End With End If fOpenRemoteReport_Exit: On Error Resume Next objAccess.Quit Set objAccess = Nothing Exit Function fOpenRemoteReport_Err: fOpenRemoteReport = False Select Case Err.Number Case 7866: 'mdb ouverte en mode exclusif MsgBox "The database you specified " & vbCrLf & strMDB & _ vbCrLf & "is currently open in exclusive mode. " & vbCrLf _ & vbCrLf & "Please reopen in shared mode and try again", _ vbExclamation + vbOKOnly, "Could not open database." Case 2103: 'l'état n'existe pas MsgBox "The report '" & strReport & _ "' doesn't exist in the Database " _ & vbCrLf & strMDB, _ vbExclamation + vbOKOnly, "report not found" Case 7952: 'l"utilisateur a fermé le fichier mdb fOpenRemoteReport = True Case Else: MsgBox "Error#: " & Err.Number & vbCrLf & Err.Description, _ vbCritical + vbOKOnly, "Runtime error" End Select Resume fOpenRemoteReport_Exit End Function '************ Code End *************