我想在单个datagridview中合并所有数据表 [英] I want to merge all data tables in single datagridview

查看:64
本文介绍了我想在单个datagridview中合并所有数据表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Hello Guys,! i have created 4 data tables in my project and now i want to merge this all data tables in a single datagridview





我尝试过:





What I have tried:

DataSet dsa = new DataSet();
            DataTable dt1 = new DataTable();
            dsa.Tables.Add(dt1);
            OleDbDataAdapter da = new OleDbDataAdapter();
            da = new OleDbDataAdapter("SELECT [Flavours] As [Flavours],count(column2) As [Small] from [Total] Where [Date] between #" + dateTimePicker1.Value.ToString("dd/MM/yyyy") + "# AND #" + dateTimePicker2.Value.ToString("dd/MM/yyyy") + "# AND [column2] IN ('Small.......')Group By [Flavours]", VCON);
            da.Fill(dt1);
            dataGridView1.DataSource = dt1;
            VCON.Close();
            DataSet dsa1 = new DataSet();
            DataTable dt2 = new DataTable();
            dsa1.Tables.Add(dt2);
            OleDbDataAdapter da1 = new OleDbDataAdapter();
            da1 = new OleDbDataAdapter("SELECT [Flavours] As [Flavours],count(column2) As [Medium] from [Total] Where [Date] between #" + dateTimePicker1.Value.ToString("dd/MM/yyyy") + "# AND #" + dateTimePicker2.Value.ToString("dd/MM/yyyy") + "# AND [column2] IN ('Medium......')Group By [Flavours]", VCON);
            da1.Fill(dt2);
            dataGridView1.DataSource = dt2;
            VCON.Close();
            DataSet dsa2 = new DataSet();
            DataTable dt3 = new DataTable();
            dsa.Tables.Add(dt3);
            OleDbDataAdapter da2 = new OleDbDataAdapter();
            da2 = new OleDbDataAdapter("SELECT [Flavours] As [Flavours],count(column2) As [Large] from [Total] Where [Date] between #" + dateTimePicker1.Value.ToString("dd/MM/yyyy") + "# AND #" + dateTimePicker2.Value.ToString("dd/MM/yyyy") + "# AND [column2] IN ('Large.......')Group By [Flavours]", VCON);
            da2.Fill(dt3);
            dataGridView1.DataSource = dt3;
            VCON.Close();
            DataSet dsa3 = new DataSet();
            DataTable dt4 = new DataTable();
            dsa.Tables.Add(dt1);
            dsa.Tables.Add(dt2);
            dsa.Tables.Add(dt3);
            dsa.Tables.Add(dt4);
            OleDbDataAdapter da3 = new OleDbDataAdapter();
            da3 = new OleDbDataAdapter("SELECT [Flavours] As [Flavours],count(column2) As [Ex Large] from [Total] Where [Date] between #" + dateTimePicker1.Value.ToString("dd/MM/yyyy") + "# AND #" + dateTimePicker2.Value.ToString("dd/MM/yyyy") + "# AND [column2] IN ('Ex  Large...')Group By [Flavours]", VCON);
            da3.Fill(dt4);
            dataGridView1.DataSource = dt4;
            VCON.Close();

推荐答案

执行此操作的最佳方法是使用组合表的单个SELECT进入一组列 - 否则DGV不知道如何处理它。

通常,表中会有一些公共数据 - 一个或两个外键 - 它允许SQL通过JOIN查询知道哪些行是相关的:

The best way to do this is to use a single SELECT which combines the tables into a single set of columns - otherwise the DGV doesn't know what to do with it.
Generally, you would have common data in the tables - a foreign key or two - which lets SQL know which rows are related via a JOIN query:
SELECT u.UserName, a.Address FROM Users u
JOIN Addresses a ON a.UserID = u.ID

返回每个用户及其地址从两个表通过用户ID外键连接到用户表。



如果你没有这样的关系,那么几乎你不能像SQL那样做而且DGV不知道哪些行要拼接显示。

Which returns each user and his address from two tables connected via teh UserID foreign key into the Users table.

If you don't have such relationships, then pretty much you can't do it as SQL and teh DGV have no idea which rows to "bolt together" to display.


这篇关于我想在单个datagridview中合并所有数据表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