hacker


Ingresar con nombre de usuario, contraseña y duración de la sesión
| Portal Hacker | Editorial | Descargas | Ezine |
Inicio Ayuda Ingresar Registrarse
11 de Octubre de 2008, 05:54:00
Noticias: Convocatoria E-zine CPH #2
Para ver este enlace Registrate o Inicia Sesion
> Aquí

+  Foros pOrtal Hacker
|-+  Programacion
| |-+  Programación en general
| | |-+  Visual Basic (Moderadores: ranefi, crypto136, ziBboh, >> s E t H <<)
| | | |-+  Error 3045 Base de Datos Access
0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Error 3045 Base de Datos Access  (Leído 1413 veces)
Salko
Recien llegado
*
Desconectado Desconectado

Mensajes: 17

Member, pOrtal HAcker


Ver Perfil
« : 27 de Mayo de 2006, 07:28:57 »

Hola tengo un pequeño problema, espero que me puedan ayudar. Hice un programa que utilizo una base de datos en access el programa funciona correctamente dentro de visual Basic, pero cuando lo trato de arrancar con el ejecutable me aparece un error al momento de leer la base de tatos que dice:

Error 3045 en tiempo de ejecución:

No puede usar “DIRECCIN DE LA BASE DE DATOS”; el archivo ya esta en uso.

El código que uso para hacer la conexión de la base de datos es el siguiente:

Set bd = DBEngine(0).OpenDatabase(App.Path & "\Recibo_Nomina97.mdb", True, False, ";PWD=8425476")

Data1.Database Name = bd.Name
Data1.Connect = bd.Connect

Este error solo me aparece cuando instalo el programa en algunas maquinas donde no hice el programa.
En línea
ranefi
Moderador Global
*****
Desconectado Desconectado

Mensajes: 1,191


SELECT * FROM guapos WHERE papito_chulo = 'ranefi'


Ver Perfil WWW
« Respuesta #1 : 27 de Mayo de 2006, 08:59:20 »

Hola Salko, buen día. El error que te aparece se debe a que la base de datos ya se encuentra abierta en modo exclusivo, ahora, podemos determinar cuando tu aplicación puede abrir una base de datos en modo exclusivo; esto te puede ayudar para:

    1.- Reparar base de datos.
    2.- Compactar base de datos.
    3.- Grabar tu base de datos de Access 97 como un archivo MDE.
    4.- Convertir una base de datos en una replica de Diseño Maestro.
    5.- Convertir o habilitar una base de datos desde una versión previa.

El código para llevar a cabo lo siguiente es:

Código:

Function CanOpenDbExclusively(strDbPath As String) As Boolean
On Error Resume Next
    Dim dbe As PrivDBEngine
    Dim wrk As Workspace
    Dim dbs As Database

    Const conFileInUse = 3045
    Const conDBOpenedExclusively = 3356

    Set dbe = New PrivDBEngine
    Set wrk = dbe.Workspaces(0)
    Set dbs = wrk.OpenDatabase(strDbPath, True)

    If dbs Is Nothing Then 'SI NO SE ESPERABA UN ERROR, MUESTRA UN MENSAJE.
        'SI LA BASE DE DATOS NO PUEDE SER ABIERTA EN MODO EXCLUSIVO, REGRESA False.
        If (Err = conFileInUse Or Err = conDBOpenedExclusively) Then
            CanOpenDbExclusively = False
        Else
            MsgBox "Error: " & Err & ": " & vbCrLf & Err.Description
        End If
    Else ' SI LA BASE DE DATOS PUEDE SER ABIERTA EN MODO EXCLUSIVO, REGRESA True.
        CanOpenDbExclusively = True
        dbs.Close
    End If
End Function


Esta función regresa True si puedes abrir una base de datos en modo exclusivo. Te recomiendo que utilices bases de datos de Access 2000 o versiones posteriores, mucho mejor si usas bases de datos de SQL; puedes usar MySQL. Nos vemos.


