2014-10-01 72 views
0

即时通讯正在做一个C#的Windows窗体应用程序。我希望你首先了解一些事情。我正在使用本地访问数据库。我一直试图从AccessDB中将月份转换为MonthName。那么我已经尝试使用DATENAME函数,但它无法正常工作。所以我想如果我可以编辑dataTable之前它被放入到显示的datGridView。请帮助我。请看看编码。如何在数据表显示到dataGridView之前编辑dataTable中的数据?

private void button3_Click(object sender, EventArgs e) // display amount havent cleared the month yet 
    { 
     sum.Visible = true; 
     // 1 
     // Open connection\ 
     string companyName = comboBox1.Text; 
     string connectionString = null; 
     OleDbConnection conn = null; 
     connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=DPE2.mdb;"; 
     conn = new OleDbConnection(connectionString); 
     { 
      conn.Open(); 
      // 
      // Create new DataAdapter 
      using (OleDbDataAdapter a = new OleDbDataAdapter(
       "SELECT MONTH(Date) AS [Month], SUM(Amount) AS [Amount] FROM Statements Where Customer_name ='" + companyName + "' group By MONTH(Date)", conn)) 
      { 
       // 3 
       // Use DataAdapter to fill DataTable 
       DataTable t = new DataTable(); 
       a.Fill(t); 
       // 4 
       // Render data onto the screen 
       dataGridView3.DataSource = t; 
      } 

      int z = 0; 
      while (z < dataGridView3.Rows.Count) 
      { 
       string data = dataGridView3.Rows[z].Cells[0].ToString(); 

       switch (data) 
       { 
        case "1": 
         dataGridView3.Rows[z].Cells[0].Equals("Jan"); 
         break; 
        case "2": 
         dataGridView3.Rows[z].Cells[0].Value = "Feb"; 
         break; 
        case "3": 
         dataGridView3.Rows[z].Cells[0].Value = "Mar"; 
         break; 
        case "4": 
         dataGridView3.Rows[z].Cells[0].Value = "April"; 
         break; 
        case "5": 
         dataGridView3.Rows[z].Cells[0].Value = "May"; 
         break; 
        case "6": 
         dataGridView3.Rows[z].Cells[0].Value = "June"; 
         break; 
        case "7": 
         dataGridView3.Rows[z].Cells[0].Value = "July"; 
         break; 
        case "8": 
         dataGridView3.Rows[z].Cells[0].Value = "August"; 
         break; 
        case "9": 
         dataGridView3.Rows[z].Cells[0].Value = "September"; 
         break; 
        case "10": 
         dataGridView3.Rows[z].Cells[0].Value = "October"; 
         break; 
        case "11": 
         dataGridView3.Rows[z].Cells[0].Value = "Novemeber"; 
         break; 
        case "12": 
         dataGridView3.Rows[z].Cells[0].Value = "December"; 
         break; 
       } 
       z++; 
      } 

     } 
    } 

回答

0

你可以尝试改变你选择这样的查询。

SELECT [month],SUM(Amount)AS [Amount] FROM Statements Where Customer_name ='“+ companyName +”'GROUP BY MONTH(Date)“

这会给你直接在一个月3个字母所以需要实现额外的逻辑来处理DataGridView的单元格文本为3个字母设置一个月。

,或者如果你不想改变你查询然后实现逻辑那将在dataTable中添加一个额外的列,如MonthText for 3 Letter Month。然后将这个新表与DataGridView绑定。

+0

它显示了未定义的函数'con vert'表达式中。是否因为Access数据库拥有自己的一组SQL语句和表达式。感谢回复。 – user3139492 2014-10-01 03:34:20

+0

我想给我留下第二个选项,即添加一个额外的列 – user3139492 2014-10-01 03:35:04

相关问题