#vb.net #string #for-loop #iteration #concatenation
#vb.net #строка #цикл for #итерация #конкатенация
Вопрос:
Я пытаюсь создать список тарифов в программе, где тарифы истекают через месяц с сегодняшнего дня, чтобы пользователю можно было отправить напоминание об их продлении. Мой код для этого приведен ниже
Try
Dim rDt As New DataTable
Dim r1Dt As New DataTable
Using rDa = New OleDbDataAdapter("SELECT DISTINCT [Comm_Code] FROM [Acquisition Commission] WHERE DateTo=?", con)
rDa.SelectCommand.Parameters.Add("@date", OleDbType.Date).Value = Date.Today.AddMonths(1)
rDa.Fill(r1Dt)
End Using
Dim r2Dt As New DataTable
Using r2Da = New OleDbDataAdapter("SELECT DISTINCT [Comm_Code] FROM [Commission Rates] WHERE DateTo=?", con)
r2Da.SelectCommand.Parameters.Add("@date", OleDbType.Date).Value = Date.Today.AddMonths(1)
r2Da.Fill(r2Dt)
End Using
Dim r3Dt As New DataTable
Using r3Da As New OleDbDataAdapter("SELECT DISTINCT [Comm_Code] FROM [Customer Special Rates] WHERE DateTo=?", con)
r3Da.SelectCommand.Parameters.Add("@date", OleDbType.Date).Value = Date.Today.AddMonths(1)
r3Da.Fill(r3Dt)
End Using
rDt = r1Dt.Copy
rDt.Merge(r2Dt)
rDt.AcceptChanges()
rDt.Merge(r3Dt)
rDt.AcceptChanges()
If rDt.Rows.Count > 0 Then
Dim rates As String = ""
For Each dr As DataRow In rDt.Rows
rates = dr.Item("Comm_Code") amp; ", "
Next
If MsgBox("The following rates; " amp; rates amp; "are set to expire in 1 month. Would you like to automatically extend these rates by 6 months?", MsgBoxStyle.YesNo, "Extend Rates") = MsgBoxResult.No Then
Else
Однако, просматривая этот код, я вижу, что он rDt
содержит 3 строки (как я и ожидал, по 1 оценке из каждой таблицы в качестве теста), но For Each
цикл повторяется только один раз, поэтому только 1 из 3 элементов объединяется в строку.
Почему это так и как мне это исправить?
Ответ №1:
Вы каждый раз переопределяете rates
.
rates = dr.Item("Comm_Code") amp; ", "
Вам нужно изменить его на
rates amp;= dr.Item("Comm_Code") amp; ", "
Будьте осторожны с лишней запятой.