PD: No olvides cerrar el tema si la respuesta fue satisfactoria o indicarnos si no lo fue.
En línea


SELECT * FROM mejores_batos_ del_mundo WHERE id = (SELECT DISTINCT id_guapo FROM los_mas_guapos _del_mundo WHERE papito_chulo = 'ranefi')
Salko
Recien llegado
*
Desconectado Desconectado

Mensajes: 17

Member, pOrtal HAcker


Ver Perfil
« Respuesta #2 : 27 de Mayo de 2006, 04:23:54 »

Gracias por responder, después de leer tu respuesta me surgieron algunas preguntas:

La función que me mandaste verifica si se produce algún error y si es así verifica si es el error  el numero 3045  si esto es cierto la función regresa “false” y la base de datos sigue abierta, de lo contrario regresa “true” y cierra la base de datos.

    ¿Si yo escribo este código en ves del que publica en el primer mensaje ya no me marcaría el error?

Dim dbe As PrivDBEngine
Dim wrk As Workspace
Dim dbs As Database

Set dbe = New PrivDBEngine
Set wrk = dbe.Workspaces(0)
Set dbs = wrk.OpenDataba se(App.Path & "\Recibo_Nomina97.mdb", True, False, ";PWD=8425476")

Data1.Database Name = bd.Name
Data1.Connect = bd.Connect
En línea
ranefi
Moderador Global
*****
Desconectado Desconectado

Mensajes: 1,191


SELECT * FROM guapos WHERE papito_chulo = 'ranefi'


Ver Perfil WWW
« Respuesta #3 : 29 de Mayo de 2006, 07:10:31 »

.
.
.
La función que me mandaste verifica si se produce algún error y si es así verifica si es el error  el numero 3045  si esto es cierto la función regresa “false” y la base de datos sigue abierta, de lo contrario regresa “true” y cierra la base de datos.

    ¿Si yo escribo este código en ves del que publica en el primer mensaje ya no me marcaría el error?
.
.
.

Hola, buen día Salko. Con respecto a tu primer pregunta (en caso de ser una pregunta) la respuesta es sí; y ahora, enfocándonos a la segunda pregunta, te digo que en teoría no te marcaría el error, pero como ya dije, en teoría, aquí la mejor forma de comprobarlo es llevándolo a cabo mi amigo. Espero te sirva. Nos vemos.
En línea


SELECT * FROM mejores_batos_ del_mundo WHERE id = (SELECT DISTINCT id_guapo FROM los_mas_guapos _del_mundo WHERE papito_chulo = 'ranefi')
Salko
Recien llegado
*
Desconectado Desconectado

Mensajes: 17

Member, pOrtal HAcker


Ver Perfil
« Respuesta #4 : 04 de Junio de 2006, 11:01:44 »

Probé este código:

Dim dbe As PrivDBEngine
Dim wrk As Workspace
Dim dbs As Database

Set dbe = New PrivDBEngine
Set wrk = dbe.Workspaces(0)
Set dbs = wrk.OpenDataba se(App.Path & "\Recibo_Nomina97.mdb", True, False, ";PWD=8425476")

Data1.Database Name = bd.Name

Pero no me sirvió me siguió apareciendo el error, lo bueno es que ya pude solucionar mi problema aunque creo que no es una forma muy apropiada para solucionarlo.
El código que puse fue el siguiente:


Dim bd As Database

Set bd = DBEngine(0).OpenDatabase(App.Path & "\Recibo_Nomina97.mdb", True, False, ";PWD=8425476")

Data1.Database Name = App.Path & "\Recibo_Nomina97.mdb"
En línea
Páginas: [1] Ir Arriba Imprimir 
« anterior próximo »
Ir a:  


Ingresar con nombre de usuario, contraseña y duración de la sesión

Powered by SMF 1.1.6 | SMF © 2006-2008, Simple Machines LLC hacker

Juegos gratis - Articulos PHP - Juegos - Trucos - Letras - Juegos - Juegos Online