Eliav Ben Shitrit Ответов: 2

Существует ошибка "не удается найти таблицу 0"


Все, что я делал, не помогало, пытался положить конец этому.
int x=DataBase.ds.Tables.Count;
if(x>0)
{ 
//rest of code
}

Проблема заключается главным образом в том, что для, и не происходит ни в каких других формах(при использовании таблиц[0])...
Я не описываю содержание, потому что оно не имеет отношения к делу, мне нужно решение, которое работает в любом коде.

Что я уже пробовал:

<pre>    

                {
                    for (int i1 = 0; i1 < DataBase.ds.Tables[0].Rows.Count; i1++)
                    {


                        if (//some condition)
                        {
                              //some code
                        }
                    }
                }

Richard MacCutchan

Уверены ли вы, что набор данных был правильно инициализирован в этот момент?

2 Ответов

Рейтинг:
2

Wendelius

Основываясь на ошибке, набор данных не имеет таблиц при выполнении цикла for. Поскольку вы пытаетесь использовать первую таблицу (индекс 0) из набора данных, вы получаете сообщение об ошибке.

Поэтому используйте отладчик, чтобы пройти через код, который заполняет набор данных. Проверьте например если
- Заполняющий код опущен из-за условия
- Цикл for вызывается до того, как происходит заселение
- Когда заполняются данные не найдены и т. д.


Рейтинг:
1

dnxit

Лучше проверить все это

if(ds != null)                  // see if data set is not null
if(ds.Tables.Count > 0 )        // see if your data set has tables
if(ds.Tables[0].Rows.Count > 0)  //see if first table in your data set has any rows


Или вы можете создать универсальную функцию, чтобы увидеть, является ли ваш набор данных пустым, например

bool IsEmpty(DataSet dataSet)
{
    return !dataSet.Tables.Cast<DataTable>().Any(x => x.DefaultView.Count > 0);
}


кроме того, метод Fill() DataAdapter возвращает # строк, добавленных для первой таблицы в наборе данных.