none
Como llenar un datagridview con 2 o mas bases de datos con una misma consulta. RRS feed

  • Pregunta

  • Hola primera vez que escribo por acá y espero la ayuda porque tengo mucho tiempo en esto pero no he podido dar con la solución del problema, estoy trabajando con vb.net 2013 y mysql.

    le explico:

    tengo un datagridview donde quiero mostrar cierta informacion pero de 4 base de datos diferentes con la misma consulta mysql.

    por ejemplo la consulta es "SELECT codprod,nombre,stock FROM productos", me muestre esas 3 columnas y al lado me muestre el stock de las otras base de datos y así poder ver el stock total del stock de todas las bases de datos, dibujo una imagen de ejemplo para lo que necesito por favor.

    ____________________________________________________________________________

     codprod |  nombre                           | stockDB1       | stockDB2      | stockDB3        | stockDB4 | Total

    1          galletas 1 2 5 0 8
    2          chocolates 0 4 10 2 16
    3          agua mineral 2 2 5 6 15
    4          refresco 7 5 0 0 12
    5          pan dulce 10 0 3 2 15


    muchas gracias por la ayuda de antemano.

    lunes, 8 de abril de 2019 19:55

Respuestas

  • Hola:
    He creado 3 tablas en 3 bases diferentes como las de las imágenes

    Al ejecutar la siguiente consulta

    SELECT base1.dbo.prueba.codprod, base1.dbo.prueba.nombre, base1.dbo.prueba.stock1, base2.dbo.prueba.stock2, base3.dbo.prueba.stock3
    FROM base1.dbo.prueba
    INNER JOIN base2.dbo.prueba ON base2.dbo.prueba.codprod=base1.dbo.prueba.codprod
    INNER JOIN base3.dbo.prueba ON base3.dbo.prueba.codprod=base1.dbo.prueba.codprod

    El resultado es

    Un saludo desde Bilbo
    Carlos


    • Marcado como respuesta BogBer21 miércoles, 10 de abril de 2019 12:37
    martes, 9 de abril de 2019 19:45

