On-line: PSP, гостей 3. Всего: 4 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 1977
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.01.12 15:45. Заголовок: Сортировка по алфавиту ???


Всем привет.
Постановка задачи такая:
Есть справочник-улиц (street.dbf) типа:
Kstreet - Street
1 - Махалина ул.
2 - Федорова ул.
.....
990 - Алтуфьевское шоссе
.....

В основной базе "списка адресов" (допустим dogovor.dbf) записывается код улицы Kstreet.
При выборке из базы (использую условный индекс) выводиться нужный мне список.
Задаю сортировку по коду улицы (Kstreet). Получаю отсортированный список не по алфавиту улиц.

А как решить вопрос с сортировкой по алфавиту базы (таблицы) "списка адресов" ?
Чтобы список показывался по алфавиту ???



Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 57 , стр: 1 2 3 All [только новые]


постоянный участник




Пост N: 1989
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 07.01.12 18:44. Заголовок: Петр пишет: Предлож..


Петр пишет:

 цитата:
Предложение WHILE не сохраняется в индексном файле


Спасибо....

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2785
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 08.04.13 13:45. Заголовок: Привет всем ! Столк..


Привет всем !

Столкнулся с такой проблемой - в базе есть поле НОМЕР_ДОМА ( С 5,0 )
Допустим список домов "1", "2", "3", "17в", "15", "11" и т.д.

При сортировке получаю ерунду
1
11
15
17в
2
3

