如果2行有相同的日期,但我現在需要把彼此跟隨的日子放在一起,並有Journee。我怎樣才能做到這一點,嘗試這種代碼,但它不能正常工作,在此先感謝如果數據顯示在asp:標籤使用vb.net使用日期字符串
私人小組BindRepeaterData(BYVAL noformationL作爲字符串)
Dim conSQL As New System.Data.SqlClient.SqlConnection
Dim cmdSQL As New System.Data.SqlClient.SqlCommand
conSQL.ConnectionString = Application("BACKstr")
conSQL.Open()
cmdSQL.Connection = conSQL
cmdSQL.CommandText = "select convert(char,[DateFormation],103) AS DateFormation,[DemiJournee] from [EXT$FORM_FormationDates] where NoFormation='" & Replace(noformationL, "'", "''") & "' and TypeDates = 0 order by DateFormation,DemiJourneeInt"
Dim ds As New System.Data.DataSet()
Dim da As New Data.SqlClient.SqlDataAdapter(cmdSQL)
da.Fill(ds)
If ds.Tables(0).Rows.Count > 0 Then
'On fait un premier nouveau dataset avec table pour y mettre les données finales de DemiJournee
Dim dsfinal As New System.Data.DataSet()
dsfinal.Tables.Add("FinalData")
dsfinal.Tables("FinalData").Columns.Add("DateFormation")
dsfinal.Tables("FinalData").Columns.Add("DemiJournee")
'On suit le DS en comparant les rows et additionant a dsfinal et puis binding dsfinal to repeater
Dim totalrows = ds.Tables(0).Rows.Count
Dim rowpointer As Integer = 0
Dim r = 0
If totalrows > 2 Then
'Si nous avons plus de 2 rows
'On compare 1 row avec la suivante row jusqu'arrivé a les deux derniere rows
Do While r < totalrows - 2
If ds.Tables(0).Rows(r).Item("DateFormation") = ds.Tables(0).Rows(r + 1).Item("DateFormation") Then
'Les deux rows a comparé on la meme date
'Nous mettons seulemenent un row au lieu de deux dans la table
dsfinal.Tables("FinalData").Rows.Add(ds.Tables(0).Rows(r).Item("DateFormation"), "Journée")
r += 2 '+1 to r
rowpointer = r '+1 to rowpointer
Else
'Les 2 rows on differentes dates
'On met en premier le comparateur comme row.
'On laisse la suivante row pour la comparer avec la row apres elle.
dsfinal.Tables("FinalData").Rows.Add(ds.Tables(0).Rows(r).Item("DateFormation"), ds.Tables(0).Rows(r).Item("DemiJournee"))
r += 1
rowpointer = r
End If
Loop
End If
If rowpointer < totalrows - 1 Then
'On a besoin de comparer les deux restantes rows
If ds.Tables(0).Rows(rowpointer).Item("DateFormation") = ds.Tables(0).Rows(rowpointer + 1).Item("DateFormation") Then
'Les deux rows comparées on la meme date
'Nous mettons seulement 1 row dans la table
dsfinal.Tables("FinalData").Rows.Add(ds.Tables(0).Rows(rowpointer).Item("DateFormation"), "Journée")
Else
'Les 2 rows on dates différentes
'On mets les 2 rows dans la table
dsfinal.Tables("FinalData").Rows.Add(ds.Tables(0).Rows(rowpointer).Item("DateFormation"), ds.Tables(0).Rows(rowpointer).Item("DemiJournee"))
dsfinal.Tables("FinalData").Rows.Add(ds.Tables(0).Rows(rowpointer + 1).Item("DateFormation"), ds.Tables(0).Rows(rowpointer + 1).Item("DemiJournee"))
End If
Else
'Nous avons seulement un historique(record)
dsfinal.Tables("FinalData").Rows.Add(ds.Tables(0).Rows(rowpointer).Item("DateFormation"), ds.Tables(0).Rows(rowpointer).Item("DemiJournee"))
End If
ds = Nothing
If dsfinal.Tables(0).Rows.Count > 0 Then
'On fait un premier nouveau dataset avec table pour y mettre les données finales de DemiJournee
Dim dsfinal2 As New System.Data.DataSet()
dsfinal2.Tables.Add("FinalData")
dsfinal2.Tables("FinalData").Columns.Add("DateFormation")
dsfinal2.Tables("FinalData").Columns.Add("DemiJournee")
'On suit le DS en comparant les rows et additionant a dsfinal et puis binding dsfinal to repeater
Dim totalrows2 = dsfinal.Tables(0).Rows.Count
Dim rowpointer2 As Integer = 0
Dim r2 = 0
If totalrows2 > 2 Then
'Si nous avons plus de 2 rows
'On compare 1 row avec la suivante row jusqu'arrivé a les deux derniere rows
Do While r2 < totalrows2 - 2
If dsfinal.Tables(0).Rows(r2).Item("DemiJournee") = "Journée" Then
'Les deux rows a comparé on la meme date
'Nous mettons seulemenent un row au lieu de deux dans la table
dsfinal2.Tables("FinalData").Rows.Add(dsfinal.Tables(0).Rows(r2).Item("DateFormation") + " au " + dsfinal.Tables(0).Rows(r2 + 1).Item("DateFormation"), "Journée")
r2 += 1 '+1 to r
rowpointer2 = r2 '+1 to rowpointer
Else
'Les 2 rows on differentes dates
'On met en premier le comparateur comme row.
'On laisse la suivante row pour la comparer avec la row apres elle.
dsfinal2.Tables("FinalData").Rows.Add(dsfinal.Tables(0).Rows(r2).Item("DateFormation"), dsfinal.Tables(0).Rows(r2).Item("DemiJournee"))
dsfinal2.Tables("FinalData").Rows.Add(dsfinal.Tables(0).Rows(r2 + 1).Item("DateFormation"), dsfinal.Tables(0).Rows(r2 + 1).Item("DemiJournee"))
r2 += 2
rowpointer2 = r2
End If
Loop
End If
If rowpointer2 < totalrows2 - 1 Then
'On a besoin de comparer les deux restantes rows
If dsfinal.Tables(0).Rows(r2).Item("DemiJournee") = "Journée" Then
'Les deux rows comparées on la meme date
'Nous mettons seulement 1 row dans la table
dsfinal2.Tables("FinalData").Rows.Add(dsfinal.Tables(0).Rows(rowpointer2).Item("DateFormation"), "Journée")
Else
'Les 2 rows on dates différentes
'On mets les 2 rows dans la table
dsfinal2.Tables("FinalData").Rows.Add(dsfinal.Tables(0).Rows(rowpointer2).Item("DateFormation"), dsfinal.Tables(0).Rows(rowpointer2).Item("DemiJournee"))
dsfinal2.Tables("FinalData").Rows.Add(dsfinal.Tables(0).Rows(rowpointer2 + 1).Item("DateFormation"), dsfinal.Tables(0).Rows(rowpointer2 + 1).Item("DemiJournee"))
End If
Else
'Nous avons seulement un historique(record)
dsfinal2.Tables("FinalData").Rows.Add(dsfinal.Tables(0).Rows(rowpointer2).Item("DateFormation"), dsfinal.Tables(0).Rows(rowpointer2).Item("DemiJournee"))
End If
'clear le ds original
dsfinal = Nothing
rep_Dates.Visible = True
rep_Dates.DataSource = dsfinal2
rep_Dates.DataBind()
dsfinal2 = Nothing
Else
rep_Dates.Visible = False
End If
Else
rep_Dates.Visible = False
End If
conSQL.Close()
End Sub
我剛發現的溶液,我想,我改變了代碼到 –
做,當R2
看起來不錯...檢查代碼是否正常工作(如果只返回一條記錄)檢查最後一條記錄是否也被考慮不遺漏。這些是我在初次排序時遇到的問題。否則做得好! – Mych