Показать сообщение отдельно
Старый 30.04.2008, 17:52   #3  
Dozer is offline
Dozer
Участник
AxAssist
Соотечественники
 
107 / 24 (1) +++
Регистрация: 16.11.2004
Адрес: г. Калгари, Канада
Цитата:
Сообщение от darmen Посмотреть сообщение
Проблема вообще такая
(4-ая Аксапта, MS SQL)

X++:
while select PMPlaceSecurityTimetable
              exists join PlaceId from PMPlaceTimeBoard
                            where PMPlaceTimeBoard.DateStart == PMPlaceSecurityTimetable.DateSecure

       {

         timeList2 = new RecordSortedList(tablenum(PMPlaceTimeBoard));
         timeList2.sortOrder(fieldnum(PMPlaceTimeBoard, PlaceId),fieldnum(PMPlaceTimeBoard, DateStart),
                       fieldnum(PMPlaceTimeBoard, PlannedTimeStart));

        while select PMPlaceTimeBoard1
              where PMPlaceTimeBoard1.DateStart == PMPlaceSecurityTimetable.DateSecure &&
                    PMPlaceTimeBoard1.PlaceId == PMPlaceSecurityTimetable.PlaceId
                {
                   timeList2.ins(PMPlaceTimeBoard1);

                }
Этот код выполняется слишком долго из-за того, что select находиться в while select и поэтому вероятно происходит частое образение к базе, что сильно тормозит работу этого кода. Как можно в данном случае избежать использования второго while select? Подскажите плз..
X++:
timeList2 = new RecordSortedList(tablenum(PMPlaceTimeBoard));
timeList2.sortOrder(fieldnum(PMPlaceTimeBoard, PlaceId), 
    fieldnum(PMPlaceTimeBoard, DateStart), 
    fieldnum(PMPlaceTimeBoard, PlannedTimeStart));

while select PMPlaceSecurityTimetable
join PMPlaceTimeBoard
    where PMPlaceTimeBoard.DateStart == PMPlaceSecurityTimetable.DateSecure
    && PMPlaceTimeBoard.PlaceId == PMPlaceSecurityTimetable.PlaceId
{
    timeList2.ins(PMPlaceTimeBoard);
}
Вот так?
__________________
С уважением, Dozer

Последний раз редактировалось Dozer; 30.04.2008 в 22:25. Причина: Опечатка