none
Aplicación con 2 Bases de datos (Access y SQL Server) RRS feed

  • Pregunta

  • Un saludo a todos.

     

    Tengo la siguiente duda.

    ¿Cómo puedo crear una aplicación donde pueda manejar bases de datos tanto Access como SQL Server?

    El usuario elige cual quiere usar y la aplicación se conectara a la base de datos correspondiente.

     

    De momento tengo mucho avance en el programa pero manejo solo conexiones para SQL Server quiero encontrar una solución que no me vaya a retrasar mucho, para poder integrarle la opción de manejar base de datos en Access.

     

    Gracias, un saludo

    viernes, 11 de julio de 2008 19:20

Respuestas

Todas las respuestas

  • Hola Roberto,

    Aquí te dejo una idea de cómo utilizar MDF y MDB’s.

    No dudes en contactar si si quieres ajustarlo a tu idea.

    Imports System.Data.OleDb

    Imports System.Data.SqlClient

     

     

    Public Class Form1

        Private WithEvents ComboBox1 As New ComboBox

        Private WithEvents DataGridView1 As New DataGridView

        '

        'Definir enlace a datos y objetos del form

        Private SQLConexion As New SqlConnection( _

            "Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Temp\Northwnd.mdf" + _

            ";Integrated Security=True;Connect Timeout=30;User Instance=True")

     

        Private MDBConexion As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" + _

            "Data Source=C:\Temp\bd1.mdb")

     

        Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

            Me.Controls.Add(ComboBox1)

            Me.ComboBox1.Dock = DockStyle.Top

            AddHandler ComboBox1.SelectedIndexChanged, AddressOf Obtener_Articulos

     

            Me.Controls.Add(Me.DataGridView1)

            Me.DataGridView1.Dock = DockStyle.Fill

     

            Me.ComboBox1.DisplayMember = "CompanyName"

            Me.ComboBox1.ValueMember = "SupplierID"

            Me.ComboBox1.DataSource = Obtener_Proveedores()

        End Sub

        '

        ' Cargar el DGV con la seleccion de articulos segun el proveedor

        Private Sub Obtener_Articulos()

            Dim Articulos = "SELECT * FROM Products Where SupplierId = " + ComboBox1.SelectedValue.ToString

            SQLConexion.Open()

            Dim MiSqladapter As New SqlDataAdapter

            MiSqladapter.SelectCommand = New SqlCommand(Articulos, SQLConexion)

            Dim MiTabla As New DataTable()

            MiSqladapter.Fill(MiTabla)

            SQLConexion.Close()

            Me.DataGridView1.DataSource = MiTabla

        End Sub

        '

        ' Obtener la tabla de proveedores como 'datasource del ComboBox'

        Private Function Obtener_Proveedores()

            MDBConexion.Open()

            Dim MDBadapter As New OleDbDataAdapter("Select * from Suppliers", MDBConexion)

            Dim MiTabla As New DataTable()

            MDBadapter.Fill(MiTabla)

            Return MiTabla

        End Function

     

    End Class

     

    viernes, 11 de julio de 2008 22:50
  • Gracias por tu respuesta amigo, pero la idea es mas bien lo siguiente:

     

    Por ejemplo, tengo lo siguiente:

    Code Snippet

    Using Cnn As New SqlConnection(ConexionSQL)

    Dim Cmd As New SqlCommand(sSQL, Cnn)

    Dim Tabla As New DataTable

    Dim Datos As New SqlDataAdapter(Cmd)

    Cmd.CommandTimeout = 90

    Cnn.Open()

    Datos.Fill(Tabla)

    End Using

     

     

    Donde ConexiónSQL el String de Conexión al servidor de SQL Server

    La idea es que si el usuario selecciona que trabajara con la base de datos en Access entonces ConexionSQL tendra la cadena para conectarlo a Access, y lo mismo en el caso contrario para que trabaje con SQL Server, pero sin tener que cambiar el resto de las rutinas, por que ya tengo el sistema muy avanzado y hacer un cambio en todos los procesos para adaptarle la conexion a Access me tomaria mucho tiempo.

     

    Entonces el objetivo seria lograr conectarse y trabajar a cualquiera de los dos tipos de base de datos con una misma rutina.

     

    Gracias, un saludo

    sábado, 12 de julio de 2008 5:36
  • Roberto,

    Pues hasta donde alcanza mi conocimiento, necesitas de OLEDB para abrir una base de datos access.

    Lamento no poder ayudarte y espero que si alguien pueda aportar algo nuevo en este sentido.

     

    Saludos,

    Pep Lluis,

     

     

    sábado, 12 de julio de 2008 19:32
  • Hola,

     

    ¿Y porque en lugar de los objetos del namespace SqlClient no utilizas el namespace Common?

     

    Por ejemplo, el objeto DBConnection:

    http://msdn.microsoft.com/en-us/library/system.data.common.dbconnection.aspx

     

    Y además te permite usar factorías, para usar el proveedor que deseas a partir de un string:

    http://geeks.ms/blogs/lfranco/archive/2008/07/12/how-to-utilizar-en-modelo-de-proveedores-de-datos-de-ado-net-2-0.aspx

     

    Saludos desde Andorra,

     

    martes, 15 de julio de 2008 9:06
    Moderador
  • Muchas gracias amigo...

    Trabaja perfectamente las referencias que nos dio.

     

    Un saludo

    jueves, 17 de julio de 2008 18:23
  • :-)

    De nada!

     

    viernes, 18 de julio de 2008 7:26
    Moderador