Страница 1 из 1

Функция поиска мax/min

Добавлено: 13 янв 2005, 18:37
Johny
Собственно вот и не могу найти никакой функции для поиска max/min элемента столбца таблицы.

Просто хочу придумать что-то для автоматического формирования баркода при импорте МЦ в KATMC.
Да и вообще такая функция не помешала бы.
Желательно чтобы можно было накладывать дополнительные условия. Например выбрать только те МЦ, которые относятся к определенной группе, а там найти максимум.
Думал вот вариант сделать временную таблицу запросом с нужными ограничениями, отсортировать ее, взять последний элемент, а потом грохнуть таблицу. Но че-то как-то не супер красиво .`)

КОроче есть хотя бы простая ф-я поиска таких эл-тов?

Re: Функция поиска мax/min

Добавлено: 13 янв 2005, 19:17
Deinis
Если ты хочешь сделать это LOT-ом, то не получится. Думаю, придется писать свой фейс.

Re: Функция поиска мax/min

Добавлено: 13 янв 2005, 19:37
Johny
Про lot речи не идет. Есть свой фейс для импорта. Там всякие вопросы по пути пользователю задаются, типа выберите файл и тп. Так вот в этом файле хранятся МЦ, для которых надо сформировать новые баркоды, причем чтобы они не дублировались.

Но функция нужна не только для данного случая. Вообще для меня это полезная вещица.

Re: Функция поиска мax/min

Добавлено: 14 янв 2005, 06:17
IgorA
Непонятно, зачем нужна временная таблица?
Делаем нужный запрос, и встаем на последнюю запись.
И ничего другого здесь не получится. Разве что через ODBC выполнить запрос select max(поле) from .....

Re: Функция поиска мax/min

Добавлено: 14 янв 2005, 10:25
Johny
буду пробовать запросом, хотя пока еще не понял как.
А вот вариант с ODBC интересен. Просто даже не в рамках данной задачи, а просто.
То есть через вип можно обращаться к объектам ODBC? А где это описано?

Re: Функция поиска мax/min

Добавлено: 14 янв 2005, 11:30
Johny
Не, чего то с запросом не очень получается, написал вот такую конструкцию:

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.

Но чего-то он а кажется не оптимальная... Или что имелось ввиду под запросом? Как писать?

Re: Функция поиска мax/min

Добавлено: 14 янв 2005, 12:38
IgorA
Именно это я и имел ввиду. По другому и быть не может. Даже если и есть, в Атлантисе, какая то ф-ция, то она делает тоже самое.
А про ODBC, я это для примера сказал(дескать есть в нормальном SQL-ле агрегатные ф-ции.)

Re: Функция поиска мax/min

Добавлено: 14 янв 2005, 12:59
Johny
Спасибо, что навел на путь истинный и вселил уверенность в правильности действий :)

Re: Функция поиска мax/min

Добавлено: 15 янв 2005, 13:40
Priest Geo
Можно просто ввести переменную 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)
}

Re: Функция поиска мax/min

Добавлено: 17 янв 2005, 11:45
Johny
И то верно. Еще в школе такие штуки изучают :D
То что раньше понаписал горе от ума называется.

Re: Функция поиска мax/min

Добавлено: 17 янв 2005, 12:49
Max_Fin
Самое прикольное, что есть у нас книжка такая "Интерактивная среда SQL версия 1.1" от АО "Новый Атлант" НТО "ТОП-СОФТ" от 1994 г. В анотации сказано: "... Для работы необходимо операционная система MS DOS версии 3.3 и старше, BTrieve версии 5.0, 5.10, 5.15, Turbo Pascal версии 7.0 и старше.".
Так вот там есть и MIN и MAX, а так же AVG, SUM.
;D

Re: Функция поиска мax/min

Добавлено: 17 янв 2005, 13:22
Johny
Наверное удалили за не надобностью. А то слишком все просто будет.

Re: Функция поиска мax/min

Добавлено: 17 янв 2005, 13:50
Hass
Конкретно для Бар-кода:
BarKodtmp:= MaskMC.kGroupMC + GetLastNumD__(44,MaskMC.kGroupMC,wGetTune('FN.BkLen'));

Re: Функция поиска мax/min

Добавлено: 26 янв 2005, 10:57
Maverick
Ребят, не путайте котлеты и отбивные.
Вышеописанные функции - часть агрегатных ф-ий, применяемых в ARD-отчетах с SQL-запросами...
Юзаются только там, так же как и GroupBy.
Неприменимы в обычных конструкциях запросов.