Trabajar con más de 2 BaseDatos desde 1 prog. Vb .net

Soy nuevo en VB .Net, y estoy haciendo un programa donde debo trabajar con 3 bases de datos iguales en estructura pero con diferente nombre y con el mismo programa diseñado en VB.Net, la base de datos es SqlServer 2000.
La idea es que cuando selecciono la empresa 1 se debe trabajar y conectarse con la base de datos 1, si selecciono la empresa dos se debe trabajar y conectar con la base de datos 2 y así suesivamente.
La Conexión a la base debe cambiar cada que ingresa con una empresa dirferente, tengo una variable EMP en el modulo1 que me almacena el numero de empresa con que ingresa y la conexión esta en una clase llamada conexionbase, le trate de usar a esta variable EMP y no la ve en la clase para hacer la pregunta que si es EMP=1 o EMP=2 ... Etc. Pero no la vi y tampoco me deja en la clase importar modulo1.
El objetivo en general es que con el mismo programa pueda abrir varias bases de datos que tienen la misma estructura pero diferente nombre.
Adicionalmente.. Luego de obtener esto debo hacer un Join de las tres bases de datos y sacar un consolidado de las tres bases de datos para obtener reportes generales, ya sea que se almacene la información de las tres empresas en una nueva BD o que simplemente se haga el join para ver la información . Es más o menos como sacar un balance general de las tres empresas consolidadas o como sacar el kardex de las tres empresas, claro esta que los códigos de los productos o cuentas debe ser inguales, en eso no hay problema, lo que no se es como realizar la conexión a diferentes bases al mismo tiempo.
Gracias, si es que hay como me gustaría que me ayuden gracias nuevamente
Att. (xxxxxx)

1 respuesta

Respuesta
1
EN el app. Config puedes colocar varia entradas en la sección ConnectionString, allí colocas las diferentes cadenas de conexión las cuales de acuerdo a la empresa que selecciones puede sutilizar.
Para habriri al mismo tiempo las 3 bases de datos debes abriri 3 conexiones diferentes, 1 para cada base de datos .
Gracias por la respuesta, nunk avia utilizado app. Config pero investigando ya aprendí, me hubiera sido más fácil si me enviaba un ejemplo, Gracias
De todos modos no me gusto mucho, para lo que estoy haciendo no me es muy útil, ademas estuve leyendo y dice que uno de los inconvenientes de usar app. Config es que no se puede tener actualizada la base de datos si no que trabaja en batch y en el futuro quiero conectarme con VPN entre ciudades distantes y se debe volver lento.
Una nueva pregunta por favor, quiero utilizar una variable llamada EMP de una clase Module1 en otra clase llamada Conexión, es decir, la variable EMP que esta en el espacio de nombre Module1 en el espacio de nombres llamado conexión, me baje unos ejemplos pero no los entiendo y no me coge, no se si hay algo más fácil como por ejemplo:
Module Module1
    Public EMP As String = "Empresa1"
     .....
End Module
Public class Conexion
   Public NOMBRE As String = module.EMP
    .......
End Class
Yo se que esto que acabo de digitar no funciona, pero debe haber algo tan sencillo como esto y no tan complicado como los ejemplos que me baje.
De ser posible un ejemplo, más gracias
Gracias por tu ayuda
Primero que todo estas errado con respecto al app. Config, el app. Config es una rchivo de configuración y JAMAS significa que la cadena de conexión o manera de conectarse a la base de datos que utilices es a través de actualizaciones bath, deberías investigar y entender un poco más el concepto para poder lanzar esos juicios.
La gran ventaja del app. Config es que tu aplicación SIEMPRE funcionara y se conectara a la cadena de conexión que este guardada en este archivo, y no te tocara cambiar o compilar la aplicación nuevamente cada vez que cambien de servidor de base de datos o el nombre de la misma base de datos.
Con respecto a tu segunda pregunta, ¿la clase y el modulo están en el mismo assembly? o en el mismo namespace?
Si están en diferentes namespace, debas colocar un Imports NombredelNamespace en al clase para que puedas acceder a la clase del modulo.
Lo siento por lanzar esos juicios errados, estoy aprendiendo y por eso pido ayuda y perdón por las tonterías que se dicen o se hacen cuando se es novato, pero eso es lo que leí en un artículo de internet y lamentablemente no respalde la dirección si no te la enviaría, por la falta de conocimiento es que estoy pidiendo ayuda a alguien que sabe, como sugerencia deberías ser más tolerante, menos parco en la explicación y más explicito para aquellos que estamos aprendiendo, gracias y disculpa, si deseas seguirme ayudando la información está así:
En el explorador de soluciones me sale:
Solución 'Programa' (2 proyectos)
+ Clases
   + References
   + bin
   + Obj
   + AssemblyInfo.vb
   + CConexion
   + CIngreso.vb
   + CMenu.vb
   + .
+ Interfaces
   + References
   + AssemblyInfo.vb
   + FrmIngreso.vb
   +FrmMenu.vb
   + ...
   + Module1.vb
