Programación General > Visual Basic 6.0 e inferiores
Como Conectar Access En Red Con Visual 6.0
Juanolo:
Hola catwoman.
No he tenido grandes conflictos, en general acces se comporta en forma bastante inteligente y sólo se puede dar en un par de casos.
Obviamente, la base de datos no se debe abrir en modo exclusivo.
El conflicto se presenta cuando dos o más usuarios intentan modificar un registro al mismo tiempo. Para evitar esto, vale un par de recomendaciones:
1° No TOMAR el registro por mucho tiempo a la hora de editar. Lo ideal es que captures los cambios en cuadros de texto independientes y luego 'vacíes' la información a la tabla de una sola vez, en una fracción de segundo.
2° Aún así, todavía persiste la posibilidad de que dos usuarios lleguen a editar al mismo tiempo. Sin embargo, este error es interceptable y se puede poner un retardo que funciona más o menos así: Si hay otro usuario modificando, se producirá un error pues el registro está bloqueado, se ejecuta un retardo del siguiente tipo:
--- Código: Text ---for i=0 to 1000 i=i+1next i y se vuelve a intentar la modificación.
En la ayuda de visual, en el manejo de errores, hay ejemplos más claros.
En fin, haz la prueba. Si no mantienes el registro abierto por mucho rato al editar, en el 99,999999% de los casos ni siquiera necesitarás del segundo punto.
Respecto a la solución de vincular las tablas desde una base local a la de red, tiene el problema de la dificultad al cambiar la dirección de la base de origen. Por otro lado, aquí puedo estar equivocado, pero me da la impresión que se pierde alguna funcionalidad con el manejo de índices (para usar el método seek, por ejemplo).
Bueno, haz la prueba, lo demás irá saliendo solo.
Salu2.
seek20:
Hola Yovana!!!
Contestando a tu pregunta sobre los ODBC's efectivamente existen tres tipos y te recomiendo que el que utilices para tu sistema lo generes de preferencia en la opción de ODBC de sistema ya que con esta opción no importa que usuario se firme a la red y con qué clave, ya que la configuración personalizada de cada usuario no tendrá efecto sobre este tipo de ODBC que es visible para cualquier usuario que trabaje en dicha PC.
En cuanto al uso de ADO tú podrás hacer la conexión por medio de un ODB o de un string conection que se conecte directamente a la BD usando la ruta física de la misma, sin necesidad de crear un ODBC, y a mi gusto es mejor usar una conexión directa que te evite estar generando ODBC's en cada cliente que use el sistema.
Este es el texto que debes incluir en tu string de conexión:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\BD.mdb;Persist Security Info=False
puedes cambiar esto C:\BD.mdb por por una unidad de red, solo que también esta se debe crear en cada uno de los clientes que utilice tu sistema.
Espero que la información te sea de ayuda, pero en caso de que tengas dudas me encuentro a tus órdenes para lo que gustes.
Suerte y me avisas como te fue!!!
:devil:
Yovana:
Gracias a todos por la ayuda :rolleyes:
seek20
Probé colocando solo el conection string y funciona para todas la maquinas así que me olvido de los ODBC y gracias por aclararme cual es el mas útil.
Pero como el tiempo es oro y no tengo mucho de ninguno, como para modificar todo el sistema, que es grande lo entrego con dao y con mas tranquilidad aprendo mejor ado y lo actualizo :D
Juanolo
como evito que se habrá la base de batos de modo exclusivo es un valor que se le da directamente a la BD por Access, por que en ocasiones estoy ejecutando el sistema y quiero abrir la BD por Microsoft Access da error, cierra todo, le crea copias de seguridad, me insulta y no abre ojo no es siempre.
Bueno eso es todo :kicking:
Y otra vez gracias por ayudarme :gracias: :comp:
Juanolo:
Estimada Señorita:
Primero, en un módulo declaro las variables globales que voy a necesitar:
--- Código: Text ---Global BaseDeDatos as String 'Cadena con el path de la base de datosGlobal WsGen As Workspace 'Espacio de trabajo general.Global BaseGen As Database 'Base de datos general.Global PwdGen As String
En el formulario de inicio, capturo el valor de esas variables:
--- Código: Text ---Private Sub MDIForm_Load() Set WsGen = Workspaces(0) BaseDeDatos = App.Path & "\Bases.mdb" PwdGen = ";pwd=" 'Para base sin clave' PwdGen = ";pwd=clave01" 'Para base con clave (la clave es 'clave01')End Sub
Luego, el código para cargar la base de datos sería:
--- Código: Text ---Set BaseGen = WsGen.OpenDatabase(BaseDeDatos, False, 0, PwdGen)
La instrucción false, indica que se abre en modo compartido. Si quieres abrirla en forma exclusiva debes cambiar ese valor por True.
Nota, también, que basta con cambiar la cadena de BaseDeDatos para que cambie la base de datos utilizada en toda la aplicación.
Por otro lado, al cargar la base en BaseGen, puedo hacerlo sólo una vez en todo el proyecto; sólo la descargo al salir, o para tareas puntuales como compactar.
Cuando necesites abrir un recordset, indicas, por ejemplo:
--- Código: Text --- Dim Vista As Recordset Set Vista = BaseGen.OpenRecordset("Clientes", dbOpenTable) Vista.Index = "RutCli"
O para un control data:
--- Código: Text --- Data1.DatabaseName = BaseDeDatos Data1.RecordSource = "Select ...
Espero te sirva.
Salu2.
Yovana:
Ahora si soy completamente feliz graciassssssssss a todos hay un cliente satisfecho :D :kicking:
seguimos en contacto chicos
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa