01.03.2004, 12:44 | #1 |
Участник
|
Можно ли узнать Eof внутри while select ?
PHP код:
__________________
Дмитрий |
|
01.03.2004, 13:19 | #2 |
Участник
|
первой или последней записи ЧЕГО?
как отвечать на ваш вопрос, если в ходе перебора кто-то другой вставит новую запись? ответ - никак. |
|
01.03.2004, 13:48 | #3 |
Участник
|
Просто в какой-то момент времени цикл заканчивается.
Вот и хотелось бы как-то узнать внутри цикла что данная итерация - последняя. Или не последняя.
__________________
Дмитрий |
|
01.03.2004, 14:39 | #4 |
Участник
|
а зачем внутри цикла то?
вам переменная нужна спозиционированная на последнюю запись? создайте временную и копируйте туда. |
|
01.03.2004, 14:52 | #5 |
Участник
|
Рекурсия у меня зашита в цикле этом. Если я о конце цикла узнаю уже выйдя из него, то становится слишком поздно...
Ну и ладно, придётся QueryRun использовать или цикл 2 раза запускать для подсчёта кол-ва записей, хотя это в 2 раза увеличит время работы метода.
__________________
Дмитрий |
|
01.03.2004, 16:01 | #6 |
Участник
|
если честно, то бред у вас какой-то.
с чего это рекурсия чувствительна к последней записи? пусть у вас она будет чувствительна к пустой записи. Запрос на count увеличивает время не в 2 раза Вы конечно как хотите, но скорее всего, что-то в голове править надо. Может выложите код сюда? Постараемся что-нибудь придумать. |
|
01.03.2004, 16:37 | #7 |
Участник
|
Ну может и бред конечно. Погода наверное влияет.
На самом деле речь идёт об отчёте Строки спецификации. Классы BOMHierarchy и BOMHierarchyReport. Там и организована рекурсия. И каждый раз запуская reportRun.send(BOM); в методе scanDownVersion или reportRun.send(version); в методе scanDownBOM хотелось бы знать последняя это запись в своём уровне или нет. Связано с "продвинутой" прорисовкой секции в отчёте.
__________________
Дмитрий |
|
01.03.2004, 20:24 | #8 |
Lean Six Sigma
|
Если count - слишком долго, то можно с помощью запроса (firstonly с обратной сортировкой) можно спросить последний RecId. Запись с этим RecId и будет последней. Работать будет намного быстрее, чем QueryRun.
Подойдёт? |
|
02.03.2004, 02:29 | #9 |
Участник
|
а... деревья рисуете... понятно.
|
|
03.03.2004, 10:26 | #10 |
Участник
|
Count и Firstonly.
Так и не смог понять что из этого работает быстрее, но и то и другое не сильно тормозит работу отчёта. А вот правильной работы от firstonly с обратной сортировкой я так и не добился. Последний RecId возвращаться не захотел. В итоге использую count(recid) и всё нормально.
__________________
Дмитрий |
|
03.03.2004, 14:59 | #11 |
Lean Six Sigma
|
Выкладывайте код - и народ к вам потянется
И count и select firstonly RecId order by asc нарисуют. |
|
03.03.2004, 19:57 | #12 |
Administrator
|
Damn, наверное, действительно погода... Это же проще простого! И никакого count и firstonly не надо. Смотрите:
PHP код:
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
04.03.2004, 15:01 | #13 |
Участник
|
да, так конечно сработало.
От двойного повторения запроса избавился. Вот только пришлось продублировать код, содержащийся внутри цикла while select, ещё раз после выхода из цикла. Всё нормально работает. А firstonly не хотел работать, потому что при прямой сортировке нужно было писать order Linenum, RecId , а при обратной order Linenum desc, RecId desc То есть RecId должен был обязательно участвовать в этом. А я сортировал только по полю Linenum.
__________________
Дмитрий |
|
04.03.2004, 19:57 | #14 |
Участник
|
Цитата:
Изначально опубликовано Damn
Вот только пришлось продублировать код, содержащийся внутри цикла while select, ещё раз после выхода из цикла. |
|
|
|