Foros del Web » Programación para mayores de 30 ;) » .NET »

Linkear un registro de una tabla para generar otra!!!

Estas en el tema de Linkear un registro de una tabla para generar otra!!! en el foro de .NET en Foros del Web. Hola a todos!!!... Tengo un pequeño problema con una aplicación, en ella me conecto a una base de datos en sql y realizo la siguiente ...
  #1 (permalink)  
Antiguo 04/11/2011, 12:35
Avatar de stuart_david3  
Fecha de Ingreso: agosto-2011
Mensajes: 215
Antigüedad: 13 años, 2 meses
Puntos: 1
Mensaje Linkear un registro de una tabla para generar otra!!!

Hola a todos!!!...

Tengo un pequeño problema con una aplicación, en ella me conecto a una base de datos en sql y realizo la siguiente consulta medio rara, pero de ella solo me interesa el campo "b_traba1.rpe":

Código SQL:
Ver original
  1. SELECT MAX(b_contra.fe_repro), MAX(c_zonas.nombre), MAX(c_puesto.puesto), MAX(c_a_resp.dscarea), b_traba1.rpe, MAX(b_traba1.nombre), b_traba1.fe_antre, b_traba1.fe_ingre, b_traba3.fe_natra, CONVERT (INT,(DATEDIFF (dd, b_traba3.fe_natra, GETDATE()) - DATEDIFF (yy, b_traba3.fe_natra, GETDATE()) / 4.25) / 365) AS Edad, MAX(b_traba1.sexotrab), MAX(c_ubica.ubicapza), MAX(b_traba1.cl_nides), MAX(b_traba1.if_nire2), fe, CASE WHEN fe<GETDATE() THEN GETDATE() ELSE NULL END AS fepos, CONVERT (INT,(DATEDIFF (dd, GETDATE(), fe) - DATEDIFF (yy, GETDATE(), fe) / 4.25) / 365) AS anyjub FROM (SELECT fe_antre, CASE WHEN b_traba1.sexotrab='M' THEN DATEADD(yy, 30, b_traba1.fe_antre) ELSE DATEADD(yy, 25, b_traba1.fe_antre) END AS fe FROM b_traba1) AS t1, b_traba1, b_traba3, c_zonas, c_a_resp, c_ubica, c_puesto, b_contra WHERE (DATEDIFF(yy, b_traba1.fe_antre, GETDATE()) > 25) AND (DATEDIFF(yy, b_traba3.fe_natra, GETDATE()) > 55) AND b_traba1.cl_sitla IS NULL AND c_zonas.descr=b_traba1.cl_zona AND c_a_resp.area=b_traba1.area AND b_traba1.rpe=b_traba3.rpe AND b_traba1.rpe=b_contra.rpe AND c_puesto.cl_puest=b_contra.cl_puest AND b_traba1.fe_antre=t1.fe_antre AND b_traba1.cl_ubica=c_ubica.cl_ubica GROUP BY b_traba1.rpe, b_traba1.fe_antre, b_traba1.fe_ingre, b_traba3.fe_natra, fe

De ella quiero sacar las afectaciones (faltas) de un trabajador en específico. En mi página genero los resultados de mi consulta en un DataGrid, y me gustaría sacar los resultados de las afectaciones en base a un registro que se me genera en mi Datagrid, es decir, que si la primera fila de mi tabla tiene como dato un rpe (numero de control del trabajador) en especifico, al darle clic a este me genere en otra página una tabla con las afectaciones de solo este trabajador...

Lo que hice fue hacer una HyperLinkColumn en mi DataGrid para que me enlace a mi nueva tabla, pero no se como realizar el enlace a un trabajador en específico:

rpe='trabajador_seleccionado', no se como hacerle entender al programa que dependiendo del rpe que este en la fila del link que seleccione es la tabla que me generará, que sería en una consulta como esta:

Código SQL:
Ver original
  1. SELECT fe_inic, cl_incid FROM b_asiste WHERE cl_incid='026' AND rpe='trabajador_seleccionado' GROUP BY rpe, cl_incid, fe_inic

Aquí les dejo el código que tengo, primero el que me genera la tabla principal del DataGrid:

