如何在数据表中的动态添加列中添加新行

时间:2017-06-10 21:53:56

标签: mysql vb.net datatable

我在datatable添加了一些列,如下所示。

OpenConnection()
Dim mmd As New MySqlCommand
Dim mq As String = "SELECT DISTINCT(FeeName) AS FName,UnderSubGroupId FROM master_fee WHERE UnderGroupId=1 ORDER BY UnderSubGroupId ASC"
mmd.Connection = conn
mmd.CommandText = mq
Dim dt As New DataTable

Dim mdr As MySqlDataReader = mmd.ExecuteReader
While mdr.Read
    dt.Columns.Add(Replace(mdr("FName"), " ", "_"))
End While
mdr.Close()
CloseConnection()

现在准备查询以获取动态添加列的数据。

Dim dtfrm As String = Convert.ToDateTime(DtpFrom.Value).ToString("yyyy-MM-dd")
Dim dtto As String = Convert.ToDateTime(DtpTo.Value).ToString("yyyy-MM-dd")

OpenConnection()
Dim cmd As New MySqlCommand
Dim qry As String = "SELECT " & _
              "DATE_FORMAT(fees_receiving_ledger.DateTaken, '%d/%m/%Y') AS TakenDate," & _
              "fees_receiving_ledger.RcptNo AS Rcpt,"

Dim i As Integer = 1
Dim clm As String
Dim clmAmt As String
For Each column As DataColumn In dt.Columns
  clm = column.ToString
  clmAmt = clm & "_Amount"
  Dim clmCount As Integer = dt.Columns.Count

  If i = clmCount Then
      qry += "Max(Case When fees_receiving_ledger.FeeName = '" & Replace(clm, "_", " ") & "' Then fees_receiving_ledger.FeeAmount Else 0 End) As '" & clmAmt & "'"
  Else
      qry += "Max(Case When fees_receiving_ledger.FeeName = '" & Replace(clm, "_", " ") & "' Then fees_receiving_ledger.FeeAmount Else 0 End) As '" & clmAmt & "',"
      i += 1
  End If
Next
qry += " FROM " & _
       "fees_receiving_ledger " & _
       "WHERE fees_receiving_ledger.DateTaken between '" & dtfrm & "' AND '" & dtto & "' " & _
       "GROUP BY " & _
       "fees_receiving_ledger.RcptNo " & _
       "ORDER BY " & _
       "fees_receiving_ledger.RcptNo"

dt.Columns.Add("TakenDate")
dt.Columns.Add("Rcpt")

debug模式下,在执行上述query时,输出非常完美。

所以,我已经从MySQL表添加了一些(动态)列到datatable

现在如何获取将值添加到数据表(dt)的值?

我的表格结构如下......

CREATE TABLE `fees_receiving_ledger` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `RcptNo` varchar(20) DEFAULT NULL,
  `FeeName` varchar(200) DEFAULT NULL,
  `FeeAmount` double(10,2) DEFAULT NULL,
  `DateTaken` date DEFAULT NULL,
  PRIMARY KEY (`receive_id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=latin1$$

注意:

我用" _"替换空白区域(下划线)因为我正在创建一个ADO.NET xml文件来生成水晶报告。

0 个答案:

没有答案