Unir dos tablas
Publicado por Pinky (110 intervenciones) el 03/11/2010 02:01:20
Hola amigos del foro mi consulta es la siguiente soy un poco nuevo en esta parte de unir dos tablas, gracias a vuetra ayuda me resulta al llamar las dos tablas y me muestra los datos en una sola grilla, pero el problema es que las columnas vacias me repite los datos por ej. por lo general siempre existe mas mano de obra que repuestos, este es el código que utilizo para llamar a los datos, que utiolizo actualmente:
Sub llenar_grilla(Optional ByVal opcion As String = "")
Dim valor As String
If opcion = "" Then
If CMBPATENTE.Text = "---" Then
valor = TXTPATENTE.Text
Else
If TXTITEM.Text <> "" Then
valor = TXTITEM.Text
Else
valor = CMBPATENTE.SelectedValue
End If
End If
Else
valor = opcion
End If
Try
da = New Data.SqlClient.SqlDataAdapter("Select * From Presupuesto1 where Patente_Vehiculo = '" + valor.ToString + "' ", conn)
da = New Data.SqlClient.SqlDataAdapter("Select P2.Cant_Repuestos,P2.Sub_Codigo,P2.Repuestos,P2.Valor_Repuestos,P1.N_Filas,P1.Mano_Mobra,P1.Valor_Mobra From Presupuesto1 P1 INNER JOIN Presupuesto2 P2 ON P1.Patente_Vehiculo = P2.Patente_Vehiculo WHERE P1.Patente_Vehiculo = '" + valor.ToString + "'", conn)
da.MissingSchemaAction = MissingSchemaAction.AddWithKey
Dim builder As Data.SqlClient.SqlCommandBuilder = New SqlClient.SqlCommandBuilder(da)
Dim ds As New DataSet
da.Fill(ds, "Grilla")
Dim vista As DataView = New DataView(ds.Tables("Grilla"), " ", "N_Filas asc", DataViewRowState.CurrentRows)
Grilla.DataSource = vista
Grilla.DataBind()
Session.Add("tabla", ds)
Session.Add("cmd", builder)
contador_items.Text = ds.Tables("Grilla").Rows.Count
TXTITEM.Text = contador_items.Text
Catch ex As Data.SqlClient.SqlException
MsgBox("Error:" & vbCrLf & ex.Message, MsgBoxStyle.Critical, "Sistema")
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
ojala que me puedan decir en donde esta el error o donde podria mejorar este, para que no me repita los datos, en el P2.Cant_Repuestos,P2.Sub_Codigo..., hago mención que el P1 corresponde a la mano de obra y la P2 corresponde a los repuestos, y como mencione anteriormente hay mas filas en Mano de obra que repuestos.
Actualmente tengop dos filas de datos en mano de obra y un solo repuesto "Óptico izquierdo" y este último repuesto se repite, lo que no debe hacer, desde ya muchas gracias
Sub llenar_grilla(Optional ByVal opcion As String = "")
Dim valor As String
If opcion = "" Then
If CMBPATENTE.Text = "---" Then
valor = TXTPATENTE.Text
Else
If TXTITEM.Text <> "" Then
valor = TXTITEM.Text
Else
valor = CMBPATENTE.SelectedValue
End If
End If
Else
valor = opcion
End If
Try
da = New Data.SqlClient.SqlDataAdapter("Select * From Presupuesto1 where Patente_Vehiculo = '" + valor.ToString + "' ", conn)
da = New Data.SqlClient.SqlDataAdapter("Select P2.Cant_Repuestos,P2.Sub_Codigo,P2.Repuestos,P2.Valor_Repuestos,P1.N_Filas,P1.Mano_Mobra,P1.Valor_Mobra From Presupuesto1 P1 INNER JOIN Presupuesto2 P2 ON P1.Patente_Vehiculo = P2.Patente_Vehiculo WHERE P1.Patente_Vehiculo = '" + valor.ToString + "'", conn)
da.MissingSchemaAction = MissingSchemaAction.AddWithKey
Dim builder As Data.SqlClient.SqlCommandBuilder = New SqlClient.SqlCommandBuilder(da)
Dim ds As New DataSet
da.Fill(ds, "Grilla")
Dim vista As DataView = New DataView(ds.Tables("Grilla"), " ", "N_Filas asc", DataViewRowState.CurrentRows)
Grilla.DataSource = vista
Grilla.DataBind()
Session.Add("tabla", ds)
Session.Add("cmd", builder)
contador_items.Text = ds.Tables("Grilla").Rows.Count
TXTITEM.Text = contador_items.Text
Catch ex As Data.SqlClient.SqlException
MsgBox("Error:" & vbCrLf & ex.Message, MsgBoxStyle.Critical, "Sistema")
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
ojala que me puedan decir en donde esta el error o donde podria mejorar este, para que no me repita los datos, en el P2.Cant_Repuestos,P2.Sub_Codigo..., hago mención que el P1 corresponde a la mano de obra y la P2 corresponde a los repuestos, y como mencione anteriormente hay mas filas en Mano de obra que repuestos.
Actualmente tengop dos filas de datos en mano de obra y un solo repuesto "Óptico izquierdo" y este último repuesto se repite, lo que no debe hacer, desde ya muchas gracias
Valora esta pregunta
0