Автор | Сообщение |
|
| |
Пост N: 6889
Зарегистрирован: 17.05.05
|
|
Отправлено: 24.07.18 18:45. Заголовок: ADSADT + OEM
Создал Free базу ADT с символьным полем , создал индекс по этому полю. Заполнил данными в OEM. Сортировка получилась не правильная. Первая запись началась с буквы "Ш". Так и должно быть ? PS AdsSetCharType(2, .t.)
|
|
|
Ответов - 12
[только новые]
|
|
|
| постоянный участник
|
Пост N: 801
Зарегистрирован: 13.10.05
|
|
Отправлено: 25.07.18 08:31. Заголовок: Нет не должно Исполь..
Нет не должно Использую local ADS с DBF в OEM кодировке . Но думаю, разница нет с ADT. Посмотри , что у тебя записано в файлах adslocal.cfg У меня цитата: | ANSI_CHAR_SET=Russian ... OEM_CHAR_SET=RUSSIAN |
|
|
|
|
|
| |
Пост N: 6890
Зарегистрирован: 17.05.05
|
|
Отправлено: 25.07.18 08:50. Заголовок: Vlad04 пишет: что у..
Vlad04 пишет: цитата: | что у тебя записано в файлах adslocal.cfg |
| У меня так же. В доке пишут: "Note that ADT tables only use the ANSI collation"
|
|
|
|
| постоянный участник
|
Пост N: 1948
Зарегистрирован: 17.02.12
|
|
Отправлено: 25.07.18 09:52. Заголовок: Dima Со времен S87 ..
Dima Со времен S87 для OEM (3и языка) использую для индексов и подводов ф-ю "правильной" сортировки для "C" полей.
|
|
|
|
| |
Пост N: 6891
Зарегистрирован: 17.05.05
|
|
Отправлено: 25.07.18 09:56. Заголовок: SergKis пишет: подв..
SergKis пишет: цитата: | подводов ф-ю "правильной" сортировки для "C" полей |
| что за функция такая ? самопал ?
|
|
|
|
| постоянный участник
|
Пост N: 1949
Зарегистрирован: 17.02.12
|
|
Отправлено: 25.07.18 10:55. Заголовок: Dima пишет самопал ?..
Dima пишет Да, в clipper была Cишной, сейчас такая Скрытый текст
FUNCTION ELRU( cTxt, nLen, nPos ) LOCAL i, k, n, cTx STATIC a_ELRu_arr If a_ELRu_arr == Nil a_ELRu_arr := array(255) aFill(a_ELRu_arr, chr(254)) cTx := '!#$%&()*+,-./:;<=>?@\^{|}~[]"'+['] n := 32 For i := 1 To n; a_ELRu_arr[ i ] := chr(n) Next For i := 1 To len(cTx) n++ If n == 34 .or. n == 39; n++ EndIf k := asc(subs(cTx, i, 1)) a_ELRu_arr[ k ] := chr(n) Next cTx := '0123456789_AĀАaāаBБbбCČcčВвГгDДdдEĒЕeēеFfGĢЖgģжЗзHhIĪИiīиЙйJjKĶКkķкLĻЛlļл' cTx += 'MМmмNŅНnņнOОoоPПpпRРrрSŠСsšсTТtтUŪУuūуVvWwфФXХxхYyЦцЧчZŽzžШшЩщЪъЫыЬьЭэЮюЯя' For i := 1 To len(cTx) n++ If n == 91 .or. n == 93 .or. n == 96; n++ EndIf k := asc(subs(cTx, i, 1)) a_ELRu_arr[ k ] := chr(n) Next EndIf If cTxt == Nil RETURN a_ELRu_arr Else If ! hb_IsNumeric(nPos); nPos := 1 EndIf If hb_IsNumeric(nLen); cTxt := subs(cTxt, nPos, nLen) EndIf FOR EACH k IN @cTxt n := asc(k) k := a_ELRu_arr[ n ] NEXT EndIf RETURN cTxt
|
|
|
|
|
| |
Пост N: 6892
Зарегистрирован: 17.05.05
|
|
Отправлено: 25.07.18 12:01. Заголовок: SergKis В ADSADT ка..
SergKis В ADSADT как и в самом ADS такой фокус не прокатит.
|
|
|
|
| постоянный участник
|
Пост N: 1950
Зарегистрирован: 17.02.12
|
|
Отправлено: 25.07.18 14:55. Заголовок: Dima Возможно прока..
Dima Возможно прокатит заполнение спец. поля, введенное для индекса и спец. заполнением, для соблюдения сортировки. Т.е. Dos2Ansi или еще кой вариант
|
|
|
|
| |
Пост N: 6893
Зарегистрирован: 17.05.05
|
|
Отправлено: 25.07.18 14:57. Заголовок: SergKis Там косяк н..
SergKis Там косяк не в этом , ADT таблица заполнена данными в OEM , а ADS у меня такое впечатление индекс строит думая что данные в ANSI и получается каша.
|
|
|
|
| постоянный участник
|
Пост N: 1951
Зарегистрирован: 17.02.12
|
|
Отправлено: 25.07.18 15:09. Заголовок: Dima Если читает и ..
Dima Если читает и пишет нормально для oem и проблема в индексе, подсунь поле для индекса в ansi или числах-эквивалентах
|
|
|
|
| |
Пост N: 1291
Зарегистрирован: 20.02.11
|
|
Отправлено: 25.07.18 16:05. Заголовок: Dima пишет: Там кос..
Dima пишет: цитата: | Там косяк не в этом , ADT таблица заполнена данными в OEM , а ADS у меня такое впечатление индекс строит думая что данные в ANSI и получается каша. |
| У ADS есть Advantage ANSI Collation Utility, которая позволяет создавать свои таблицы символов и сортировок. В данном случае это поможет, но возможно позже вылезет еще где. Бороться с подменой ANSI/OEM через доп поля и дополнительные функции - это заранее создавать себе проблемы. Если ADS написал что ADT таблица должна быть в ANSI , то это значит что ANSI кодировка используется : - При выборке / записи в таблице - При индексации - При выполнении SQL запросов ( включая сортировку ORDER BY ) - При операциях FTS - И непонятно где еще Можно последовательно со всем этим бороться ( по мере поступления проблем), а можно перескочить на базу в ANSI кодировке и забыть Если желание перескочить на ADT таблицы твердое , то придется перескакивать и на ANSI. Причин работать с базой именно в OEM , я не вижу Вот тут https://sftserv.ru/help/index.html?install_ads_2.htm как раз и меняют родной CHR на измененный. Ну и как самое простое - проверить установки сервера по OEM и ANSI в обоих случаях должно быть RUSSIAN
|
|
|
|
| |
Пост N: 1295
Зарегистрирован: 20.02.11
|
|
Отправлено: 25.07.18 17:18. Заголовок: Вот тут https://sfts..
|
|
|
|
|
| |
Пост N: 6894
Зарегистрирован: 17.05.05
|
|
Отправлено: 25.07.18 18:08. Заголовок: Haz пишет: Ну и как..
Haz пишет: цитата: | Ну и как самое простое - проверить установки сервера по OEM и ANSI в обоих случаях должно быть RUSSIAN |
| Так и стоит я выше писал. Тему можно считать закрытой...
|
|
|
|