Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/10/2010, 04:21
german_martin
 
Fecha de Ingreso: septiembre-2006
Ubicación: Buenos Aires
Mensajes: 132
Antigüedad: 17 años, 7 meses
Puntos: 0
Exclamación Hacer una especie de Inner Join de dos datatables

Amigos,
Tengo dos tablas, la tabla Categories y la tabla Productos. Necesito hacer una especie de inner join teniendo como referencia la columna CategoryID .

Como soy medio bruto con ASPX pero bueno con Photoshop, dejo una imagen que ilustra exactamente mi problema:


Este es el website que lo hice con la base northwind.mdb para que sea mas facil
Descargar ejemplo


y este es mi codigo

Código:
<%@ Page Language="VB" AutoEventWireup="false" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>

<script language="VB" runat="server">

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        Dim MyConn1 As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("App_Data/Northwind.mdb"))
        Dim da As OleDbDataAdapter = New OleDbDataAdapter("SELECT * FROM Categories", MyConn1)
        Dim ds As DataSet = New DataSet()
        Dim dtExcel As New DataTable

        MyConn1.Open()
        da.Fill(ds)
        da.Fill(dtExcel)

        grvExcelData.DataSource = ds.Tables(0)
        grvExcelData.DataBind()

        MyConn1.Close()

        Dim MyConn2 As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("App_Data/Northwind.mdb"))
        Dim da2 As OleDbDataAdapter = New OleDbDataAdapter("SELECT * FROM Products", MyConn2)
        Dim ds2 As DataSet = New DataSet()
        Dim dtDB As New DataTable

        MyConn2.Open()
        da2.Fill(ds2)
        da2.Fill(dtDB)

        grvDB.DataSource = ds2.Tables(0)
        grvDB.DataBind()

        Dim dtNew As DataTable = New DataTable
        dtNew.Columns.Add("CategoryID")
        dtNew.Columns.Add("CategoryName")
        dtNew.Columns.Add("QuantityPerUnit")
        Dim i As Integer = 0
       Do While (i < dtExcel.Rows.Count)
            If dtExcel.Rows(i)("CategoryID") IsNot Nothing Then
                Dim drNew = dtNew.NewRow()
                drNew("CategoryID") = dtExcel.Rows(i)("CategoryID").ToString 
                drNew("CategoryName") = dtExcel.Rows(i)("CategoryName").ToString 
                drNew("QuantityPerUnit") = dtDB.Select(("CategoryID=" & dtExcel.Rows(i)("CategoryID")))(0)("QuantityPerUnit").ToString
                dtNew.Rows.Add(drNew)
            End If
            i = (i + 1)
        Loop
        grvGridData.DataSource = dtNew.DefaultView
        grvGridData.DataBind()

    End Sub


</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <asp:Label ID="lblDisplay" Runat="Server" Text="Hello!" />
        <asp:GridView ID="grvExcelData" runat="server" AutoGenerateColumns="true" Visible="true">
        </asp:GridView>
        <asp:GridView ID="grvGridData" runat="server" AutoGenerateColumns="true" Visible="true" >
        </asp:GridView>        
        <asp:GridView ID="grvDB" runat="server" AutoGenerateColumns="true" Visible="true">
        </asp:GridView>

    </div>
    </form>
</body>
</html>


muchas gracias a quien me pueda ayudar!