Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Цикл


Автор: Гость_Инга 25.11.2005, 14:20
Пытаюсь заполнить таблицу привязанную к ClientDataSet, состоящую из 7 колонок и 621 строки в цикле.
Не получается. На выходе выходит 3726 строк. Где ошибка:
Код

for(int col=1; col<=7; col++)
         {
             for(int row=1; row<=621; row++)
                 {
                  String str23 = "VVVV";
                  ClientDataSet2->Append();
                  ClientDataSet2->Fields->FieldByNumber(col)->AsString = str23;
                  ClientDataSet2->Post();
                   }
         }


Автор: sexton 25.11.2005, 14:36
Попробуй так!

Код

for(int row=0; row<621; row++) // условия цикла поменяем местами
{
     ClientDataSet2->Append(); // эту строчку вынести из второго цикла!
     for (int col=0; col<7; col++)
     {
          String str23 = "VVVV";
          ClientDataSet2->Fields->FieldByNumber(col)->AsString = str23;
      }
      ClientDataSet2->Post(); // и эту!

}


Автор: _hunter 25.11.2005, 14:49
каждый Append() добавляет к таблице одну строку. соответственно и получаеш 6*621 строк.
соответственно ошибка в логике. рекомендации: перенеси Append() на уровень выше

Автор: Inga 25.11.2005, 14:50
Нет, не работает. В момент выполнения выскакивает исключение аксес иволэйшен и т. д. smile
Добавлено @ 14:50
>каждый Append() добавляет к таблице одну строку. соответственно и получаеш 6*621 строк.
соответственно ошибка в логике. рекомендации: перенеси Append() на уровень выше

Спасибо, сейчас попробую.

Автор: sexton 25.11.2005, 15:04
А! ну так я сам накосячил!

for (int col=1; col<=7; col++)

По-моему надо все-таки так.

Автор: Inga 25.11.2005, 15:31
Cпасибо! Все работает. smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)