Ir al contenido



Foto

Problema con aplicacion en cd y bd access


  • Por favor identifícate para responder
24 respuestas en este tema

#1 Punzo

Punzo

    Member

  • Miembros
  • PipPip
  • 16 mensajes

Escrito 29 abril 2011 - 11:11

Buen dia a todos, tengo un problemita con una aplicacion que quiero que corra desde un cd, pero al momento de que la aplicacion quiere abrir la bd me dice que: "No se pudo bloquear el archivo", no se si es forzosamente necesario tener la bd en disco duro? mi ConnectionString es el siguiente:


delphi
  1. Ac.ConnectionString := 'Provider=Microsoft.ACE.OLEDB.12.0;Data Source='+Archivo+';' +
  2.                                   'Mode=Read;Persist Security Info=False';



Ojala que me puedan ayudar, gracias de antemano. Tanto la BD de Access como la aplicacion se encuentran en cd.
  • 0

#2 Caral

Caral

    Advanced Member

  • Administrador
  • 4.218 mensajes
  • LocationCosta Rica

Escrito 29 abril 2011 - 11:18

Hola
Nunca lo he hecho, pero LEER la BD deberia ser posible desde el CD.
Saludos
  • 0

#3 Punzo

Punzo

    Member

  • Miembros
  • PipPip
  • 16 mensajes

Escrito 29 abril 2011 - 11:21

Pues no puede leer desde el cd, de hecho en el connectionstring lo puse como modo lectura solamente, y no lo abre; tendras alguna idea del porque?, gracias por tu pronta respuesta.
  • 0

#4 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.937 mensajes
  • LocationMéxico

Escrito 29 abril 2011 - 11:24

El problema es que estas usando un proveedor OLEDB que no admite el arametro mode. prueba usando Jet de la siguiente manera:



delphi
  1. Ac.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0; Source='+Archivo+';' +                                    'Mode=Read;Persist Security Info=False';



  • 0

#5 Punzo

Punzo

    Member

  • Miembros
  • PipPip
  • 16 mensajes

Escrito 29 abril 2011 - 11:25

Ok, probando, gracias.
  • 0

#6 Caral

Caral

    Advanced Member

  • Administrador
  • 4.218 mensajes
  • LocationCosta Rica

Escrito 29 abril 2011 - 11:27

Hola
No se amigo.
He hecho pruebas desde un disco USB y no solo lo lee, hace de todo.
En el caso de un CD, me imagino que tendran que ver otras cosas, por eso me imagino que leerlo lo haria.
Ahora: Por que no intentas poner el programa fuera del CD y ver si lee la BD en el CD ?.
Saludos
  • 0

#7 Punzo

Punzo

    Member

  • Miembros
  • PipPip
  • 16 mensajes

Escrito 29 abril 2011 - 11:55

Probe con el proveedor Microsoft.Jet.OLEDB.4.0, y me sigue diciendo lo mismo: "No se pudo bloquear el archivo", saque el exe al disco duro para que lea la bd en el cd, y me dice lo mismo, creen que es mejor hacer un instalador para que los copie al dd?, de plano no se puede leer una bd de access en cd desde una aplicacion?

  • 0

#8 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 29 abril 2011 - 12:05


Hola Punzo  (y)

Tengo entendido que Access bloquea la BD cuando un usuario tiene acceso a ella (yo he tenido que cerrar Access cuando quiero conectarme al *.mdb desde Delphi)...


Por el error y por ésto que me ha pasado, creo que el problema es que no puede escribir sobre el CD donde tienes la BD, a Caral no le pasa éste problema porque en la USB si puede escribir...


La BD tiene que estar colocada en un lugar donde pueda leer/escribir sobre ella porque de igual modo, si no es el bloqueo, cómo grabará los datos sobre la BD ?


Haz la prueba sacando la BD del CD y coméntanos porfas....


Saludox ! :)
  • 0

#9 Punzo

Punzo

    Member

  • Miembros
  • PipPip
  • 16 mensajes

Escrito 29 abril 2011 - 12:13

Copiandolos al DD, si funciona bien sin problemas, de hecho cuando abre la bd, crea un archivo .ldb en el mismo sitio donde se encuentra la bd. Entonces no se podra de plano leer la bd?
  • 0

#10 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 29 abril 2011 - 12:19

Pues así directamente me suena como a que no, pero a lo mejor haciendo una trampilla que cuando ejecutes el exe, copies la BD a una dirección temporal en Disco Duro y al cerrar el exe, se destruya...


No sé, podría ser  ^o|


Saludox ! :)
  • 0

#11 Caral

Caral

    Advanced Member

  • Administrador
  • 4.218 mensajes
  • LocationCosta Rica

Escrito 29 abril 2011 - 12:20

Hola
Acabas de dar en el clavo tu mismo.
Cuando se abre la BD access ella crea un archivo adicional, con una llave para indicar que esta abierta.
NO puede crear ese archivo en el CD, asi de sencillo.
Osea, No se puede usar desde un CD.
Saludos
  • 0

#12 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.254 mensajes
  • LocationRepública Dominicana

Escrito 29 abril 2011 - 12:23

Sí se puede leer desde un CD, sólo agregar la siguiente línea:



delphi
  1. ADOConnection.Mode := cmShareExclusive;



Saludos.
  • 0

#13 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 29 abril 2011 - 12:25

Esto hace al *.mdb de sólo lectura amigo ?  8-|


Saludox ! :)
  • 0

#14 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.254 mensajes
  • LocationRepública Dominicana

Escrito 29 abril 2011 - 12:26

Esto hace al *.mdb de sólo lectura amigo ?  8-|


Saludox ! :)


Yes mi querida amiga (y).
  • 0

#15 Caral

Caral

    Advanced Member

  • Administrador
  • 4.218 mensajes
  • LocationCosta Rica

Escrito 29 abril 2011 - 12:28

Hola
Y me pregunto:
Donde estabas Fernando, aqui nosotros inventado remedios caseros y tu que ...... :D :D :D
Saludos
  • 0

#16 Punzo

Punzo

    Member

  • Miembros
  • PipPip
  • 16 mensajes

Escrito 29 abril 2011 - 12:33

Agregue la linea enecumene, y me sale el mismo error: No se pudo bloquear el archivo; probe tambien con cmRead, y nada.
  • 0

#17 Punzo

Punzo

    Member

  • Miembros
  • PipPip
  • 16 mensajes

Escrito 29 abril 2011 - 12:36

Quedo asi:


delphi
  1. Ac.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\LN.mdb;Mode=Read;Persist Security Info=False';
  2. Ac.Mode := cmShareExclusive;
  3. Ac.Open;


y me tira el mismo error.  :sad:
  • 0

#18 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.937 mensajes
  • LocationMéxico

Escrito 29 abril 2011 - 12:43

quita la línea Ac.Mode := cmShareExclusive; deja solo el Ac.Open. e intentalo de nuevo
  • 0

#19 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 29 abril 2011 - 12:44

Quedo asi:


delphi
  1. Ac.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\LN.mdb;Mode=Read;Persist Security Info=False';
  2. Ac.Mode := cmShareExclusive;
  3. Ac.Open;


y me tira el mismo error. 


Prueba con



delphi
  1. Ac.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\LN.mdb;Mode=cmShareExclusive;Persist Security Info=False';
  2. Ac.Open;



Saludox !
  • 0

#20 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.937 mensajes
  • LocationMéxico

Escrito 29 abril 2011 - 12:44

o puedes dejar la línea Ac.Mode := cmShareExclusive; y quitar el Mode=Read; de la cadena de conexión.

es cosa de probarle
  • 0