关于datatable数据行转列的问题

xhk008 2017-02-13 10:53:09
下面这段是VB的数据行转列,没怎么接触过VB真的是不太看得懂,哪位大大帮我转成C#或者能解释一下,大概的操作流程么。
谢谢啦
    Private Sub BindData()
Dim strsql As String = ""
Dim dt As System.Data.DataTable
Try
Dim d1 As DateTime = DateTime.Parse(txtEndTime.Text)
Dim d2 As DateTime = DateTime.Parse(txtStartTime.Text)
Dim d As String = "0"
Me.lblErrMsg.Text = ""
If Integer.Parse(Math.Abs(DateDiff("d", d1, d2))) > 7 Then
Me.lblErrMsg.Text = "The Inteval between Start Time and End Time should In 7 Days"
Return
End If

strsql = "Select Distinct Bincode from DA_FCA_GOODBIN_TBL Where 1 = 1 "
If txtCust.Text <> "" Then
strsql = strsql + " And Customer like '%" + txtCust.Text.Trim.ToUpper + "%'"
End If
If txtWaferLot.Text <> "" Then
strsql = strsql + " And WAFERLOTNO = '" + txtWaferLot.Text + "'"
End If
If txtAssyLot.Text <> "" Then
strsql = strsql + " And ASSYLOTID = '" + txtAssyLot.Text + "'"
End If
If txtWaferID.Text <> "" Then
strsql = strsql + " And WAFERID = '" + txtWaferID.Text + "'"
End If
If txtStartTime.Text <> "" Then
strsql = strsql + " And SCANTIME > to_date('" + txtStartTime.Text + " 00:00:00','YYYY/MM/DD HH24:MI:SS')"
End If
If txtEndTime.Text <> "" Then
strsql = strsql + " And SCANTIME < to_date('" + txtEndTime.Text + " 23:59:59','YYYY/MM/DD HH24:MI:SS')"
End If

Dim newdt As New System.Data.DataTable
If WebDB.Create_DB(mDB, mErrMsg) Then
If mDB.Execute(strsql, dt) Then
If Not IsNothing(dt) OrElse dt.Rows.Count > 0 Then

Dim newdtCol1 As New System.Data.DataColumn("CUSTOMER", Type.GetType("System.String"))
Dim newdtCol2 As New System.Data.DataColumn("CUST_DEVICE", Type.GetType("System.String"))
Dim newdtCol3 As New System.Data.DataColumn("ASSY_LOTID", Type.GetType("System.String"))
Dim newdtCol4 As New System.Data.DataColumn("WAFER_LOTNO", Type.GetType("System.String"))
Dim newdtCol5 As New System.Data.DataColumn("WAFERID", Type.GetType("System.String"))
Dim newdtCol6 As New System.Data.DataColumn("SCANTIME", Type.GetType("System.DateTime"))
Dim newdtCol7 As New System.Data.DataColumn("EMPOLYEEID", Type.GetType("System.String"))
Dim newdtCol8 As New System.Data.DataColumn("REMARKS", Type.GetType("System.String"))

Dim newdtCol9 As New System.Data.DataColumn("TOTALSIZE_AUTO", Type.GetType("System.String"))
Dim newdtCol10 As New System.Data.DataColumn("TOTALSIZE_MANUAL", Type.GetType("System.String"))

newdt.Columns.Add(newdtCol1)
newdt.Columns.Add(newdtCol2)
newdt.Columns.Add(newdtCol3)
newdt.Columns.Add(newdtCol4)
newdt.Columns.Add(newdtCol5)
newdt.Columns.Add(newdtCol6)
newdt.Columns.Add(newdtCol7)
newdt.Columns.Add(newdtCol8)
newdt.Columns.Add(newdtCol9)
newdt.Columns.Add(newdtCol10)

Me.gvData.Columns.Clear()
GenerateGVCol("CUSTOMER", "50")
GenerateGVCol("CUST_DEVICE", "80")
GenerateGVCol("ASSY_LOTID", "50")
GenerateGVCol("WAFER_LOTNO", "50")
GenerateGVCol("WAFERID", "50")
GenerateGVCol("SCANTIME", "80")
GenerateGVCol("EMPOLYEEID", "50")
GenerateGVCol("REMARKS", "50")
GenerateGVCol("TOTALSIZE_AUTO", "20")
GenerateGVCol("TOTALSIZE_MANUAL", "20")

For i As Integer = 0 To dt.Rows.Count - 1
'Dim newdtCol As New System.Data.DataColumn("BINCODE_" + dt.Rows(i)(0).ToString, Type.GetType("System.String"))
'newdt.Columns.Add(newdtCol)
Dim newdtCol_1 As New System.Data.DataColumn("BINCODE_" + dt.Rows(i)(0).ToString + "_AUTOQTY", Type.GetType("System.String"))
newdt.Columns.Add(newdtCol_1)
Dim newdtCol_2 As New System.Data.DataColumn("BINCODE_" + dt.Rows(i)(0).ToString + "_MANQTY", Type.GetType("System.String"))
newdt.Columns.Add(newdtCol_2)

