Me he conectado a Access con DAO y hago una serie de operaciones, pero ahora quiero abrir un formulario y un informe en Access ¿Cómo tengo que hacerlo?
1 respuesta
Respuesta de athrarn
1
1
athrarn, - Sistemas Operativos : - MS-DOS, Windows 3
No te sirve la conexion por DAO, debes referenciar (menu referencias) Microsoft Access 10.0 Object Library y desde ahi instanciar un objeto tipo access. Luego, abre la BBDD con sentencias de este tipo : Dim objAcces As New Access call Access.OpenAccessProject ([NombreArchivo], [ModoexlusivoSi/NO]) Luego juega con la estructura : Access. Application Espero que te sea util. Access. Application. Forms tiene los formularios... Etc. Suerte
Veras lo que hago. Public workBD As Workspace Public FileBD As Database Public regisBD As Recordset Set workBD = DBEngine.Workspaces(0) Set FileBD = workBD.OpenDatabase("C:\Usr\prueba.mdb", , True) Set regisBD = FileBD.OpenRecordset("elementos", dbOpenDynaset) 'Aqui hago varias cosas. Tengo menus y opciones. Inserto registros, etc. regisBD.Close FileBD.Close workBD.Close Dim appaccess As Access.Application Set appaccess = New Access.Application appaccess.OpenCurrentDatabase ("c:\usr\prueba.mdb") appaccess.DoCmd.OpenForm nombre_formulario, acNormal Esto es lo que intento hacer (resumido) y no me abre el formulario. Tampoco me da ningún error.
Es que no recuedo la propiedad para maximizar acces, pero... Bueno, si esto no te vale la busco. Option Explicit 'API Declarations Private Declare Function ShowWindow Lib "user32.dll" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long 'API Message Constants Private Const SW_MAXIMIZE = 3 Private Const SW_NORMAL = 1 Usage Dim appAccess As New Access.Application Public Sub MaximizeAccess() 'Maximize Access Application Dim hWnd As Long hWnd = FindWindow("OMain", "Microsoft Access") If hWnd <> 0 Then ShowWindow hWnd, SW_NORMAL ShowWindow hWnd, SW_MAXIMIZE End If End Sub 'Open an Access Form Private Sub Command1_Click() appAccess.DoCmd.OpenForm "Categories", acNormal, , , , acDialog End Sub 'Print an Access Report Private Sub Command2_Click() appAccess.DoCmd.OpenReport "Catalog", acViewNormal End Sub Private Sub Command3_Click() MaximizeAccess End Sub 'Open a Database Private Sub Form_Load() appAccess.OpenCurrentDatabase "C:\Program Files\Microsoft Visual Studio\VB98\nwind.mdb", True End Sub 'Close the database and the Access Instance Private Sub Form_Unload(Cancel As Integer) On Error Resume Next AppAccess. CloseCurrentDatabase AppAccess. DoCmd. Quit acQuitSaveNone End Sub
Perdona, pero no entiendo para que es esto.
Con esta orden abres el formulario suelto. appaccess.OpenCurrentDatabase (app.Path & "\BaseDeDatos.mdb") Appaccess. DoCmd. OpenForm "Formulario a abrir", acNormal,,,, acDialog Lo otro era para abrir la ventana de Access via SDK de windows. Creo que con esto te valdrá.