• Viernes 8 de Noviembre de 2024, 21:50

Autor Tema:  Como Conectar Access En Red Con Visual 6.0  (Leído 12457 veces)

Yovana

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Como Conectar Access En Red Con Visual 6.0
« en: Lunes 27 de Septiembre de 2004, 17:22 »
0
Saludos a todos  :hola:

Mi situación es la siguiente:

Desarrolle una aplicación con Visual Basic 6.0 que trabaja con DAO para conectarse a una Base de Datos Access 97, hasta ahí estamos bien todo funciona, el lío es que al cliente ahora quiere que el sistema este en red, he buscado información y con ADO se puede hacer y He logrado conectar el sistema a la BD en la misma maquina pregunto como haría para el resto de los usuarios:

Tengo que crear un ODBC para cada maquina.
Como seria la conexión string para abrir la BD
O Tengo que hacer 2 ejecutables uno para el usuario que tenga la base de datos en su maquina y otro para los demás por que la dirección cambia

Otra pegunta  es necesario que se cree un ODBC y si es así por que y cual Por lo que he visto hay tres tipos: de archivo, de sistema y de usuario. Y en que parte del código se usa por que en los ejemplos que tengo dice que cree el ODBC y en ninguna parte del código veo que lo nombren o será que yo no entiendo  :(  

Bueno eso es todo agradeceré cualquier ayuda que me puedan brindar


Gracias  B)
Nuestra ignorancia es directamente proporcional a la medida en que creemos en la injusticia. Lo que para la oruga es la muerte, para el resto del mundo es el nacer de una mariposa.

ebolo

  • Miembro MUY activo
  • ***
  • Mensajes: 188
    • Ver Perfil
Re: Como Conectar Access En Red Con Visual 6.0
« Respuesta #1 en: Martes 28 de Septiembre de 2004, 13:23 »
0
Hola Yovana, yo lo que hago es que creo una base de datos en cada pc usario y vínculo todas las tablas a la base de datos que hace de servidor.
La aplicación funcionará igual poniendo la misma ruta de la bd que la que está en la aplicación.
Bueno es sólo una idea, seguro que hay más formas pero esta a mí me funciona.

Saludos y suerte.

Juanolo

  • Miembro MUY activo
  • ***
  • Mensajes: 202
    • Ver Perfil
Re: Como Conectar Access En Red Con Visual 6.0
« Respuesta #2 en: Martes 28 de Septiembre de 2004, 16:31 »
0
Hey, gatúbela.
  Yo estoy en el pasado y trabajo con DAO. El asunto es que he hecho aplicaciones que trabajan en red y no tengo ningún problema con ello. O sea, si ya tienes todo listo, con muy pocos cambios lo puedes echar a andar.
  Lo único que debes cambiar es la ruta del archivo mdb, y eso lo puedes hacer capturando la carpeta en que esté como una unidad, o simplemente indicando una ruta como esta:

\\Deportes\vol1\Bases.mdb

Si capturas la carpeta como unidad, la dirección será una letra de unidad más el nombre de la tabla, por ejemplo: F:\Bases.mdb

Consejo:
  En tu aplicación, no indiques la ruta en cada oportunidad en que accedes a la base de datos. En lugar de ello, utiliza una variable global de tipo string para almacenar este dato. Así, en el formulario principal o de inicio le indicas a la aplicación la ruta que ha de seguir UNA SOLA VEZ.
  Una ventaja espectacular de este método, es que incluso le puedes permitir al usuario indicar la ruta de la base, y almacenar este dato (en un archivo INI, por ejemplo) para los usos posteriores.

Espero servirte de algo.

Salu2. :hola:
La luz que sólo se ilumina a sí misma, es oscuridad.

Yovana

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: Como Conectar Access En Red Con Visual 6.0
« Respuesta #3 en: Martes 28 de Septiembre de 2004, 18:16 »
0
Hola chicos


Ebolo:

no entiendo como es eso de vincular las tablas de una Base de dato a otra si me explica I love forever  :)

juanolo:

