Auxilio: No encuentro el error de .NEt para abrir un archivo access .MDB sobre Windows 98, pero que si funciona perfectamente en Windows XP

18/11/2005 - 22:16 por amigo | Informe spam
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

Preguntas similare

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
19/11/2005 - 16:03 | Informe spam
La computadora donde no funciona, ¿tiene instalado Access? Si esta
instalado, ¿es la misma version que usaste para generar la aplicacion?

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
Respuesta Responder a este mensaje
#2 Eduardo A. Morcillo [MS MVP VB]
19/11/2005 - 16:06 | Informe spam
Otra cosa que veo en el codigo:

MsgBox(ex.InnerException.ToString & ex.Message)



Una excepcion no tiene necesariamente una InnerExceptio. Puede ser que el
codigo este generando una excepcion y al momento de mostrar el mensaje se
genera otra por la llamada de ToString cuando no hay InnerException. Cambia
el codigo por:

If ex.InnerException Is Nothing Then
MsgBox(ex.Message)
Else
MsgBox(ex.InnerException.ToString & ex.Message)
End If

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
Respuesta Responder a este mensaje
#3 amigo
21/11/2005 - 14:14 | Informe spam
eso se lo agregué al ultimo y produce ninguna variacion en el resultado de
todas formas ya lo retiré... y bueno, todo sigue igual
instale el ultimo MDAC2.8 SP1
tamien los ultimos parches del office 2000 : o2kosradl.exe

"Eduardo A. Morcillo [MS MVP VB]" <emorcillo .AT. mvps.org> escribió en el
mensaje news:%
Otra cosa que veo en el codigo:

MsgBox(ex.InnerException.ToString & ex.Message)



Una excepcion no tiene necesariamente una InnerExceptio. Puede ser que el
codigo este generando una excepcion y al momento de mostrar el mensaje se
genera otra por la llamada de ToString cuando no hay InnerException.
Cambia el codigo por:

If ex.InnerException Is Nothing Then
MsgBox(ex.Message)
Else
MsgBox(ex.InnerException.ToString & ex.Message)
End If

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C

Respuesta Responder a este mensaje
#4 amigo
21/11/2005 - 14:20 | Informe spam
la aplicacion funciona sinn problemas cuando la abro directa desde el
explorador de windows pero cuando realizo la misma operacion de abrirlo
desde .NEt no funcion y solo sobre windows 98 porque en XP no dá ningún
problema y todo corre bien



"Eduardo A. Morcillo [MS MVP VB]" <emorcillo .AT. mvps.org> escribió en el
mensaje news:u5$
La computadora donde no funciona, ¿tiene instalado Access? Si esta
instalado, ¿es la misma version que usaste para generar la aplicacion?

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida