У нас есть набор данных dsActualCost, который извлекает значение запроса: MonthName в одну колонку и Стоимость в другой.
У нас есть код для отображения данных в формате таблицы.Row оленья кожа существует в db- Exception
For MonthIndex = 0 To dsMonth.Tables(0).Rows.Count - 1
Dim tdMonthlycost As New TableCell
If dsActualCost.Tables(0).Rows.Count > 0 Then
If IsDBNull(dsActualCost.Tables(0).Rows(MonthIndex).Item(1)) Then
tdMonthlycost.Text = 0
Else
tdMonthlycost.Text = dsActualCost.Tables(0).Rows(MonthIndex).Item(1)
End If
Else
tdMonthlycost.Text = 0
End If
trBody.Cells.Add(tdMonthlycost)
Next
Этот код работает отлично, когда
у нас есть данные по всем строкам
мы не имеем никаких данных на всех
Но это дает исключение для всех остальных случаев. Я пытался отлаживать и выдавать возникающие проблемы при поиске любой строки, недоступной в БД.
Произнесите набор данных имеет только 2 строки для фев месяц, поэтому, когда он выполняет линию
IsDBNull (dsActualCost.Tables (0) .Rows (2) .Item (1))
Он бросает Db нулевое исключение.
, пожалуйста, предложите, как я должен обращаться с ним. цикл будет работать в течение 12 месяцев.
Если цикл monthIndex достигает 2, а набор данных dsActualCost имеет значение только для сентября, октября и ноября (нет данных за предыдущие месяцы), цикл отобразит эти данные в январе, феврале и марте. Другие месяцы покажут 0. – RMN
@ RMN. Вам все еще нужно проверить, чтобы MonthIndex не находился за пределами диапазона в dsActualCost. Вы сказали, что получаете исключение, и это может быть причиной. Если вы индексируете массив, это вызовет исключение. – dcp
Да, вы правы, и то, как вы сказали, также верно. Но когда я хочу поместить данные месяца jan в первую ячейку и апрель в 4-й ячейке. Какую петлю я должен использовать? Цикл, который вы сказали, не позволит исключать. Но когда я хочу забрать стоимость за определенный месяц, то как мне следует продолжить? – RMN