左外连接2个具有匹配列c#的dataTable

时间:2015-10-24 04:47:28

标签: c# visual-studio datatable left-join

帮助我Stack Overflow你是我唯一的希望....原谅我是一个全新的人,但经过几个小时的研究后,我仍然不知道如何让这次加入发生。我拼命想要实现的是输出所有dataTable1都是完整的,并且从dataTable2添加QTY字段。遗憾的是并非所有数据都具有QTY,因此当我在同一数据集上创建不同的表时数据关系对我来说不起作用。那么我认为左外连接是要走的路?任何想法任何人?非常感谢你所有的时间!!!! :)

    private void btnReadAccess_Click(object sender, EventArgs e)
    {
        DataSet dsResults = new DataSet("dsResults");
        dsResults.Tables.Add("Store");
        dsResults.Tables.Add("Warehouse");

        OleDbConnection conAccess = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\\recent_copy.mdb;Persist Security Info=False;");
        string[] strArrays = this.datePickerFrom.Text.Split(new char[] { '/' });
        string[] strArrays1 = this.datePickerTo.Text.Split(new char[] { '/' });
        string[] text = new string[] { "SELECT Barcode as [Barcode_Store],[description],cat1 ,cat2,discount as [Discount],cost_inc as [Price $],DocketLine.quantity as Sold, (rrp * DocketLine.quantity - discount ) as [Rev $], DocketLine.sales_tax as Goods_Tax FROM Docket,DocketLine,Stock WHERE Docket.docket_date >= #", strArrays[1], "/", strArrays[0], "/", strArrays[2], " ", this.timePickerFrom.Text, "# AND Docket.docket_date <= #", strArrays1[1], "/", strArrays1[0], "/", strArrays1[2], " ", this.timePickerTo.Text, "#  and DocketLine.docket_id = Docket.docket_id  and  DocketLine.stock_id= Stock.stock_id" };
        string str = string.Concat(text);
        OleDbDataAdapter daAccess = new OleDbDataAdapter(new OleDbCommand(str, conAccess));
        DataTable dataTable1 = new DataTable();
        daAccess.Fill(dataTable1);


        OleDbConnection conWarehouse = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\PICKING.PROGRAM\\recent_copy_warehouse.mdb;Persist Security Info=False;");
        string[] qtyselector = { "SELECT Barcode as [Barcode_Warehouse], quantity as [QTY] FROM Stock" };
        string str2 = string.Concat(qtyselector);
        OleDbDataAdapter daWarehouse = new OleDbDataAdapter(new OleDbCommand(str2, conWarehouse));
        DataTable dataTable2 = new DataTable();
        daWarehouse.Fill(dataTable2);

        DataTable dataTableResults = new DataTable();

        dgvResults.DataSource = dataTableResults;
    } 

再次感谢:)

0 个答案:

没有答案