是有关房态表的一段代码, 我估计是嵌套的FOR EACH太多了, 执行起来有明显的延迟,估计1秒以上.
看能否优化代码,提高效率?
Dim mon As Integer = Tables("userb").current("zcldidariqi").Month
Dim days As Integer = Date.DaysInMonth(Tables("userb").current("zcldidariqi").Year,Tables("userb").current("zcldidariqi").Month)
Dim s As String
If Tables("userb").current("zcldidariqi").adddays(3).day < Tables("userb").current("zcldidariqi").day Then '如果跨月
For j As Integer = Tables("userb").current("zcldidariqi").day To days
s + = "' ' As " & mon & "月" & j & "日,"
Next
Else '正常一个月
For j As Integer = Tables("userb").current("zcldidariqi").day To Tables("userb").current("zcldidariqi").adddays(3).day
s + = "' ' As " & mon & "月" & j & "日,"
Next
End If
s = "Select 房型, ' ' As 房间号 , " & s.trim(",") & " from {客房信息表} order by 排序 "
Dim dt As DataTable = DataTables("选房窗口_table1")
dt.Fill( s , True)
Tables("选房窗口_table1").Cols("房间号").Width = 55
Tables("选房窗口_table1").Cols("房型").Width = 55
If dt.DataRows.Count < DataTables("客房信息表").DataRows.Count Then
dt.AddNew(DataTables("客房信息表").DataRows.Count - dt.DataRows.Count)
End If
For i As Integer = 0 To DataTables("客房信息表").DataRows.Count - 1
For j As Integer = 0 To dt.DataRows.Count - 1
If i = j Then
dt.DataRows(j)("房间号") = DataTables("客房信息表").DataRows(i)("房间号")
End If
Next
Next
For Each ftdr As DataRow In dt.DataRows
For Each ftdc As DataCol In dt.DataCols
For Each xcdr As DataRow In DataTables("zclxingcheng").DataRows
If xcdr("日期").Year = Date.Today.Year AndAlso xcdr("日期").Month & "月" & xcdr("日期").Day & "日" = ftdc.Name AndAlso xcdr("房间号").Contains(ftdr("房间号")) Then
Dim dr As DataRow = DataTables("userb").Find("ID = '" & xcdr("客户ID") & "'")
If dr IsNot Nothing
ftdr(ftdc.Name) + = dr("name") & ","
End If
End If
Next
ftdr(ftdc.Name) = ftdr(ftdc.Name).Trim(",")
Next
Next
e.Form.Text = Date.Today.Year & "年" & Date.Today.Month & "月房态表"
'以下是把原有的房间号的行的复选框勾选上.
Dim zcl As String= Tables("userb.zclxingcheng").current("房间号")
Dim zcls As String =zcl.Replace(" ","")
For Each r As Row In Tables("选房窗口_table1").Rows
If zcls.Contains(r("房间号")) Then
r.Checked = True
End If
Next