Создание строкового списка значений в таблице данных

#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; ", "

Будьте осторожны с лишней запятой.