15.10.2004, 11:31 | #1 |
Участник
|
maxOf
Проблема простая, но не знаю как ее решить.
Есть таблица Table1 с полем str Pole. Надо найти максимум по этому полю. Select max(Pole) from Tabel1; Работает не правильно, '9' > '10'. Функции преобразования типов в селекте в Х++ не используются. Как быть? |
|
15.10.2004, 11:41 | #2 |
Модератор
|
9 > 10 потому что у Вас выравнивание по левому краю. Если у Вас SQL, то ему довольно сложно искать MAX от текстового поля.
|
|
16.10.2004, 09:38 | #3 |
Участник
|
Насколько я понял поле 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 |
Модератор
|
А что больше: 01 или А1? или 1А?
По идее, СУБД сама может сравнивать строки, дажи символьные, так что нет смысла разруливать это кодом. Остается одна загадка - а зачем искать максимальное значение по СТРОКОВОМУ полу? Сделайте его числовым - и все будет ок. Или я не понял глубинного смысла Кто-то тут уже пытался лихо суммировать номера счетов С Уважением, Георгий. |
|
17.10.2004, 01:08 | #5 |
Участник
|
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 |
Участник
|
Re: Re: maxOf
Цитата:
Изначально опубликовано Alex P
Интересно, в Аксапте это можно проделать? В нумераторах использовать префикс вида док##### Тогда номера будут генерироваться в виде док00001, док00002, ... док00009, док00010, док00011... Что в результате даст нужную сортировку. http://axapta.mazzy.ru/hints/adjustment/ |
|
|
Похожие темы | ||||
Тема | Ответов | |||
Запрос | 6 | |||
Можно ли в одном select`e получить maxof и minof по одному полю? | 2 |
|