powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Alpabet
15 сообщений из 15, страница 1 из 1
Alpabet
    #33455707
Guest0001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kak mojno sortirovat table po Russkomu alfavitu?
...
Рейтинг: 0 / 0
Alpabet
    #33455811
Burn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А какие проблемы для русского? СМоздавай индекс по нужному полю и все будет отсортировано правильно. Единственая проблема - буква Ё. Но ее можно запретить использовать (все равно ее на компе никто не юзает).
Но если не устраевает, то делается дополнительное поле куда помещают реальные порядковые номера букв и уже по ней индексируют - особено такое решение актуально для национальных языков, содержащих кроме кирилицы всякие дополнительные буквы, размазаные по всей кодовой таблице. Тот же украинский
...
Рейтинг: 0 / 0
Alpabet
    #33455979
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Индекс запоминает режим сортировки (SET COLLATE) при котором он был создан. Поэтому, если по каким-либо причинам не устраивает сортировка по выражению UPPER(MyField) или LOWER(MyField) (например, из-за наличия буквы Ё), то можно создать индекс в нужной сортировке:

Код: plaintext
1.
2.
3.
4.
select MyTab
SET COLLATE TO RUSSIAN
INDEX ON MyField TAG MyFld_Rus
SET COLLATE TO MACHINE

Работать все-таки лучше в "стандартной" машинной сортировке.
...
Рейтинг: 0 / 0
Alpabet
    #33456075
Guest0001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Doroqie Fox proqramisti mne nujno kod kotoriy poderjival i bukvu "Ё" pochemu?.U menya druq est on predleqol kod kotoroe i poderjivaet bukvu "Ё" . A interesno vashe mnenie osebenno Bladimira E i Sergey Ch.
...
Рейтинг: 0 / 0
Alpabet
    #33456231
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Guest0001Doroqie Fox proqramisti mne nujno kod kotoriy poderjival i bukvu "Ё" pochemu?.U menya druq est on predleqol kod kotoroe i poderjivaet bukvu "Ё" . A interesno vashe mnenie osebenno Bladimira E i Sergey Ch.
Вообще-то Владимир Вам показал решение проблемы в своем предыдущем сообщении... Там буква "Ё" как маленькая так и большая находятся на правильном месте По крайней мере в VFP 8.0 SP1...
Единственно, что я привык писать строку построения индексов всегда явным образом:
Код: plaintext
INDEX ON MyField TAG MyFld_Rus COLLATE 'RUSSIAN'
Хотя это не Важно, если Вы сделали before
Код: plaintext
SET COLLATE TO 'RUSSIAN'

Good luck!
...
Рейтинг: 0 / 0
Alpabet
    #33456345
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Guest0001!

Собственно Владимир и предложил "код", который "поддерживает букву Ё". А
заодно и все прочие буквы национальных кириллических алфавитов (Украинского,
Белорусского и других).
Внутренне использование SET COLLATE TO RUSSIAN выглядит как "преобразование"
каждого символа в некоторый абстрактный код - а уже эти "коды" при
упорядочивании по ним дают корректную последовательность сортировки -
учитывая "равенство" прописных и строчных букв, а также учитывая все
дополнительные кириллические буквы - не только ё :) Можно конечно и "руками"
сделать подобное (и даже лучше - "сэкономив" на размере индекса - не
используя по 2 байта на каждый символ как делает COLLATION=RUSSIAN из-за
всего одной буквы :) ) - благо CHRTRAN() в фоксе имеется.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Alpabet
    #33456669
Guest0001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
A esli u menya Fox6 chto mne delat?
...
Рейтинг: 0 / 0
Alpabet
    #33456699
Burn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>A esli u menya Fox6 chto mne delat?
А SET COLLATE TO RUSSIAN для 6-ки никто не отнимал
...
Рейтинг: 0 / 0
Alpabet
    #33456761
Guest0001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
A tam je net "SET COLLATE TO RUSSIAN"
...
Рейтинг: 0 / 0
Alpabet
    #33456961
Burn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зато есть SET COLLATE TO "RUSSIAN"
...
Рейтинг: 0 / 0
Alpabet
    #33457067
Guest0001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
i tam net takoy funktsii SET COLLATE TO "RUSSIAN". Mojet ti etoqo imeesh SET COLLATE TO "SWEFIN".
A razve Fox 6 poderjivaet SET COLLATE TO "RUSSIAN".
...
Рейтинг: 0 / 0
Alpabet
    #33457146
Burn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>i tam net takoy funktsii SET COLLATE TO "RUSSIAN".
Это хелпе нету - его то писали не для русских
А во если открыть пунк меню Options, закладку Data, комбобокс Collating sequence то RUSSIAN там присуствует

>A razve Fox 6 poderjivaet SET COLLATE TO "RUSSIAN".
А самому попробовать?
...
Рейтинг: 0 / 0
Alpabet
    #33457277
FoxFox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mojet tak poprobuesh

SELECT MyTable
INDEX ON CHRTRAN(name,"АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ" ,"1234567ABCDEFGHIJKLMNOPQRSTUVWXYZ") TO idAlp
Go Top
Thisform.Refresh
...
Рейтинг: 0 / 0
Alpabet
    #33457530
FoxFox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
A tochnee tak:

SELECT MyTable

INDEX on CHRTRAN(cFieldName,"АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ;
абвгдеёжзийклмнопрстуфхцчшщъыьэюя";
,"1234567ABCDEFGHIJKLMNOPQRSTUVWXYZ;
[\]^_`abcdefghijklmnopqrstuvwxyz{") TO alp
GO TOP
...
Рейтинг: 0 / 0
Alpabet
    #33458461
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Guest0001!

Чтобы можно было установить Collate = Russian среда должна работать с
Codepage=1251 - как этого добиться - написано в FAQ на foxclub.ru например.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Alpabet
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]