Функция поиска мax/min
Модераторы: m0p3e, edward_K, Модераторы
-
- Местный житель
- Сообщения: 291
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: С-Петербург
- Контактная информация:
Функция поиска мax/min
Собственно вот и не могу найти никакой функции для поиска max/min элемента столбца таблицы.
Просто хочу придумать что-то для автоматического формирования баркода при импорте МЦ в KATMC.
Да и вообще такая функция не помешала бы.
Желательно чтобы можно было накладывать дополнительные условия. Например выбрать только те МЦ, которые относятся к определенной группе, а там найти максимум.
Думал вот вариант сделать временную таблицу запросом с нужными ограничениями, отсортировать ее, взять последний элемент, а потом грохнуть таблицу. Но че-то как-то не супер красиво .`)
КОроче есть хотя бы простая ф-я поиска таких эл-тов?
Просто хочу придумать что-то для автоматического формирования баркода при импорте МЦ в KATMC.
Да и вообще такая функция не помешала бы.
Желательно чтобы можно было накладывать дополнительные условия. Например выбрать только те МЦ, которые относятся к определенной группе, а там найти максимум.
Думал вот вариант сделать временную таблицу запросом с нужными ограничениями, отсортировать ее, взять последний элемент, а потом грохнуть таблицу. Но че-то как-то не супер красиво .`)
КОроче есть хотя бы простая ф-я поиска таких эл-тов?
Безвыходных ситуаций не бывает: DO LOOP WHILE TRUE
-
- Местный житель
- Сообщения: 783
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Москва
- Контактная информация:
Re: Функция поиска мax/min
Если ты хочешь сделать это LOT-ом, то не получится. Думаю, придется писать свой фейс.
-
- Местный житель
- Сообщения: 291
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: С-Петербург
- Контактная информация:
Re: Функция поиска мax/min
Про lot речи не идет. Есть свой фейс для импорта. Там всякие вопросы по пути пользователю задаются, типа выберите файл и тп. Так вот в этом файле хранятся МЦ, для которых надо сформировать новые баркоды, причем чтобы они не дублировались.
Но функция нужна не только для данного случая. Вообще для меня это полезная вещица.
Но функция нужна не только для данного случая. Вообще для меня это полезная вещица.
Безвыходных ситуаций не бывает: DO LOOP WHILE TRUE
Re: Функция поиска мax/min
Непонятно, зачем нужна временная таблица?
Делаем нужный запрос, и встаем на последнюю запись.
И ничего другого здесь не получится. Разве что через ODBC выполнить запрос select max(поле) from .....
Делаем нужный запрос, и встаем на последнюю запись.
И ничего другого здесь не получится. Разве что через ODBC выполнить запрос select max(поле) from .....
-
- Местный житель
- Сообщения: 291
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: С-Петербург
- Контактная информация:
Re: Функция поиска мax/min
буду пробовать запросом, хотя пока еще не понял как.
А вот вариант с ODBC интересен. Просто даже не в рамках данной задачи, а просто.
То есть через вип можно обращаться к объектам ODBC? А где это описано?
А вот вариант с ODBC интересен. Просто даже не в рамках данной задачи, а просто.
То есть через вип можно обращаться к объектам ODBC? А где это описано?
Безвыходных ситуаций не бывает: DO LOOP WHILE TRUE
-
- Местный житель
- Сообщения: 291
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: С-Петербург
- Контактная информация:
Re: Функция поиска мax/min
Не, чего то с запросом не очень получается, написал вот такую конструкцию:
var
kod : string;
interface getmax;
view as select * from katmc order by barkod;
screen first;
buttons cmBut;
<<
<. Кнопка .>
>>
end;
HandleEvent
cmBut:{
modifier getlast katmc;
kod:=katmc.barkod;
message (kod);
}
end;
end.
Но чего-то он а кажется не оптимальная... Или что имелось ввиду под запросом? Как писать?
var
kod : string;
interface getmax;
view as select * from katmc order by barkod;
screen first;
buttons cmBut;
<<
<. Кнопка .>
>>
end;
HandleEvent
cmBut:{
modifier getlast katmc;
kod:=katmc.barkod;
message (kod);
}
end;
end.
Но чего-то он а кажется не оптимальная... Или что имелось ввиду под запросом? Как писать?
Безвыходных ситуаций не бывает: DO LOOP WHILE TRUE
Re: Функция поиска мax/min
Именно это я и имел ввиду. По другому и быть не может. Даже если и есть, в Атлантисе, какая то ф-ция, то она делает тоже самое.
А про ODBC, я это для примера сказал(дескать есть в нормальном SQL-ле агрегатные ф-ции.)
А про ODBC, я это для примера сказал(дескать есть в нормальном SQL-ле агрегатные ф-ции.)
-
- Местный житель
- Сообщения: 291
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: С-Петербург
- Контактная информация:
Re: Функция поиска мax/min
Спасибо, что навел на путь истинный и вселил уверенность в правильности действий
Безвыходных ситуаций не бывает: DO LOOP WHILE TRUE
-
- Посетитель
- Сообщения: 30
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Москва/Минск
- Контактная информация:
Re: Функция поиска мax/min
Можно просто ввести переменную MaxVal и, если нужно запомнить его позицию, MaxNrec.
if (getfirst SpSopr = tsOk) {
MaxVal := 0;
MaxNrec := 0;
do {
if MaxVal < SpSopr.Kolfact {
MaxVal := SpSopr.Kolfact;
MaxNrec := SpSopr.Nrec }
...
} while (getnext SpSopr = tsOk)
}
if (getfirst SpSopr = tsOk) {
MaxVal := 0;
MaxNrec := 0;
do {
if MaxVal < SpSopr.Kolfact {
MaxVal := SpSopr.Kolfact;
MaxNrec := SpSopr.Nrec }
...
} while (getnext SpSopr = tsOk)
}
-
- Местный житель
- Сообщения: 291
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: С-Петербург
- Контактная информация:
Re: Функция поиска мax/min
И то верно. Еще в школе такие штуки изучают
То что раньше понаписал горе от ума называется.
То что раньше понаписал горе от ума называется.
Безвыходных ситуаций не бывает: DO LOOP WHILE TRUE
-
- На пенсии
- Сообщения: 797
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: г. Тюмень
- Контактная информация:
Re: Функция поиска мax/min
Самое прикольное, что есть у нас книжка такая "Интерактивная среда SQL версия 1.1" от АО "Новый Атлант" НТО "ТОП-СОФТ" от 1994 г. В анотации сказано: "... Для работы необходимо операционная система MS DOS версии 3.3 и старше, BTrieve версии 5.0, 5.10, 5.15, Turbo Pascal версии 7.0 и старше.".
Так вот там есть и MIN и MAX, а так же AVG, SUM.
;D
Так вот там есть и MIN и MAX, а так же AVG, SUM.
;D
Жду выхода Вселенная 2.12!
-
- Местный житель
- Сообщения: 291
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: С-Петербург
- Контактная информация:
Re: Функция поиска мax/min
Наверное удалили за не надобностью. А то слишком все просто будет.
Безвыходных ситуаций не бывает: DO LOOP WHILE TRUE
Re: Функция поиска мax/min
Конкретно для Бар-кода:
BarKodtmp:= MaskMC.kGroupMC + GetLastNumD__(44,MaskMC.kGroupMC,wGetTune('FN.BkLen'));
BarKodtmp:= MaskMC.kGroupMC + GetLastNumD__(44,MaskMC.kGroupMC,wGetTune('FN.BkLen'));
-
- Абориген
- Сообщения: 943
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: External Developer
- Контактная информация:
Re: Функция поиска мax/min
Ребят, не путайте котлеты и отбивные.
Вышеописанные функции - часть агрегатных ф-ий, применяемых в ARD-отчетах с SQL-запросами...
Юзаются только там, так же как и GroupBy.
Неприменимы в обычных конструкциях запросов.
Вышеописанные функции - часть агрегатных ф-ий, применяемых в ARD-отчетах с SQL-запросами...
Юзаются только там, так же как и GroupBy.
Неприменимы в обычных конструкциях запросов.