none
llenar datagridview con datos de dos tablas RRS feed

  • Pregunta

  • Tengo dos tablas una con las lineas de productos y otra con los stocks, necesito cargar el datagridview con los datos de la tabla 1, pero el problema es que la tabla 2 tiene los stock pero son varios stock por linea, la tabla 1 dice por ejemplo COD. 0001 que es como la familia , y en la tabla 2 los codigos son COD. 0001-1 COD. 0001-2 COD. 0001-3. En cargar el datagridview con la tabla 1 que muestra el cod de familia, descripcion , valor por unidad eso no es problema, lo que necesito es cargar la columna stock con la consulta SUM de los codigos de la familia , no se si me explico bien.

    0001 | linea profesional | 10.000 | ????

    es decir debo hacer una consulta que tome como parametro el codigo de la familia  y a traves de este hacer la SUM a traves de LIKE en el Mysql para todos los stock de esa familia e insertarlo a medida que valla recorriendo el datagrid ... espero que se halla entendido ... porque hasta yo no entiendo ... jajajajaja 

    necesito esto para hacer la multiplicación del valor por stock en otra columna total que en eso tampoco tengo problemas.

    Gracias Y Saludos.

    • Cambiado Enrique M. Montejo jueves, 18 de agosto de 2011 13:30 acceso a datos (De:Lenguaje VB.NET)
    jueves, 18 de agosto de 2011 3:53

Respuestas

  • hola

    el problema que tienes es que has modelado de forma incorrecta la tabla

    asi como est ano cumple con los enunciados de las tres formas normales de diseño de base de datos

    Normalización de bases de datos

     

    el campo Codigo que tienes en la que muestras de Stock esta incorrecto, no deberias tenr nunca una columna compuesta, debes separar en dos esta informacion

    dos colimans una de Codigo con el D01, D02, etc y la otra con los colroes BL, AZ, etc pero deben ser dos columnas

    sino como creas las relaciones de integridad entre las tablas ? no puede, no puedes garantizar que alguien ingrese un D1100-AZ porque si lo hago tu db como esta lo permite porque no tienes relacion de integridad, lo cual es muy importante

    ademas si haces esto de separar las columnas podrias aplciar el INNER JOIN de forma directas entre las tablas y usar el SUM como comente en la priemr respuesta que proporcione

    resumen, creo que deberias estudiar algo ams de formas normales para el diseño de base de datos, porque como esta planteado no es un buen modelo

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    jueves, 18 de agosto de 2011 12:28

Todas las respuestas

  • hola

    la base de datos que usas es MySql ?

     

    podria ser algo como

    SELECT T1.Cod, T1.Descripcion, SUM(T2.Stock)

    FROM Tabla1 T1 INNER JOIN Tabla2 T2  ON T1.Cod = T2.Cod

    GROUP BY T1.Cod, T1.Descripcion

     

    Nota, quiero pensar que el la segunda tabla el 0001-1 son dos campos separados no ?

    porque sino lo son deberian serlo, ya que sino no puedes mantenr la relaciond e integridad entre la tablas, no puede relacionarlas, deberia ser unc ampo para el cod 0001 y otro para el secuancial de ese codigo

     

     

    recuerdsa que si es string lo que quieres unir, se podria usar 

    MySQL – The GROUP_CONCAT() function

     

    lo que no me quedo claro es que comentas

    lo que necesito es cargar la columna stock con la consulta SUM de los codigos de la familia

    o sea medio que se contradice, porque si es una cadena de familas porque son codigo, estos no se pueden sumar, solo valores numericos se suman, ls string se unen

    es por eso que mencione lo del GROUP_CONCAT

    SELECT T1.Cod, T1.Descripcion, GROUP_CONCAT(T2.CodFamilia)

    FROM Tabla1 T1 INNER JOIN Tabla2 T2  ON T1.Cod = T2.Cod

    GROUP BY T1.Cod, T1.Descripcion

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    jueves, 18 de agosto de 2011 4:22
  • Esta es la imagen de mi Form el cual a traves de la consulta de la primera tabla lleno la columna CODIGO , COSTO POR PAR,a traves de una consulta select , la columna unidades de stock debo llenarla con otra tabla 
    CODIGO | STOCK BODEGA PRINCIPAL | STOCK SUCURSAL 1 | STOCK SUCURSAL 2 
    D01-BL   |               45                      |         20                 |             15
    D01-AZ   |               30                     |          10                 |              8
    Yo con un SELECT SUM  a esta tabla a traves de la funcion LIKE traigo la suma de todos los stock de una familia de modelos, debo hacerlo con LIKE ya que los codigos comienza con los numeros que identifican la familia del producto y continua -BL , -AZ , -RO que son los colores en los que se encuentran disponibles, es por eso que debo traer esta suma e ir llenando la columna UNIDADES EN STOCK , tal vez haciendo la consulta LIKE tomando el valor desde la columna CODIGO , al  recorrer el DATAGRIDVIEW  e insertarlo en la columna UNIDADES EN STOCK . Debido a que el codigo va junto con su color , en el mismo campo no puedo llamarlo haciendo la consulta comparando los codigos .
    SALUDOS Y GRACIAS.
    jueves, 18 de agosto de 2011 12:04
  • hola

    el problema que tienes es que has modelado de forma incorrecta la tabla

    asi como est ano cumple con los enunciados de las tres formas normales de diseño de base de datos

    Normalización de bases de datos

     

    el campo Codigo que tienes en la que muestras de Stock esta incorrecto, no deberias tenr nunca una columna compuesta, debes separar en dos esta informacion

    dos colimans una de Codigo con el D01, D02, etc y la otra con los colroes BL, AZ, etc pero deben ser dos columnas

    sino como creas las relaciones de integridad entre las tablas ? no puede, no puedes garantizar que alguien ingrese un D1100-AZ porque si lo hago tu db como esta lo permite porque no tienes relacion de integridad, lo cual es muy importante

    ademas si haces esto de separar las columnas podrias aplciar el INNER JOIN de forma directas entre las tablas y usar el SUM como comente en la priemr respuesta que proporcione

    resumen, creo que deberias estudiar algo ams de formas normales para el diseño de base de datos, porque como esta planteado no es un buen modelo

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    jueves, 18 de agosto de 2011 12:28
  • Gracias por tu respuesta, pero la verdad es que yo no diseñe las tablas, estaban cuando llegue a la empresa, usan un sistema de gestión creado en Delphi desde hace ya varios años con conexión a Acces ... hace poco migramos las tablas a Mysql. Pero he tenido que ir arreglandomelas para crear pequeñas aplicaciones que lleven ciertos controles, sobre todos de stock(entrada,salida). Ahora el volver a diseñar las tablas dejaría inoperable el sistema de gestión y la verdad yo estoy recién empezando en esto y no estoy en condiciones de hacer un sistema completo ... estoy tratando de aprender a como hacer reportes ... que es algo esencial en los sistemas ya que me lo están pidiendo para las pequeñas aplicaciones que he creado ... pero no he podido ... ademas vb.2010 express no tiene como hacer reportes ... creo que de ha poco ire avanzando pero hay cosas que no estan en mis manos. Lo que podria intentar es a la tabla de stock es agregarle otra columna ... esperando que no afecte el sistema y que se llame ... no se ... FAMILIA .... y agregarle el encabezado de cada codigo que hace referencia a la familia y de ahi llamar los stock.

     

    Gracias Leandro por tu voluntad ... y leere la informacion que me dejaste.

    Saludos.

    jueves, 18 de agosto de 2011 13:43