この質問は非常に曖昧に聞こえるかもしれません。私が探しているのは、 html を生成する方法です<table></table>
。
このテーブルを作成する必要があります:
実際には一番上の行がヘッダーで、最初の 2 列もヘッダーです。
(3,2) から始まるすべてのセルに対して、'count' クエリを実行します。
今、私は 2D 配列を構築するために非常に醜いループを実行しています。もっと素敵にならないといけないという気持ちがあります。近い将来、別のテーブルにリンクして、整数に関連する行を表示するすべての「カウントされた」整数の下にリンクを配置する必要があります。
これが私が今やっている方法ですDictionaries(Of String,String)
。2D配列を生成するためにさまざまなループを行っているだけです。配列を作成するには、2 つの変数を使用してテーブル内の位置を把握します:Dim lv_TRow As Integer = 0
とDim lv_TCol As Integer = 0
.
もっと良い方法があるはずです。たぶん、これらをオブジェクトに変換するか、まだ知らない何かに変換します。
これをより良くするのを手伝ってもらえますか?
Public Function build2DArray() As String(,)
Dim lv_Tabel(15, 4) As String
Dim riskLevels As New Dictionary(Of String, String) ' Kan gebruikt worden in WHERE
riskLevels.Add("Extreem", 5)
riskLevels.Add("Hoog", 4)
riskLevels.Add("Normaal", 3)
riskLevels.Add("Laag", 2)
riskLevels.Add("Gering", 1)
Dim algStss As New Dictionary(Of String, String)
algStss.Add("Gestart", 0)
algStss.Add("Geanalyseerd", 0)
algStss.Add("Opgelost", 0)
Dim incStss As New Dictionary(Of String, String) ' Kan gebruikt worden in WHERE
incStss.Add("Gestart", "L14_IncSts IN (1,2)")
incStss.Add("Geanalyseerd", "L14_IncSts IN (3,4,5,6,7)")
incStss.Add("Opgelost", "L14_IncSts IN (8)")
Dim prmStss As New Dictionary(Of String, String) ' Kan gebruikt worden in WHERE
prmStss.Add("Gestart", "L24_StsIdt IN (1)")
prmStss.Add("Geanalyseerd", "L24_StsIdt IN (2,3,4,5,6)")
prmStss.Add("Opgelost", "L24_StsIdt IN (7)")
Dim wzgStss As New Dictionary(Of String, String) ' Kan gebruikt worden in WHERE
wzgStss.Add("Gestart", "L38_StsIdt IN (1,2)")
wzgStss.Add("Geanalyseerd", "L38_StsIdt IN (3,4,5,6,7)")
wzgStss.Add("Opgelost", "L38_StsIdt IN (8,9,10,11)")
Dim headers As New Dictionary(Of String, String) ' Kan gebruikt worden in FROM
headers.Add("Risiconiveau", 0)
headers.Add("Status", 0)
headers.Add("Incident", "Inc")
headers.Add("Probleem", "Prm")
headers.Add("Wijziging", "Wzg")
Dim lv_Dtb As New Database
'lv_Dtb.ExecuteQuery("SELECT * FROM Ris")
Dim lv_TRow As Integer = 0
Dim lv_TCol As Integer = 0
For Each header As KeyValuePair(Of String, String) In headers
lv_Tabel(lv_TRow, lv_TCol) = header.Key
lv_TCol += 1
Next
lv_TCol = 0
lv_TRow = 1
For Each riskLevel As KeyValuePair(Of String, String) In riskLevels
lv_Tabel(lv_TRow + 1, lv_TCol) = riskLevel.Key
lv_TCol += 1
For Each algSts As KeyValuePair(Of String, String) In algStss
lv_Tabel(lv_TRow, lv_TCol) = algSts.Key
lv_TRow += 1
Next
lv_TRow -= 3
lv_TCol += 1
For Each incSts As KeyValuePair(Of String, String) In incStss
Try
Dim dataset As DataSet = lv_Dtb.ExecuteQuery(QryString(1, incSts.Value, riskLevel.Value))
lv_Tabel(lv_TRow, lv_TCol) = dataset.Tables(0).Rows(0).Item(0) 'eerste query
Catch err As SqlException
Logger.Log(err.Message)
lv_Tabel(lv_TRow, lv_TCol) = "err"
End Try
lv_TRow += 1
Next
lv_TRow -= 3
lv_TCol += 1
For Each prmSts As KeyValuePair(Of String, String) In prmStss
Try
Dim dataset As DataSet = lv_Dtb.ExecuteQuery(QryString(2, prmSts.Value, riskLevel.Value))
lv_Tabel(lv_TRow, lv_TCol) = dataset.Tables(0).Rows(0).Item(0) 'eerste query
Catch err As SqlException
Logger.Log(err.Message)
lv_Tabel(lv_TRow, lv_TCol) = "err"
End Try
lv_TRow += 1
Next
lv_TRow -= 3
lv_TCol += 1
For Each wzgSts As KeyValuePair(Of String, String) In wzgStss
Try
Dim dataset As DataSet = lv_Dtb.ExecuteQuery(QryString(3, wzgSts.Value, riskLevel.Value))
lv_Tabel(lv_TRow, lv_TCol) = dataset.Tables(0).Rows(0).Item(0) 'eerste query
Catch err As SqlException
Logger.Log(err.Message)
lv_Tabel(lv_TRow, lv_TCol) = "err"
End Try
lv_TRow += 1
Next
lv_TCol -= 4
Next
lv_Dtb.CloseConnection()
Return lv_Tabel
End Function