Hola amigos:
Tengo una aplicacion que usa un metodo que permite abrir un formulario
access, yo uso Windows XP y no da ningun problema pero cuando lo instalo en
otros equipos conWindows 98 SE , no permite abrir objetos acces MDB , aunque
sin embargo me permite abrir Proyectos Access .ADP
y me permite abrir formularios. Al parecer me falta algo cuando abro objetos
MDB, puesto que no encuntra el archivo MDB y por lo tanto no se instancia:
el mensaje de error:
"Referencia Objeto no establecida como instancia de un objeto"
¿Como puedo depurar el error en esa otra maquina queno tiene VS.NET?
Esta es mi funcion y funciona perfectamente en Windows XP, así es que se las
dejo, a mí me sirve mucho. solo tengo que descubrir que pasa en otro equipo
con Windows 98 que no abr los archivo MDB
Public Sub AbrirFormAccess(ByVal sForm As String, ByVal Archivo As String,
ByVal tipo As Boolean)
Try
Dim oAccess As Access.Application
Dim oForm As Access.Form
Dim oReport As Access.Report
Dim sDBPath As String
oAccess = New Access.ApplicationClass
If Not oAccess.Visible Then oAccess.Visible = True
'sDBPath = oAccess.SysCmd(Action:=Access.AcSysCmdAction.acSysCmdAccessDir)
sDBPath = "C:\"
sDBPath = sDBPath & Archivo
If tipo Then
oAccess.OpenCurrentDatabase(filepath:=sDBPath, Exclusive:=False)
Else
oAccess.OpenAccessProject(filepath:=sDBPath, Exclusive:=False)
End If
For Each oForm In oAccess.Forms
oAccess.DoCmd.Close(ObjectType:=Access.AcObjectType.acForm, _
ObjectName:=oForm.Name, _
Save:=Access.AcCloseSave.acSaveNo)
Next
If Not oForm Is Nothing Then
System.Runtime.InteropServices.Marshal.ReleaseComObject(oForm)
End If
oForm = Nothing
oAccess.DoCmd.SelectObject(ObjectType:=Access.AcObjectType.acForm, _
ObjectName:=sForm, InDatabaseWindow:=True)
oAccess.RunCommand(Command:=Access.AcCommand.acCmdAppMaximize)
oAccess.DoCmd.OpenForm(FormName:=sForm, View:=Access.AcView.acViewNormal)
oAccess.DoCmd.Maximize()
oAccess.CommandBars("Menu Bar").Enabled = False
If Not oAccess.UserControl Then oAccess.UserControl = True
System.Runtime.InteropServices.Marshal.ReleaseComObject(oAccess)
oReport = Nothing
oAccess = Nothing
Catch ex As Exception
MsgBox(ex.InnerException.ToString & ex.Message)
Finally
End Try
End Sub
gracias, se despide cordialmente,
amigo
Leer las respuestas