none
Como colocar datos de dos tablas en un solo grid? RRS feed

  • Pregunta

  • Q tal foristas, espero alguin sepa:

    Tengo una tabla Medico  (MedCodigo, MedNombre, MedTelefono, MedEspCod) y una tabla Especialidad (EspCodigo, EspNombre)
    Por lo que en cada médico tiene una especialidad y se debe relacionar   MedEspCod con EspCodigo.

    intento que en un datagrid me muestre:

    MedCodigo, MedNombre, EspNombre.


    es decir cada medico con el nombre de la especialidad asignada, y no mostrarme el codigo del mismo.

    Gracias de antemano 

    P.D. la consulta la hice: 1) agregué el datagrid, 2) data source  le asigne el del origen de datos, 3) me sale la columna MedEspCod osea el numero pero no el nombre al cual pertenece ese numero, LO SIENTO SOY NOVATO.
    Desarrollo en c# para smarth device 

    martes, 8 de noviembre de 2011 5:04

Todas las respuestas

  • Hola Luis, 

    hola

    Primero deberías hacer que el procedimiento almacenado o la consulta, te retorne todos los datos que necesitas en un datatable,

    algo como: 

    dtDatos;  con las columnas  MedCodigo, MedNombre, MedTelefono, MedEspCod, EspNombre. De este modo no tienes que que hacer nada mas que usar este origen de datos en el datagrid en el que lo quieres mostrar

     

    Si no es posible podrias recorrer ambas tablas y crear un datatable con lo que necesitas y este nuevo datatable lo utilizas como origen de datos:

     

    1.- tienes los datatable con los datos del medico y de la especialidad:

    dtMedico con las columnas  (MedCodigo, MedNombre, MedTelefono, MedEspCod)

    dtEspecialidad con las columnas (EspCodigo, EspNombre)

     

    estos son datos que ya tu tienes.  y luego creas un nuevo datatable que va a contener los datos que necesitas:

     

    DataTable dtDatos = new DataTable();

     

      dtDatos.Columns.Add("MedCodigo", typeof(string));

      dtDatos.Columns.Add("MedNombre", typeof(string));

      dtDatos.Columns.Add("MedTelefono", typeof(string));

      dtDatos.Columns.Add("MedEspCod", typeof(string));

      dtDatos.Columns.Add("EspNombre", typeof(string));

     

     

     

     

    luego lo recorres el dtMedicos y el dtEspecialidad y armas lo que necesitas:

     

     

      for (int i = 0; dtMedico.Rows.Count > i; i++)

            {

                string codigoEspecialidad = dtMedico.Rows.Count .Rows[i]["MedEspCod"].ToString().Trim();

                for (int j = 0; dtEspecialidad.Rows.Count > j; j++)

                {

                    if codigoEspecialidad == dtEspecialidad.Rows[j]["EspCodigo"].ToString().Trim())

                    {

                        dtDatos.Rows.Add(dtMedico.Rows[i]["MedCodigo"].ToString().Trim(),

                                         dtMedico.Rows[i]["MedNombre"].ToString().Trim(),

                                         dtMedico.Rows[i]["MedTelefono"].ToString().Trim(),

                                         dtMedico.Rows[i]["MedEspCod"].ToString().Trim(),

                                         dtEspecialidad.Rows[j]["EspNombre"].ToString().Trim());

     

                    }

                }

            }

     

     

    lugo este lo utilizas de fuente de datos para tu datagrid.

     

     

    Saludos

    martes, 8 de noviembre de 2011 18:35
  • Hola Luis Alberto,

    Pienso que lo mejor es que hagas una consulta a la base de datos utilizando un INNER JOIN para unir las dos tablas, la de medicos y la de especialidades, asi, solo accedes 1 sola vez a la base de datos, y no tienes que hacer otros procesos para obtener la informacion que necesitas.


    Saludos,

     


    Roberto Alvarado Taborda www.bogotadotnet.org Core Group BogotaDotNET Mobile Developer .NET Bogota - Colombia
    lunes, 14 de noviembre de 2011 14:14