【问题标题】:C# 2 datasets in one asp.net chartC# 2 个数据集在一个 asp.net 图表中
【发布时间】:2014-05-31 05:16:02
【问题描述】:

我有两张表,我想在一张图表上显示它们,StockIssued 和 StockOrdered。我有 SELECT 语句,显示两个表每年每月的成本,如下所示

SELECT YEAR(IssueDate) AS 'Year', MONTH(IssueDate) AS 'Month', SUM(TotalCost) AS 'TotalCostIssue'
FROM IssueStock
GROUP BY YEAR(IssueDate), MONTH(IssueDate)
order by 'Year', 'Month'  

SELECT YEAR(order_date) AS 'Year', MONTH(order_date) AS 'Month', SUM(cost) AS 'TotalCostOrder'
FROM Orders
GROUP BY YEAR(order_date), MONTH(order_date)
order by 'Year', 'Month'

已发行股票
年月总成本
2010 ---1--- 1500
2010 ---2--- 1400
..........

已订购库存
年月总成本
2010 ---1--- 1600
2010 ---2--- 1700
……

如何在同一张图表上同时显示每个月的这些费用?

C#代码

string connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
        SqlConnection conn = new SqlConnection(connectionString);

        string SelectQuery1 = "SELECT YEAR(IssueDate) AS 'Year', MONTH(IssueDate) AS 'Month', SUM(TotalCost) AS 'TotalCost' " +
            "FROM IssueStock WHERE YEAR(IssueDate) = " + year + " GROUP BY YEAR(IssueDate), MONTH(IssueDate) order by 'Year', 'Month'";

        SqlCommand myCommand = new SqlCommand(SelectQuery1, conn);

        myCommand.Connection.Open();

        SqlDataAdapter myDataAdapter = new SqlDataAdapter();
        myDataAdapter.SelectCommand = myCommand;

        DataSet myDataSet = new DataSet();

        myDataAdapter.Fill(myDataSet, "Query");

        Chart1.DataSource = myDataSet;
        Chart1.Series["Series1"].XValueMember = "Month";
        Chart1.Series["Series1"].YValueMembers = "TotalCostIssue";

        Chart1.DataBind();

        myCommand.Connection.Close();

【问题讨论】:

  • 您能展示一下如何用一个数据集填充图表的代码吗?
  • 添加 C# 代码,从 SELECT 语句填充数据。

标签: asp.net sql charts dataset


【解决方案1】:

因为您的两个表具有相同的结构。您还可以在 SQL 命令上使用 UNION ALL 子句。这不是最好的解决方案,但你会得到结果。

string SelectQuery1 = "SELECT YEAR(IssueDate) AS 'Year', MONTH(IssueDate) AS 'Month', SUM(TotalCost) AS 'TotalCost' " +
        "FROM IssueStock  WHERE YEAR(IssueDate) = " + year ;
SelectQuery1 += " UNION ALL SELECT YEAR(IssueDate) AS 'Year', MONTH(IssueDate) AS 'Month', SUM(TotalCost) AS 'TotalCost' " +
        "FROM Orders WHERE YEAR(IssueDate) = " + year + " GROUP BY YEAR(IssueDate), MONTH(IssueDate) order by 'Year', 'Month'";

【讨论】:

  • 我已经尝试过了,但它给出了一个名为 TotalCost 的单一 cloumn,无法区分它是哪个 TotalCost。
  • 通过在存储过程中创建临时表对其进行排序
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-29
  • 1970-01-01
  • 2021-07-30
  • 1970-01-01
  • 2016-02-20
相关资源
最近更新 更多