Todas las respuestas

  • Hola  

    Gracias por levantar tu consulta en los foros de MSDN. Con respecto a la misma, te hago la recomendación de ingresar al siguiente enlace en donde puedes encontrar una posible solución para tu problema.

    https://social.msdn.microsoft.com/Forums/es-ES/c1dca404-d42f-443b-b746-e864f2c366fa/llenar-datagridview-con-2-o-mas-tablas-mysql?forum=vbes

    Gracias por usar los foros de MSDN.

    Carlos Ruiz
     ____

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    lunes, 8 de abril de 2019 21:17
  • hola gracias por dedicar de tu tiempo para responder, pero en realidad no es lo que estoy buscando porque ya lo he hecho llenar un DataGridView con dos tablas es con UNION ALL y que las tablas tengan las mismas columnas.

    lo que yo busco es llenar un DGV con una sola consulta desde 4 BASE DE DATOS diferentes con conexiones diferentes.

    la consulta es:

    "SELECT codprod,nombre,stock FROM productos" y que me muestre aquellos productos que tengan o no stock y ver en cual de las base de datos el producto no tiene stock.

    algo asi:

    codprod |    nombre                                 | stockDB1       | stockDB2       | stockDB3        | stockDB4 |         Total

          1             galletas                                        1                          2                      5                        0                   8

          2             chocolate                                     0                          4                     10                       2                 16

          3             agua mineral                                2                         2                       5                        6                 15

          4             refresco                                        7                          5                       0                       0                  12

          5             pan dulce                                    10                         0                       3                        2                 15   


    martes, 9 de abril de 2019 12:47
  • Hola:
    He creado 3 tablas en 3 bases diferentes como las de las imágenes

    Al ejecutar la siguiente consulta

    SELECT base1.dbo.prueba.codprod, base1.dbo.prueba.nombre, base1.dbo.prueba.stock1, base2.dbo.prueba.stock2, base3.dbo.prueba.stock3
    FROM base1.dbo.prueba
    INNER JOIN base2.dbo.prueba ON base2.dbo.prueba.codprod=base1.dbo.prueba.codprod
    INNER JOIN base3.dbo.prueba ON base3.dbo.prueba.codprod=base1.dbo.prueba.codprod

    El resultado es

    Un saludo desde Bilbo
    Carlos


    • Marcado como respuesta BogBer21 miércoles, 10 de abril de 2019 12:37
    martes, 9 de abril de 2019 19:45
  • Hola:
    He creado 3 tablas en 3 bases diferentes como las de las imágenes


    Al ejecutar la siguiente consulta

    SELECT base1.dbo.prueba.codprod, base1.dbo.prueba.nombre, base1.dbo.prueba.stock1, base2.dbo.prueba.stock2, base3.dbo.prueba.stock3
    FROM base1.dbo.prueba
    INNER JOIN base2.dbo.prueba ON base2.dbo.prueba.codprod=base1.dbo.prueba.codprod
    INNER JOIN base3.dbo.prueba ON base3.dbo.prueba.codprod=base1.dbo.prueba.codprod

    El resultado es


    Un saludo desde Bilbo
    Carlos


    hola muchísimas gracias por la respuesta me sirvió de mucho no se imaginas cuanto, de verdad gracias por su tiempo y ayuda.

    y bueno disculpe que le moleste nuevamente, esa misma consulta la puedo modificar o hacerle algo para ejecutarla en 3 servidores diferentes? y me arroje ese mismo resultado de las imágenes que envio?

    me explico, cada servidor tiene su propia conexión ejemplo:

    servidor1: server=192.168.1.1; UserId=user; database=base1; Password=1111; port=3306

    servidor2: server=192.168.1.2; UserId=user; database=base2; Password=2222; port=3306

    servidor3: server=192.168.1.3; UserId=user; database=base3; Password=3333; port=3306

    ejecutar esa consulta y en un DataGridView me muestre esos mismos resultados de la imagen.

    espero de su ayuda por favor y gracias nuevamente de antemano.

    miércoles, 10 de abril de 2019 12:47
  • Hola:
    Tienes que poner SELECT servidor.basedatos.propietario.tabla.campo
    En el ejemplo anterior he supuesto que el propietario era el dbo y las bases de datos estaban en el mismo servidor por eso se ha omitido el primer valor que es el del servidor.

    P.D.

    Espero que puedas solucionar el problema


    Un saludo desde Bilbo
    Carlos

    miércoles, 10 de abril de 2019 15:20
  • Hola:
    Tienes que poner SELECT servidor.basedatos.propietario.tabla.campo
    En el ejemplo anterior he supuesto que el propietario era el dbo y las bases de datos estaban en el mismo servidor por eso se ha omitido el primer valor que es el del servidor.

    P.D.

    Espero que puedas solucionar el problema


    Un saludo desde Bilbo
    Carlos

    Buenas noches amigo soy yo nuevamente te doy gracias por el tiempo que te tomas en ayudarme lo comprendo y aprecio, sabes que intente lo que me escribiste pero me arroja un error, coloque esto:

    SELECT
      10.0.2.1.hptal.dbo.productos.codprod,
      10.0.2.1.hptal.dbo.productos.nombre,
      10.0.2.1.hptal.dbo.productos.stock,
      10.0.5.1.ffados.dbo.productos.stock,
      10.0.6.1.ffap.dbo.productos.stock
    FROM
      10.0.2.1.hptal.dbo.productos
      INNER JOIN 
      10.0.5.1.ffados.dbo.productos
        ON 10.0.5.1.ffados.dbo.productos.codprod = 10.0.2.1.hptal.dbo.productos.codprod
      INNER JOIN 
      10.0.6.1.ffap.dbo.productos
        ON 10.0.6.1.ffap.dbo.productos.codprod = 10.0.2.1.hptal.dbo.productos.codprod

    y este es el error

    1 queries executed, 0 success, 1 errors, 0 warnings

    Query: SELECT 10.0.2.1.hptal.dbo.productos.codprod, 10.0.2.1.hptal.dbo.productos.nombre, 10.0.2.1.hptal.dbo.productos.stock, 10.0.5.1.f...

    Error Code: 1064
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.2.1.hptal.dbo.productos.codprod,
      10.0.2.1.hptal.dbo.productos.nombre,
      10.' at line 2

    Execution Time : 0 sec
    Transfer Time  : 0 sec
    Total Time     : 0 sec

    podrías pasarme tu correo o algún otro medio para comunicarme contigo mas directamente por favor. para que me ayudes porque me ha costado mas de lo normal solucionar ese problema.

    soy de venezuela. gracias de antemano.

    viernes, 12 de abril de 2019 23:02
  • Hola:
    El ejemplo que te puse esta hecho en SQL Server, tu lo estas probando en MySql.
    No se si estas sentencias son compatibles para MySql (lo uso residualmente) asi que no te puedo dar una solucion porque tampoco puedo hacer pruebas ya que solo dispongo de 1 portátil, y esto de la programacion ahora para mi es un hobby.

    Un saludo desde Bilbo
    Carlos

    sábado, 13 de abril de 2019 6:42
  • Hola:
    El ejemplo que te puse esta hecho en SQL Server, tu lo estas probando en MySql.
    No se si estas sentencias son compatibles para MySql (lo uso residualmente) asi que no te puedo dar solucion porque tampoco puedo hacer pruebas porque solo dispongo de 1 portatil y esto de la programacion ahora para mi es un hobby.

    Para 1 solo servidor te funcionara la siguiente consulta

    SELECT
      hptal.productos.codprod,
      hptal.productos.nombre,
      hptal.productos.stock AS stock1,
      ffados.productos.stock AS stock2,
      ffap.productos.stock AS stock3
    FROM
      hptal.dbo.productos
      INNER JOIN ffados.dbo.productos ON ffados.dbo.productos.codprod = hptal.dbo.productos.codprod
      INNER JOIN ffap.dbo.productos ON ffap.dbo.productos.codprod = hptal.dbo.productos.codprod
     
    Cuando las tablas estan en diferentes servidores

    Mira el siguiente enlace.

    https://www.google.com.mx/search?source=hp&ei=i0wGWr3gOImU0gLBtJlY&q=mysql+federated+server&oq=mysql+fede&gs_l=psy-ab.3.1.0j0i203k1l9.569.2734.0.7103.11.10.0.0.0.0.130.998.0j8.8.0....0...1.1.64.psy-ab..3.8.997.0..35i39k1j0i131k1j0i67k1.0.BA7UsaeZUTQ

    Un saludo desde Bilbo
    Carlos

       

    sábado, 13 de abril de 2019 8:01
  • Hola:
    El ejemplo que te puse esta hecho en SQL Server, tu lo estas probando en MySql.
    No se si estas sentencias son compatibles para MySql (lo uso residualmente) asi que no te puedo dar solucion porque tampoco puedo hacer pruebas porque solo dispongo de 1 portatil y esto de la programacion ahora para mi es un hobby.

    Para 1 solo servidor te funcionara la siguiente consulta

    SELECT
      hptal.productos.codprod,
      hptal.productos.nombre,
      hptal.productos.stock AS stock1,
      ffados.productos.stock AS stock2,
      ffap.productos.stock AS stock3
    FROM
      hptal.dbo.productos
      INNER JOIN ffados.dbo.productos ON ffados.dbo.productos.codprod = hptal.dbo.productos.codprod
      INNER JOIN ffap.dbo.productos ON ffap.dbo.productos.codprod = hptal.dbo.productos.codprod
     
    Cuando las tablas estan en diferentes servidores

    Mira el siguiente enlace.

    https://www.google.com.mx/search?source=hp&ei=i0wGWr3gOImU0gLBtJlY&q=mysql+federated+server&oq=mysql+fede&gs_l=psy-ab.3.1.0j0i203k1l9.569.2734.0.7103.11.10.0.0.0.0.130.998.0j8.8.0....0...1.1.64.psy-ab..3.8.997.0..35i39k1j0i131k1j0i67k1.0.BA7UsaeZUTQ

    Un saludo desde Bilbo
    Carlos

       

    Gracias por la ayuda, estaré investigando y leyendo sobre ese tema para poder solventar mi problema, gracias por todo.
    sábado, 13 de abril de 2019 20:33
  • Hola:
    Mira el siguiente enlace
    https://social.msdn.microsoft.com/Forums/es-ES/6d642e98-83f2-4f11-ab7d-58cf2fe724cb/como-llenar-un-datagridview-con-2-o-mas-consultas-mysql?forum=vbes

    Un saludo desde Bilbo
    Carlos

    domingo, 14 de abril de 2019 9:11