Código ASP:
Ver original
  1. <%@ Page Language="VB" ContentType="text/html" Debug="true" ResponseEncoding="iso-8859-1" %>
  2. <%@ Import Namespace="System.Data" %>
  3. <%@ Import Namespace="System.Data.SqlClient" %>
  4.  
  5. <html>
  6.  
  7. <script language="VB" runat="server">
  8.  
  9.     Sub Page_Load(Sender As Object, E As EventArgs)
  10.  
  11.         Dim MyConnection As SqlConnection = New SqlConnection("server=myhost;database=mydb;User ID=myuser;Password=mypass;Trusted_Connection=no")
  12.         Dim MyCommand As SqlCommand = New SqlCommand("SELECT MAX(b_contra.fe_repro), MAX(c_zonas.nombre), MAX(c_puesto.puesto), MAX(c_a_resp.dscarea), b_traba1.rpe, MAX(b_traba1.nombre), b_traba1.fe_antre, b_traba1.fe_ingre, b_traba3.fe_natra, CONVERT (INT,(DATEDIFF (dd, b_traba3.fe_natra, GETDATE()) - DATEDIFF (yy, b_traba3.fe_natra, GETDATE()) / 4.25) / 365) AS Edad, MAX(b_traba1.sexotrab), MAX(c_ubica.ubicapza), MAX(b_traba1.cl_nides), MAX(b_traba1.if_nire2), fe, CASE WHEN fe<GETDATE() THEN GETDATE() ELSE null END AS fepos, CONVERT (INT,(DATEDIFF (dd, GETDATE(), fe) - DATEDIFF (yy, GETDATE(), fe) / 4.25) / 365) AS anyjub FROM (SELECT fe_antre, CASE WHEN b_traba1.sexotrab='M' THEN DATEADD(yy, 30, b_traba1.fe_antre) ELSE DATEADD(yy, 25, b_traba1.fe_antre) END AS fe FROM b_traba1) AS t1, b_traba1, b_traba3, c_zonas, c_a_resp, c_ubica, c_puesto, b_contra WHERE (DATEDIFF(yy, b_traba1.fe_antre, GETDATE()) > 25) AND (DATEDIFF(yy, b_traba3.fe_natra, GETDATE()) > 55) AND b_traba1.cl_sitla IS NULL AND c_zonas.descr=b_traba1.cl_zona AND c_a_resp.area=b_traba1.area AND b_traba1.rpe=b_traba3.rpe AND b_traba1.rpe=b_contra.rpe AND c_puesto.cl_puest=b_contra.cl_puest AND b_traba1.fe_antre=t1.fe_antre AND b_traba1.cl_ubica=c_ubica.cl_ubica GROUP BY b_traba1.rpe, b_traba1.fe_antre, b_traba1.fe_ingre, b_traba3.fe_natra, fe", MyConnection)
  13.         MyConnection.Open()
  14.  
  15.         Dim dr As SqlDataReader = MyCommand.ExecuteReader()
  16.  
  17.         MyDataGrid.DataSource = dr
  18.         MyDataGrid.DataBind()
  19.         MyConnection.Close()
  20.     End Sub
  21.  
  22. </script>
  23.  
  24. <body>
  25.  
  26.   <h3><font face="Verdana">Selección de Trabajadores CFE mayores a 25 años de servicio y con más de 55 años de edad</font></h3>
  27.  
  28.   <ASP:DataGrid id="MyDataGrid" runat="server"
  29.     Width="700px"
  30.     BackColor="#CCCCFF"
  31.     BorderColor="Black"
  32.     CellPadding="3"
  33.     Font-Name="Verdana"
  34.     Font-Size="8pt"
  35.     HeaderStyle-BackColor="#aaaadd"
  36.     EnableViewState="False" Font-Names="Verdana"
  37.  
  38.   >
  39.  
  40.       <Columns>
  41.           <asp:HyperLinkColumn HeaderText="Incapacidades"
  42.               NavigateUrl="Incapacidades.aspx" Text="Ver"></asp:HyperLinkColumn>
  43.       </Columns>
  44. <HeaderStyle BackColor="#AAAADD"></HeaderStyle>
  45.     </asp:DataGrid>
  46.  
  47. </body>
  48. </html>

Y esta la que escucharía el link, pero que no se como hacer que escuche:

Código ASP:
Ver original
  1. <%@ Page Language="VB" ContentType="text/html" Debug="true" ResponseEncoding="iso-8859-1" %>
  2. <%@ Import Namespace="System.Data" %>
  3. <%@ Import Namespace="System.Data.SqlClient" %>
  4.  
  5. <html>
  6.  
  7. <script language="VB" runat="server">
  8.  
  9.     Sub Page_Load(Sender As Object, E As EventArgs)
  10.  
  11.         Dim MyConnection As SqlConnection = New SqlConnection("server=myhost;database=mydb;User ID=myuser;Password=mypass;Trusted_Connection=no")
  12.         Dim MyCommand As SqlCommand = New SqlCommand("SELECT fe_inic, cl_incid FROM b_asiste WHERE cl_incid='026' AND rpe='76880' GROUP BY rpe, cl_incid, fe_inic", MyConnection)
  13.         MyConnection.Open()
  14.  
  15.         Dim dr As SqlDataReader = MyCommand.ExecuteReader()
  16.  
  17.         MyDataGrid.DataSource = dr
  18.         MyDataGrid.DataBind()
  19.  
  20.         MyConnection.Close()
  21.     End Sub
  22.  
  23. </script>
  24.  
  25. <body>
  26.  
  27.   <h3><font face="Verdana">Selección de Trabajadores CFE mayores a 25 años de servicio y con más de 55 años de edad</font></h3>
  28.  
  29.   <ASP:DataGrid id="MyDataGrid" runat="server"
  30.     Width="700"
  31.     BackColor="#ccccff"
  32.     BorderColor="black"
  33.     ShowFooter="false"
  34.     CellPadding="3"
  35.     CellSpacing="0"
  36.     Font-Name="Verdana"
  37.     Font-Size="8pt"
  38.     HeaderStyle-BackColor="#aaaadd"
  39.     EnableViewState="false"
  40.   />
  41.  
  42. </body>
  43. </html>

Tal vez exista otra manera, pero en realidad no se me ocurre ninguna, sobre todo cuando se esta presionado. Gracias de antemano...

Etiquetas: datagrid, link, sql, tabla, aspx
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:48.