No se si tenga algo que ver pero Interfaces me sale en negrilla y Clases no.
Pero el momento que quiero importar al Module1.vb de interfaces me sale error. "No se puede encontrar el espacio de nombres o tipo 'Module1' correspondiente a las importaciones"
La forma que importo es : Imports interfaces.Module1
Es más cuando pongo Imports dentro de la clase CConexion solo me sale un menu con Clase, Microsoft y System, no me sale Interfaces.
Cuando hago "Import Interfaces.Module1" dentro de un Formulario como FrmIngreso.vb o FrmMenu.vb no hay problema, el problema esta cuando lo hago desde la clase CConexion, ahí me sale el error antes indicado.
Gracias por toda la ayuda brindada, y nuevamente disculpa
Me olvide decir que el nombre "Clases" es una Biblioteca de clases e "Interfaces" es Aplicación para Windows, pero en interfaces tengo la clase Module1 donde tengo muchas variables de control general del sistema y en Clases tengo CConexion que es la que conexta a la bases de datos y que ya funcionaba normalmente y deseo utilizar un datos de Module en Conexión, creo que por ahí esta el error
Gracias nuevamente
Ok,
El derecho de las cosas es que en la librería de clases es donde deberías tener ese tipo de cosas, sin embargo como lo tienes al revés, entonces pasa esos valore por parámetro al método de la librería de clases que estas llamando desde Interfaces.
Interfaces aparece en negrilla porque es el proyecto que esta por defecto para ejecutarse y siendo una aplicación windows es correcto.
Gracias por la respuesta
Al iniciar el sistema cree el Module1 en la Biblioteca de Clases como teóricamente es lo correcto y tuve problemas al abrir desde un formulario de Interfaces, no pude importar desde ningún formulario el modulo como era lo correcto, por tal razón tuve que crearlo dentro del mismo Interfaces que es Aplicación para Windows.
Es decir que el mismo problema que tengo hoy tenía antes pero al revés.
Ahorita nuevamente me cree un Modulo1 en Clases y me da el mismo error, ahora no se puede importar desde los formularios las variables que están en Clases.Module1
Lo que no quería era enviar con parámetro el valor de la variable EMP, eso si lo tengo claro, porque me tocaría modificar todas las conexiones realizadas en el sistema y son bastantes y es mucho trabajo además dispongo de poco tiempo.
Por eso era que quería tener una variable Publica Global llamada EMP para todo el proyecto, y solucionaba todo más fácilmente con un par de preguntas.
¿Tal vez hay alguna otra manera que no sea con parámetro?, algo así como una variable global pública que pueda leerla desde cualquier parte sea clase o formularios
Gracias
Ok
Supongo que lo que hace falta entonces es que agregues la referencia el proyecto de librería de clases al proyecto de aplicación windows
Esto lo haces haciendo clic derecho sobre la carpeta de referencias del proyecto, si no aparece, entonces click derecho sobre el nombre del proyecto en el explorador de soluciones de VS, allí te aparece un menu contextual en el cual hay una opción que dice "agregar referencia", seleccionas esa opción, te muestra una pantalla con varias pestañas, seleccionas .NET, allí debe aparecer el proyecto Librería de clases, lo seleccionas y listo
Luego en Interfaces si aun tienes problemas al llamar algo de la librería de clases debes colocar al principio de cada clase el Imports de la librería de clases
Gracias por la ayuda,
Lo que tú dices esta hecho, si esta referenciado tanto la Clase como Interfaces, si recuerdas en el explorador tengo de la siguiente manera:
En el explorador de soluciones me sale:
Solución 'Programa' (2 proyectos)
+ Clases
+ References
+ bin
+ Obj
+ AssemblyInfo.vb
+ CConexion
+ CIngreso.vb
+ CMenu.vb
+ .
+ Interfaces
+ References
+ AssemblyInfo.vb
+ FrmIngreso.vb
+FrmMenu.vb
+ ...
+ Module1.vb
Desde FrmIngreso.vb si puedo hacer Imports Interfaces.Module1 y también Imports Clases, lo que no puedo haces es Imports Interfaces.Module1 desde CIngreso.vb que está dentro de Clases pero si puedo hace Imports Clases.
En las pestañas de agregar referencia, en proyectos ya esta referenciado, en Interfaces hace referencia a Clases y en Clases hace referencia a Interfaces, pero cuando quiero referenciar en .Net me sale que "No se puede agregar una referencia XXXXX . Este no es un ensamblado válido un componente COM"
Para probar me cree un modulo333 dentro de Clases y desde la clase CConexion si puedo hace Import Clases.Module333, pero quiero desde el formulario FrmIngreso Import clases.Module333 y no me deja, en conclusión Módulos que están en Clases no me deja ver desde Interfaces y Módulos que están en Interfaces no me deja ver desde Clases
Gracias Saludos
Si no hay otra alternativa con la manipulación de MODULE, creo que voy a crear otro modulo en Clases.Module2 y pasar con parámetro los datos de las variables que necesito de Interfaces.Module1.
Que te parece, no es lo más óptimo pero creo que funcionará.
De esta manera puedo trabajar con las mismas variables en Clases e Interfaces sin ningún problema, en definitiva son unas 10 variables Publicas Globales las que necesito, creo que me va a servir
Gracias Saludos
Creo por el mensaje que colocas lo estas haciendo mal, debes tratar de asociar la referencia desde la epstaña que dice .NET y allí aparece el nombre de la librería de clases

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas