none
Relacionar Tablas RRS feed

  • Pregunta

  • Bueno un Cliente desea un sistema VB tiene tablas en access pero quisiera saber como relacionar si la cabecera tiene codigo 1802002 y el detalle tiene código 1802002-01, 01 es el numero de items es como el id com relaciono ese campo con la otra tabla?

    Gracias

    Saludos

    Tabla 1           

    Cabecera   

    CodigoMuestra     PtoMuestreo                                                  Localizacion    Ubicacion           ......

    1802002            Bulk Drum - Agua Trat. Sistema Enfriamiento   Bateria1         Savia Peru S.A.  ...

    Tabla 2

     Detalle             

    CodigoMuestra          Analisis1            Ma1                Pr1                                  ....

    1802002-01                PH                   OT           Sin Preservantes              ....

    1802002-02                STS                 AF           Sin Preservantes               ....

    1802002-03                STS                AF            Sin Preservantes               ...

    1802002-04                STS                AF            Sin Preservantes               ...

    1802002-05                STS                AF            Sin Preservantes              ....

    los puntos ... es que existen mas campos es asi la tabla como ejemplo.

    Es un ejemplo para que me puedan entender

    Saludos

    jueves, 1 de marzo de 2018 14:42

Respuestas

  • Si bien el valor de la columna 'CodigoMuestra' determina un identificador de fila, lo adecuado hubiese sido definir una clave primaria compuesta por la clave de referencia y el número de línea (si así lo ves conveniente), no es correcto la concatenación porque no es claro el valor de referencia, de hecho, no existe la definición de relación entre ambas tablas. Te sugiero, de ser posible, evites la concatenación y separes ambos valores en dos columnas definiendo las restricciones de PRIMARY KEY y FOREIGN KEY, luego, si deseas tener el valor concatenado puedes agregar una columna calculada.

    Con los datos que presentas, debes extraer el valor de "referencia" mediante funciones de cadena, por ejemplo:

    FROM Cabecera c INNER JOIN Detalle d 
        ON c.Codigo = CONVERT(int, SUBSTRING(d.Codigo, 1, CHARINDEX('-', d.Codigo) - 1))

    • Marcado como respuesta Javier Roque domingo, 25 de marzo de 2018 4:41
    jueves, 1 de marzo de 2018 15:13

Todas las respuestas

  • Si bien el valor de la columna 'CodigoMuestra' determina un identificador de fila, lo adecuado hubiese sido definir una clave primaria compuesta por la clave de referencia y el número de línea (si así lo ves conveniente), no es correcto la concatenación porque no es claro el valor de referencia, de hecho, no existe la definición de relación entre ambas tablas. Te sugiero, de ser posible, evites la concatenación y separes ambos valores en dos columnas definiendo las restricciones de PRIMARY KEY y FOREIGN KEY, luego, si deseas tener el valor concatenado puedes agregar una columna calculada.

    Con los datos que presentas, debes extraer el valor de "referencia" mediante funciones de cadena, por ejemplo:

    FROM Cabecera c INNER JOIN Detalle d 
        ON c.Codigo = CONVERT(int, SUBSTRING(d.Codigo, 1, CHARINDEX('-', d.Codigo) - 1))

    • Marcado como respuesta Javier Roque domingo, 25 de marzo de 2018 4:41
    jueves, 1 de marzo de 2018 15:13
  • Voy a ver como hago eso porque esa es una base de datos acces que me han dado para que les haga un formulario pero esas tablas no tienen Id y entre otras cosas y bueno ya esta asi como se ve.

    El usuario llena un formato de papel y ese formato a sido digitalizado hacia access no hay codigo de concatenacion pero a vista de base de datos se ve asi. Entonces para poder intentar relacionar el cliente con su informacion lo he llamado cabecera al cliente y detalle al muestreo.

    Por ello intento hacer eso. 

    Me mencionas hacer 2 columnas Serie un Numero y Serie algo asi donde el serie es CodigoMuestra de Cabecera.

    Entonces en ambas tablar hago 2 columnas ? o como te refieres eso del PK y FK

    Serie PK y Numero FK? o creo que ya me perdi. Disculpa


    jueves, 1 de marzo de 2018 16:48
  • Bueno he puesto 2 columnas y en el form 2 textbox uno del codigo que se genera y otro del id que debe incrementar la idea es mostrarlo o deberia hacerlo de forma interna a medida que voy agregando los registros? y solo sea visible en un datagrid.?
    viernes, 2 de marzo de 2018 13:56