AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 01.03.2004, 12:44   #1  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
? Можно ли узнать Eof внутри while select ?
PHP код:
while select table
{
...

Можно ли каким-то образом внутри цикла узнать находимся ли мы на первой или последней записи? Или для этого нужно организовывать цикл только на основе QueryRun?
__________________
Дмитрий
Старый 01.03.2004, 13:19   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
первой или последней записи ЧЕГО?
как отвечать на ваш вопрос, если в ходе перебора кто-то другой вставит новую запись?

ответ - никак.
Старый 01.03.2004, 13:48   #3  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
Просто в какой-то момент времени цикл заканчивается.
Вот и хотелось бы как-то узнать внутри цикла что данная итерация - последняя. Или не последняя.
__________________
Дмитрий
Старый 01.03.2004, 14:39   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
а зачем внутри цикла то?
вам переменная нужна спозиционированная на последнюю запись?

создайте временную и копируйте туда.
Старый 01.03.2004, 14:52   #5  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
Рекурсия у меня зашита в цикле этом. Если я о конце цикла узнаю уже выйдя из него, то становится слишком поздно...
Ну и ладно, придётся QueryRun использовать или цикл 2 раза запускать для подсчёта кол-ва записей, хотя это в 2 раза увеличит время работы метода.
__________________
Дмитрий
Старый 01.03.2004, 16:01   #6  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
если честно, то бред у вас какой-то.
с чего это рекурсия чувствительна к последней записи?
пусть у вас она будет чувствительна к пустой записи.

Запрос на count увеличивает время не в 2 раза

Вы конечно как хотите, но скорее всего, что-то в голове править надо.

Может выложите код сюда? Постараемся что-нибудь придумать.
Старый 01.03.2004, 16:37   #7  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
Ну может и бред конечно. Погода наверное влияет.
На самом деле речь идёт об отчёте Строки спецификации. Классы BOMHierarchy и BOMHierarchyReport.
Там и организована рекурсия.
И каждый раз запуская
reportRun.send(BOM); в методе scanDownVersion или
reportRun.send(version); в методе scanDownBOM
хотелось бы знать последняя это запись в своём уровне или нет. Связано с "продвинутой" прорисовкой секции в отчёте.
__________________
Дмитрий
Старый 01.03.2004, 20:24   #8  
Ned is offline
Ned
Lean Six Sigma
 
680 / 99 (5) ++++
Регистрация: 29.12.2002
Адрес: самолёт
Если count - слишком долго, то можно с помощью запроса (firstonly с обратной сортировкой) можно спросить последний RecId. Запись с этим RecId и будет последней. Работать будет намного быстрее, чем QueryRun.

Подойдёт?
Старый 02.03.2004, 02:29   #9  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
а... деревья рисуете... понятно.
Старый 03.03.2004, 10:26   #10  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
Count и Firstonly.
Так и не смог понять что из этого работает быстрее, но и то и другое не сильно тормозит работу отчёта.
А вот правильной работы от firstonly с обратной сортировкой я так и не добился. Последний RecId возвращаться не захотел.
В итоге использую count(recid) и всё нормально.
__________________
Дмитрий
Старый 03.03.2004, 14:59   #11  
Ned is offline
Ned
Lean Six Sigma
 
680 / 99 (5) ++++
Регистрация: 29.12.2002
Адрес: самолёт
Выкладывайте код - и народ к вам потянется
И count и select firstonly RecId order by asc нарисуют.
Старый 03.03.2004, 19:57   #12  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Damn, наверное, действительно погода... Это же проще простого! И никакого count и firstonly не надо. Смотрите:
PHP код:
Common recordpreviousRecord;
;
   
// ...
while select record {
  if (
previousRecord)
    
element.send(previousRecord);
  
previousRecord.data(record);
}
if (
previousRecord)
  
element.send(previousRecord); // вот это и есть последняя запись! 
Удачи.
__________________
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  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
да, так конечно сработало.
От двойного повторения запроса избавился. Вот только пришлось продублировать код, содержащийся внутри цикла while select, ещё раз после выхода из цикла.
Всё нормально работает.
А firstonly не хотел работать, потому что при прямой сортировке нужно было писать order Linenum, RecId , а при обратной order Linenum desc, RecId desc
То есть RecId должен был обязательно участвовать в этом.
А я сортировал только по полю Linenum.
__________________
Дмитрий
Старый 04.03.2004, 19:57   #14  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Изначально опубликовано Damn
Вот только пришлось продублировать код, содержащийся внутри цикла while select, ещё раз после выхода из цикла.
А для этого есть функции и методы
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как узнать по объекту RecordSortedList, из какой таблицы в нем записи? gl00mie DAX: Программирование 4 20.02.2008 15:39
Можно ли отключить и включить аналитику? miklenew DAX: Функционал 24 30.01.2008 14:00
Можно-ли узнать сетевое имя пользователя? egorych DAX: Администрирование 8 21.11.2007 16:27
Можно ли узнать ширину колонки в Grid? Maxim Gorbunov DAX: Программирование 1 05.07.2002 18:52
Можно ли узнать, что следующая секция отчета будет выводиться на следующей странице? Maxim Gorbunov DAX: Программирование 4 08.05.2002 23:33
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 01:35.