GenerateGVCol(newdtCol_1.ColumnName, "30")
GenerateGVCol(newdtCol_2.ColumnName, "30")
Next

Else
Me.lblErrMsg.Text = "Can not find Data"
Return
End If
End If

strsql = "Select * from DA_FCA_GOODBIN_TBL Where 1 = 1 "
If txtCust.Text <> "" Then
strsql = strsql + " And Customer like '%" + txtCust.Text.Trim.ToUpper + "%'"
End If
If txtWaferLot.Text <> "" Then
strsql = strsql + " And WAFERLOTNO = '" + txtWaferLot.Text + "'"
End If
If txtAssyLot.Text <> "" Then
strsql = strsql + " And ASSYLOTID = '" + txtAssyLot.Text + "'"
End If
If txtWaferID.Text <> "" Then
strsql = strsql + " And WAFERID = '" + txtWaferID.Text + "'"
End If
If txtStartTime.Text <> "" Then
strsql = strsql + " And SCANTIME > to_date('" + txtStartTime.Text + " 00:00:00','YYYY/MM/DD HH24:MI:SS')"
End If
If txtEndTime.Text <> "" Then
strsql = strsql + " And SCANTIME < to_date('" + txtEndTime.Text + " 23:59:59','YYYY/MM/DD HH24:MI:SS')"
End If
strsql = strsql + " Order by Customer asc, waferlotno asc, waferid asc "

Dim cust As String = ""
Dim waferlotno As String = ""
Dim waferid As String = ""

If mDB.Execute(strsql, dt) Then
If Not IsNothing(dt) OrElse dt.Rows.Count > 0 Then
For i As Integer = 0 To dt.Rows.Count - 1
If dt.Rows(i)("CUSTOMER").ToString <> cust Or dt.Rows(i)("WAFERLOTNO").ToString() <> waferlotno Or dt.Rows(i)("WAFERID").ToString <> waferid Then
Dim dr As System.Data.DataRow
dr = newdt.NewRow()
dr("CUSTOMER") = dt.Rows(i)("CUSTOMER").ToString
dr("CUST_DEVICE") = dt.Rows(i)("CUST_DEVICE").ToString
dr("ASSY_LOTID") = dt.Rows(i)("ASSYLOTID").ToString
dr("WAFER_LOTNO") = dt.Rows(i)("WAFERLOTNO").ToString
dr("WAFERID") = dt.Rows(i)("WAFERID").ToString
dr("SCANTIME") = Date.Parse(dt.Rows(i)("SCANTIME").ToString)
dr("EMPOLYEEID") = dt.Rows(i)("EMPOLYEEID").ToString
dr("REMARKS") = dt.Rows(i)("REMARKS").ToString
dr("TOTALSIZE_AUTO") = dt.Rows(i)("TOTALSIZE_AUTO").ToString
dr("TOTALSIZE_MANUAL") = dt.Rows(i)("TOTALSIZE_MANUAL").ToString
dr("BINCODE_" + dt.Rows(i)("BINCODE").ToString() + "_AUTOQTY") = dt.Rows(i)("AUTOCAL_QTY").ToString()
dr("BINCODE_" + dt.Rows(i)("BINCODE").ToString() + "_MANQTY") = dt.Rows(i)("MANUALCAL_QTY").ToString()
newdt.Rows.Add(dr)

cust = dt.Rows(i)("CUSTOMER").ToString
waferlotno = dt.Rows(i)("WAFERLOTNO").ToString
waferid = dt.Rows(i)("WAFERID").ToString
Else

Dim j As Integer = newdt.Rows.Count - 1
newdt.Rows(j)("BINCODE_" + dt.Rows(i)("BINCODE").ToString() + "_AUTOQTY") = dt.Rows(i)("AUTOCAL_QTY").ToString()
newdt.Rows(j)("BINCODE_" + dt.Rows(i)("BINCODE").ToString() + "_MANQTY") = dt.Rows(i)("MANUALCAL_QTY").ToString()
cust = dt.Rows(i)("CUSTOMER").ToString
waferlotno = dt.Rows(i)("WAFERLOTNO").ToString
waferid = dt.Rows(i)("WAFERID").ToString
End If


Next

Session("DataTable") = newdt
Me.gvData.DataSource = newdt
Me.gvData.DataBind()
Else
Me.lblErrMsg.Text = "Can not find Data"
Return

End If
End If
End If

Catch ex As Exception
mErrMsg = ex.Message
Me.lblErrMsg.Text = mErrMsg
Finally
WebDB.Release_DB(mDB)

End Try

End Sub
...全文
244 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