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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.10.2004, 11:31   #1  
Bukovka is offline
Bukovka
Участник
 
8 / 10 (1) +
Регистрация: 19.01.2004
maxOf
Проблема простая, но не знаю как ее решить.

Есть таблица Table1 с полем str Pole.
Надо найти максимум по этому полю.
Select max(Pole) from Tabel1;

Работает не правильно, '9' > '10'.
Функции преобразования типов в селекте в Х++ не используются.
Как быть?
Старый 15.10.2004, 11:41   #2  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
9 > 10 потому что у Вас выравнивание по левому краю. Если у Вас SQL, то ему довольно сложно искать MAX от текстового поля.
Старый 16.10.2004, 09:38   #3  
Miktel is offline
Miktel
Участник
 
17 / 10 (1) +
Регистрация: 13.07.2004
Адрес: Дома
Насколько я понял поле Pole строковое и в этом поле значения - числа, записанные символами. И нужно получить максимальное из чисел. Подойдет такой код:

Table1 table1;
Int maxValue;
;

// в переменной maxValue будем получать максимальное значение
// изначально инициализируем maxValue значением Pole из первой строки

select firstonly table1;
maxValue = str2Int(table1.Pole);

while select table1
{
if (str2int(table1.Pole)>maxValue) maxValue = str2int(table1.Pole);
}
info("Максимальное число = " + int2str(maxValue));
Старый 16.10.2004, 12:15   #4  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
А что больше: 01 или А1? или 1А?

По идее, СУБД сама может сравнивать строки, дажи символьные, так что нет смысла разруливать это кодом. Остается одна загадка - а зачем искать максимальное значение по СТРОКОВОМУ полу? Сделайте его числовым - и все будет ок. Или я не понял глубинного смысла
Кто-то тут уже пытался лихо суммировать номера счетов

С Уважением,
Георгий.
Старый 17.10.2004, 01:08   #5  
Alex P is offline
Alex P
Участник
 
40 / 10 (1) +
Регистрация: 01.10.2004
Re: maxOf
Цитата:
Изначально опубликовано Bukovka
Проблема простая, но не знаю как ее решить.

Есть таблица Table1 с полем str Pole.
Надо найти максимум по этому полю.
Select max(Pole) from Tabel1;

Работает не правильно, '9' > '10'.
Функции преобразования типов в селекте в Х++ не используются.
Как быть?

Как то делал счета-фактуры на Дельфях и была похожая проблема, номера счетов могли быть типа: 100, 100/1, 100/доп, и т.п. А пользователь хотел чтобы по клику на заголовке грида было естественное упорядочивание по целочисленному значению номера счета. Пришлось вводить дополнительное целочисленное поле в базе, по событию ОnChange в поле номера счета прописывать целочисленное значение номера счета, затем перхватывать событие OnClick на заголовке грида и проводить реальное упорядочивание не по текстовому значению номера, а по его целочисленному значению. Интересно, в Аксапте это можно проделать?
Старый 17.10.2004, 21:54   #6  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Re: Re: maxOf
Цитата:
Изначально опубликовано Alex P
Интересно, в Аксапте это можно проделать?
Использовать стандартную функциональность нумераторов.
В нумераторах использовать префикс вида док#####
Тогда номера будут генерироваться в виде док00001, док00002, ... док00009, док00010, док00011...

Что в результате даст нужную сортировку.
http://axapta.mazzy.ru/hints/adjustment/
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Запрос exodus DAX: Программирование 6 08.11.2007 11:01
Можно ли в одном select`e получить maxof и minof по одному полю? ArturK DAX: Программирование 2 28.04.2004 12:28
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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