al direccionar a la misma base de datos no me crearia conflictos al momento de que dos o mas usuarios accedan a ella al mismo tiempo.

Si mas no me equivoco las abre de modo exclusivo o como se haria abro la BD modifico y cierro (como cierro ??? :( )  por que la idea es que todos trabajen al mismo tiempo.

Y si me equivoco por que  y cuales serian la modificaciones que haria  :rolleyes:

disculpen la preguntadera y gracias  :comp:

saludos  :hola:
Nuestra ignorancia es directamente proporcional a la medida en que creemos en la injusticia. Lo que para la oruga es la muerte, para el resto del mundo es el nacer de una mariposa.

Yovana

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: Como Conectar Access En Red Con Visual 6.0
« Respuesta #4 en: Martes 28 de Septiembre de 2004, 18:25 »
0
juanolo cuando dices:

Si capturas la carpeta como unidad, la dirección será una letra de unidad más el nombre de la tabla, por ejemplo: F:\Bases.mdb


pregunto el sistema buscaria a  F:\Bases.mdb en cualquier maquina de la red que se encuetre F:
Nuestra ignorancia es directamente proporcional a la medida en que creemos en la injusticia. Lo que para la oruga es la muerte, para el resto del mundo es el nacer de una mariposa.

Juanolo

  • Miembro MUY activo
  • ***
  • Mensajes: 202
    • Ver Perfil
Re: Como Conectar Access En Red Con Visual 6.0
« Respuesta #5 en: Martes 28 de Septiembre de 2004, 18:32 »
0
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
  1. for i=0 to 1000
  2.   i=i+1
  3. next i
  4.  
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.
La luz que sólo se ilumina a sí misma, es oscuridad.

seek20

  • Miembro activo
  • **
  • Mensajes: 32
    • Ver Perfil
Re: Como Conectar Access En Red Con Visual 6.0
« Respuesta #6 en: Martes 28 de Septiembre de 2004, 21:38 »
0
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

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: Como Conectar Access En Red Con Visual 6.0
« Respuesta #7 en: Miércoles 29 de Septiembre de 2004, 15:35 »
0
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:
Nuestra ignorancia es directamente proporcional a la medida en que creemos en la injusticia. Lo que para la oruga es la muerte, para el resto del mundo es el nacer de una mariposa.

Juanolo

  • Miembro MUY activo
  • ***
  • Mensajes: 202
    • Ver Perfil
Re: Como Conectar Access En Red Con Visual 6.0
« Respuesta #8 en: Miércoles 29 de Septiembre de 2004, 16:31 »
0
Estimada Señorita:

Primero, en un módulo declaro las variables globales que voy a necesitar:

Código: Text
  1. Global BaseDeDatos as String 'Cadena con el path de la base de datos
  2. Global WsGen As Workspace   'Espacio de trabajo general.
  3. Global BaseGen As Database  'Base de datos general.
  4. Global PwdGen As String
  5.  

En el formulario de inicio, capturo el valor de esas variables:

Código: Text
  1. Private Sub MDIForm_Load()
  2.     Set WsGen = Workspaces(0)
  3.     BaseDeDatos = App.Path & "\Bases.mdb"
  4.     PwdGen = ";pwd="  'Para base sin clave
  5. '    PwdGen = ";pwd=clave01"  'Para base con clave (la clave es 'clave01')
  6. End Sub
  7.  

Luego, el código para cargar la base de datos sería:

Código: Text
  1. Set BaseGen = WsGen.OpenDatabase(BaseDeDatos, False, 0, PwdGen)
  2.  

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
  1.     Dim Vista As Recordset
  2.     Set Vista = BaseGen.OpenRecordset("Clientes", dbOpenTable)
  3.     Vista.Index = "RutCli"
  4.  

O para un control data:

Código: Text
  1.     Data1.DatabaseName = BaseDeDatos
  2.     Data1.RecordSource = "Select ...
  3.  

Espero te sirva.

Salu2.
La luz que sólo se ilumina a sí misma, es oscuridad.

Yovana

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: Como Conectar Access En Red Con Visual 6.0
« Respuesta #9 en: Jueves 30 de Septiembre de 2004, 14:09 »
0

Ahora si soy completamente feliz graciassssssssss  a todos  hay un cliente satisfecho
 :D  :kicking:

seguimos en contacto chicos
Nuestra ignorancia es directamente proporcional a la medida en que creemos en la injusticia. Lo que para la oruga es la muerte, para el resto del mundo es el nacer de una mariposa.

Yovana

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: Como Conectar Access En Red Con Visual 6.0
« Respuesta #10 en: Miércoles 20 de Octubre de 2004, 18:42 »
0
Saludos

Por diferentes problemas no habia podido programar nada pero ya de vuelta empiezo a probar lo que me explicaron y me da el error "3170" no se puede encontrar en ISAM instalable y en la ayuda dice

"No se pudo encontrar la DLL de un archivo ISAM instalable. Este campo es necesario para vincular las tablas externas (que no sean las tablas de ODBC o de base de datos de Microsoft Jet). Estoy trabajando con acces y hasta donde se es un BDD de Microsotf Jet Las ubicaciones de todos los controladores ISAM se mantienen en el Registro de Windows. Estas entradas se crean automáticamente cuando instala la aplicación. Si cambia la ubicación de estos controladores, necesitará corregir el programa de instalación de la aplicación para que refleje este cambio y generar las entradas correctas del Registro.

Causas posibles:

· Una entrada del Registro no es válida. Por ejemplo, este error se produce si está utilizando una base de datos de Paradox externa y la entrada de Paradox no es paradox es acces apunta a un directorio o controlador que no existe. Salga de la aplicación, modifique el Registro de Windows e intente de nuevo la operación.
· Una de las entradas del Registro apunta a una unidad de red El sistema y la BDD estan en C: y ésta no está conectada. Asegúrese de que la red está disponible e intente de nuevo la operación."



Data3.DatabaseName = BDD
SQL = "select Técnicos.CodTec, Técnicos.Nombre, Técnicos.Apellido from Técnicos"
Data3.RecordSource = SQL
Data3.Refresh   (El error da en esta linea)
    Do
        If Data3.Recordset.Fields("CodTec") = Text7.Text Then (aja se lo quito y en esta linea dice la varible de bloque With no esta definida)

Mi no enterder nada   :huh: alguien quie me explique que hise mal o por que da ese error por que en  ultima opcion la maquina esta loca  :blink: no se si es que me falta instalar algo en la maquina que es y donde se consigue  :D

ayuda  :lightsabre:

 
Saludos  :comp:
Nuestra ignorancia es directamente proporcional a la medida en que creemos en la injusticia. Lo que para la oruga es la muerte, para el resto del mundo es el nacer de una mariposa.

Yovana

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: Como Conectar Access En Red Con Visual 6.0
« Respuesta #11 en: Miércoles 20 de Octubre de 2004, 21:13 »
0
ya lo arregle era un bobada  :D  :hola:
Nuestra ignorancia es directamente proporcional a la medida en que creemos en la injusticia. Lo que para la oruga es la muerte, para el resto del mundo es el nacer de una mariposa.

Sagutxo

  • Miembro MUY activo
  • ***
  • Mensajes: 320
    • Ver Perfil
Re: Como Conectar Access En Red Con Visual 6.0
« Respuesta #12 en: Miércoles 20 de Octubre de 2004, 21:21 »
0
Salu2.

No se si es diferente tu forma de hacerlo pero cuando yo abro un RECORDSOURCE lo hago de difernete manera los campos de las tablas.

Data1.DatabaseName = PathDeBase
Data1.RecordSource = "SELECT * FROM Clientes ORDER BY IdCliente"

Sustituyo el '*' por los campos que deseo, pero sin ponerles el clientes. delante del campo. Osea:

Data1.RecordSource = "SELECT IdCliente, Nombre, Direc, Tfno FROM Clientes WHERE PATATIN ORDER BY PATATAN"

Espero haberte podido ayudar.

 :comp:
Mi mujer tiene un físico bárbaro!!!. Einstein.