Как бы правильно отсортировать это поле, чтобы дома правильно стояли ?
Можно конечно и через 2 поля (сделать разборку поля НОМЕР_ДОМА) - но не желательно...

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 2960
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 08.04.13 14:00. Заголовок: попробуй PADL(твой к..


попробуй PADL(твой ключ,длина,"0")

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2786
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 08.04.13 14:11. Заголовок: Dima пишет: попробу..


Dima пишет:

 цитата:
попробуй PADL(твой ключ,длина,"0")


А как быть с 17в ?
У меня таких домов очень много 58а, 58б, 19а и т.д. .....

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 2961
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 08.04.13 14:25. Заголовок: Andrey пишет: А как..


Andrey пишет:

 цитата:
А как быть с 17в ?


А куда он встал при такой сортировке с padl ?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 92
Зарегистрирован: 19.05.05
ссылка на сообщение  Отправлено: 08.04.13 16:01. Заголовок: Я думаю, где-то в 3-..


Я думаю, где-то в 3-х значные номера домов. Очевидно здесь в лоб PADL нельзя использовать.
Необходим анализ, если последний символ номера буква - PADL, иначе к номеру в конце добавить пробел, тогда сортировка будет правильная

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 32
Зарегистрирован: 24.02.11
ссылка на сообщение  Отправлено: 08.04.13 16:34. Заголовок: index on str(val(dom..


index on str(val(dom))+dom

красиво отрабатывает, в том числе и штучки типа 10/1, 10-1.

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 08.04.13 21:13. Заголовок: PADL(val(charonly('0123456789',dom)),5,'0')+charrem('0123456789',dom)


.....
index on fdom() to test
....
Function fdom()
Static cifr:='0123456789'
return PADL(val(charonly(cifr,dom)),5,'0')+charrem(cifr,dom)


Спасибо: 0 
Цитата Ответить
постоянный участник




Пост N: 2788
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 08.04.13 23:04. Заголовок: vvv пишет: index on..


vvv пишет:

 цитата:
index on str(val(dom))+dom

красиво отрабатывает, в том числе и штучки типа 10/1, 10-1.



Спасибо БОЛЬШОЕ !
Это самое изящное решение проблемы !

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2790
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 10.04.13 19:49. Заголовок: vvv пишет: index on..


vvv пишет:

 цитата:
index on str(val(dom))+dom

красиво отрабатывает, в том числе и штучки типа 10/1, 10-1.



Что-то не правильно сортирует !
9
11
12
....
16Б
...
89А
....
97
97К
100
100
100
102Б
102Б
102Б
16
13
13
19/2
19/2
73
11

11

Как нужно делать тогда ?


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2791
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 10.04.13 19:57. Заголовок: Пардон, извиняюсь.....


Пардон, извиняюсь...
Все правильно сортирует, там еще улица в сортировке присутствует !

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5466
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 04.08.17 20:38. Заголовок: Pasha пишет: Вместо..


Pasha пишет:

 цитата:
Вместо KSTREET поставить STREET->STREET
и сделать set relation, как я написал


От set relation в МиниГуи пришлось отказаться.
Поставил спец.функцию показа - Say_Dbf( (cAlias)->KSTREET, "STREET", "STREET" )
Как теперь сделать сортировку столбца/колонки по улице в алфавитном порядке ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6524
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 04.08.17 21:31. Заголовок: Andrey пишет: Как т..


Andrey пишет:

 цитата:
Как теперь сделать сортировку столбца/колонки по улице в алфавитном порядке ?


По индексу однако или юзать что то свое в плане set relation , и да МиниГуи тут не при чем
Andrey пишет:

 цитата:
Поставил спец.функцию показа - Say_Dbf


Телепаты уже в пути

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5468
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.08.17 16:24. Заголовок: Dima пишет: юзать ч..


Dima пишет:

 цитата:
юзать что то свое в плане set relation , и да МиниГуи тут не при чем


МиниГуи здесь ещё как причем !
Я уже писал об этом: при использовании set relation в Tsbrowse неправильно отображаются записи,
при использовании(показе) ДВУХ Tsbrowse.
Если убрать set relation то всё отлично.

Dima пишет:

 цитата:
Телепаты уже в пути



Постановка задачи такая:
Есть справочник-улиц (street.dbf) типа:
Kstreet - Street
1 - Махалина ул.
2 - Федорова ул.
.....
990 - Алтуфьевское шоссе
.....

В основной базе "списка адресов" (допустим TEST.dbf) записывается код улицы Kstreet.
Создаю индекс по коду улицы (Kstreet) в основной базе. Получаю отсортированный список не по алфавиту улиц, а по коду.

Как решить вопрос с сортировкой по алфавиту базы (таблицы) "списка адресов", чтобы
список показывался по алфавиту ???





Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1121
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 06.08.17 17:24. Заголовок: Andrey пишет: Мини..


Andrey пишет:

 цитата:

МиниГуи здесь ещё как причем


Андрей, минигуи, а именно TSbrows отражает в ячейке то что вернет блок выборки.
Тот что по умолчанию у меня терял алиас ( мож сейчас все нормально, давно использую свой)
Но то что минигуи не может влиять на работу драйвера баз данных и на его установки по set relation это точно.
Так что проблема не в минигуи, а в том что от него просят.
Уверен если скормить минигуи свой правильный блок то с реляцией проблем не возникнет

По второму вопросу- делай локальный индекс в выражение которого по коду возвращает название улицы, или загоняй массив что нужно и сортируй как хочется или используй SQL и получая склейку через JOIN и ORDER BY показывай уже отсортированно.

Самый простой - это по массиву или mem: базе, заполнил проиндексировал и показывай.


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 726
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 07.08.17 11:44. Заголовок: Andrey Я делаю так..


Andrey
Я делаю так
База1 и БАЗА2 СОЕДИнены set relation .
Далее создаю индекс, который не должен автоматически открываться ( в другое место его помещаю)
В индексное выражение включаю поля Базы2.

 цитата:
INDEX ON UPPER(Fam+IM+Ot+dTOS(kLIENT->bIRTH_DATE) ) Tag "ONE" TO (Par1+"TempIndex.cdx")



Поля Базы2 показываю в Бровсе1 совместно с полями Базы1. Двух Tsbrowse здесь не должно быть
всё Ок


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5471
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 07.08.17 13:02. Заголовок: Vlad04 пишет: Я дел..


Vlad04 пишет:

 цитата:
Я делаю так
База1 и БАЗА2 СОЕДИнены set relation .



НЕ МОГУ делать через set relation !!! Уже писал об этом - глючет показ Tsbrowse в МиниГуи (как исправить не знаю).
Нужно найти решение без set relation.

Можно сделать вариант с пере открытием базы улиц, но мне это не подходит.
Я все базы открываю при запуске задачи.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 727
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 07.08.17 17:07. Заголовок: а пример небольшой ..


а пример небольшой ?



































































































Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5472
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 07.08.17 18:10. Заголовок: Vlad04 пишет: а при..


Vlad04 пишет:

 цитата:
а пример небольшой ?


Вот пример - https://cloud.mail.ru/public/LrPi/piq8pzAWS
Создание индекса делать в util_Use.prg строка 32

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1122
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 07.08.17 20:22. Заголовок: Andrey пишет: Вот п..


Andrey пишет:

 цитата:
Вот пример


Ответил в почту

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 57 , стр: 1 2 3 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 203
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет