none
Mostrar en formulario maestro detalle Consulta de tres tablas en sql server RRS feed

  • Pregunta

  • Hola a todos muy buenas tardes aquí molestando nuevamente tengo mi formulario de ingreso de datos que es este

    cuando hago las consultas por separado me muestra las tres tablas de la siguiente manera

    y me gustaría regresar a la misma form en el mismo formulario o en algún otro pero que tenga la misma forma la verdad no lo he conseguido.

    se que uds. o me pueden ayudar o dar mejores ideas de como mostrar los datos, si me pregunta porque quiero hacer esto, es porque el algún momento se va a tener que editar un parte y pues hay que mostrar los datos para poderlos editar.

    este es mi código

    SELECT        CabeceraLanzEquipos.NumeroParte, CabeceraLanzEquipos.CodigoEquipo, CabeceraLanzEquipos.FechaParte, CabeceraLanzEquipos.Turno, CabeceraLanzEquipos.HorimetroHinicio, CabeceraLanzEquipos.HorimetroFin, 
                             CabeceraLanzEquipos.HorasTrabajadas, CabeceraLanzEquipos.HoraJornadaInicio, CabeceraLanzEquipos.HoraJornadaFin, DetalleLanzamientoHoras.IdDetalleLanzamientoHoras, 
                             DetalleLanzamientoHoras.IdCabeceraLanzEquipos, DetalleLanzamientoHoras.HInicio, DetalleLanzamientoHoras.HFin, DetalleLanzamientoHoras.HoraT, DetalleLanzamientoHoras.IdPlanodeCuenta, 
                             DetalleInterferencias.IdDetalleInterferencias, DetalleInterferencias.IdCabeceraLanzEquipos AS Expr1, DetalleInterferencias.HInicio AS Expr2, DetalleInterferencias.HFin AS Expr3, DetalleInterferencias.HoraT_Int, 
                             DetalleInterferencias.IdInterferencia
    FROM            CabeceraLanzEquipos INNER JOIN
                             DetalleLanzamientoHoras ON CabeceraLanzEquipos.IdCabeceraLanzEquipos = DetalleLanzamientoHoras.IdCabeceraLanzEquipos INNER JOIN
                             DetalleInterferencias ON CabeceraLanzEquipos.IdCabeceraLanzEquipos = DetalleInterferencias.IdCabeceraLanzEquipos

    completo

    también pensaba mostrarlo en dos datagrid diferentes, me me gustaría que me ayuden a resolverlo para que sea la misma vista.

    agradezco sus ideas.

    Roberto

    lunes, 25 de febrero de 2019 19:55

Respuestas

  • buen día Javi muchas gracias intentare hacer de esta manera creo que lo mas rapido por ahora es hacerlo con dos datagridview y una sola cabecera. ya mas después cambiare

    gracias

    Roberto

    martes, 26 de febrero de 2019 12:34

Todas las respuestas

  • Hola Roberto.

    Desde el punto de vista de los datos, es bastante fácil. Tu ya casi lo tienes, solo tienes que cambiar esos INNER JOIN por left join, porque una cabecera, puede o no tener detalle y según la consulta, si le dices, inner, entonces si no tiene detalle, no hay cabecera.

    Por otro lado, Tal cual lo estas planteando, es un formulario de edición, por tanto solo hay una cabecera, entonces, tendrás textbox, y para el detalle un datagrid, y para detalle interferencias, pues no se, porque no se lo que es, no se que modelo de datos tiene y no he visto la estructura de los mismos, pero me supongo que será un detalle de la cabecera.

    Por tanto otro dataGrid.

    Ahora bien, porque no puedes hacer tres consultas, o una consulta, que recoja mediante por ejemplo un dataset y tres dataTables los 3 conjuntos de datos, y tu los relacionas en capa cliente. Si es uno solo como me supongo pues ya esta, y si quieres más, pues más, y cuando cambias en el primero, filtras los registros en los detalles.

    Si tienes muchos datos, pues cuando cambia el primero, vas a buscar sus detalles, todo es depende de.....tienes que entender que todo es susceptible, de hacerlo de otro modo. Si yo te digo que te lo traigas todo a la vez, y resulta que tus tablas tienen 400 millones de registros.....ufff 

    Todo depende de multitud de factores, base de datos, tecnología que utilizas, red, latencia,...y un sinfín de parámetros.

    Espero mi dialogo te ayude. que estoy un poco pesado de mente, y a veces se me va la pinza :)

    • Propuesto como respuesta Pedro Alfaro lunes, 25 de febrero de 2019 21:19
    lunes, 25 de febrero de 2019 21:18
  • Puedes usar este ejemplo para tu solución:

    SELECT OrderID, C.CustomerID, CompanyName, OrderDate
    FROM Customers C, Orders O, Employees E
    WHERE C.CustomerID = O.CustomerID AND O.EmployeeID = E.EmployeeID

    martes, 26 de febrero de 2019 0:53
  • buen día Javi muchas gracias intentare hacer de esta manera creo que lo mas rapido por ahora es hacerlo con dos datagridview y una sola cabecera. ya mas después cambiare

    gracias

    Roberto

    martes, 26 de febrero de 2019 12:34
  • Muchas gracias Felipe por su aporte.

    Roberto

    martes, 26 de febrero de 2019 12:34