![]() |
|
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]()
|
|
| alf138 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 15.11.2009 Репутация: нет Всего: нет |
После прохождения первого цикла программа зависает
|
|||
|
||||
| DarkProg |
|
|||
![]() Законченный романтик ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1784 Регистрация: 11.3.2009 Где: Земля Репутация: 4 Всего: 19 |
Определитесь откуда именно вы хотите тянуть данные из Датасета или из таблицы, а то у вас какой-то полуметод, т.е. либо обращайтесь напрямую к датасету Dataset.FieldByName('Поле1').asInteger и соответственно делайте Dataset.Next и т.д.
Да, и ещё, проход по датасету можно организовать используя цикл For, т.к. есть Dataset.RecordCount Перед циклом обязательно поставьте Dataset.First Либо вытаскивайте данные из таблицы, но т.к. я понятия не имею что у вас за Grid, то и подсказать не могу. -------------------- "И твоя голова всегда в ответе за то куда сядет твой зад..." "Я студент - скажите с какого я ВУЗа..." |
|||
|
||||
| northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 12 Всего: 20 |
1. Ужасное форматирование кода! 2. А где тут два цикла? -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
-------------------- Обижено школьников: 8 |
|||
|
||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 11 Всего: 130 |
Я попытался лишние begin'ы выкинуть:
Добавлено через 1 минуту и 19 секунд И вообще - зачем так сложно, т.е. к данным обращаться через DBGrid? -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| DarkProg |
|
|||
![]() Законченный романтик ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1784 Регистрация: 11.3.2009 Где: Земля Репутация: 4 Всего: 19 |
Как ни странно и не порадоксально обычно код выглядит примерно так
-------------------- "И твоя голова всегда в ответе за то куда сядет твой зад..." "Я студент - скажите с какого я ВУЗа..." |
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
DarkProg, RecordCount не обязан быть точным.
-------------------- Обижено школьников: 8 |
|||
|
||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 11 Всего: 130 |
Чтобы ему быть точным, придумали .Fetch. -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| DarkProg |
|
|||
![]() Законченный романтик ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1784 Регистрация: 11.3.2009 Где: Земля Репутация: 4 Всего: 19 |
-------------------- "И твоя голова всегда в ответе за то куда сядет твой зад..." "Я студент - скажите с какого я ВУЗа..." |
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
Не встречал что-то. Может имеется в виду FetchAll? Ну он не объявлен в базовом TDataSet, значит мне всегда придется знать конкретный класс датасета, и надеятся что у всех потомков с которыми я захочу работать он есть (щас будет совет использовать Rtti?
Есть вот еще Last для этих целей, это уже вариант. Пожалуй сделаю себе хелпер
Ну или альтернатива - просто написать цикл while -------------------- Обижено школьников: 8 |
|||
|
||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 11 Всего: 130 |
Да, именно он. Но тут от СУБД зависит: датасеты в Access или FoxPro всегда же возвращают все имеющиеся записи. FB - нет. К тому же зная RecordCount, можно в цикле использовать и ProgressBar, что при работе с подобными вещами - проход по датасетам - весьма полезно. -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
вот это и плохо
Если прогрессбар немного соврёт ничего страшного не случится же. Это сообщение отредактировал(а) bems - 2.10.2011, 17:39 -------------------- Обижено школьников: 8 |
|||
|
||||
| northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 12 Всего: 20 |
Абсолютно согласен.
Единственный грамотный способ перебора всех записей любого наследника TDataSet! Во всех версиях Дельфи и во всех версиях сторонних компонент купленных Борландом. P.S. Есть ещё конечно методы BOF, Last и Prior, но это то же самое. А с RecordCount очень легко рано или поздно нарваться на очень крупные неприятности, после чего вполне вероятно придётся переписывать всю или почти всю программу. Это сообщение отредактировал(а) northener - 3.10.2011, 01:24 -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
![]()
|
| Правила форума "Delphi: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |