Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Interbase и русские символы (работа UPPER)


filya ©   (2003-08-06 18:29:00) 

Сервер firebird 1.0.3.972
делаю таблицу
CREATE TABLE KLIENT (
ID INTEGER NOT NULL,
NAME_KLIENT ( 250)

Сервер firebird 1.0.3.972
делаю таблицу
CREATE TABLE KLIENT (
ID INTEGER NOT NULL,
NAME_KLIENT CHAR(250) CHARACTER SET WIN1251 NOT NULL);
добавляю строку с русскими символами, на запрос
select UPPER(name_klient) from KLIENT
выдает строку как она и забита в нижнем регистре, если кто знает как с этим справится подскажите пожалуйста.
здесь на форуме я нашел подобный вопрос, там советовали установить сервер в директорию 8:3 все так и сделал. еще указать правильный langdriver, но я незнаю что это и как его указать!
Заранее огромное спасибо!


filya   (2003-08-07 15:01:00) [1]

все заработало, я заново создал базу данных и все таблицы, и тогда все заработало.
Огромное спасибо!


Zacho   (2003-08-07 13:46:00) [2]


> filya (07.08.03 13:23)

Ну, тогда не должно такого быть. Проверь еще раз, точно ли у поля NAME_KLIENT charset win1251. Попытайся переподключиться к БД. Кстати, если для поля указан collate, то в запросе collate можно не писать.


filya   (2003-08-07 13:23:00) [3]

да я ее прочитал от корки до корки.
смотри запрос при создании таблицы
CREATE TABLE KLIENT (
ID INTEGER NOT NULL,
NAME_KLIENT ( 500)

да я ее прочитал от корки до корки.
смотри запрос при создании таблицы
CREATE TABLE KLIENT (
ID INTEGER NOT NULL,
NAME_KLIENT VARCHAR(500) CHARACTER SET WIN1251 );
я ее еще в IBExpert поправлял указывал collate PXW_CYRL


Zacho   (2003-08-07 13:19:00) [4]


> filya (07.08.03 13:12)

Какой character set у поля ? Если none, то так и должно быть. Прочитай наконец статью !


filya   (2003-08-07 13:12:00) [5]

я пробовал указывать в параметрах TIBDatabase.Params lc_ctype=WIN1251
, но тогда уже при запросе селект выдает ошибку
cannot transliterate character between character sets


HSolo   (2003-08-07 12:58:00) [6]

Да, верно. В параметрах коннекта укажите

lc_ctype=WIN1251

Где именно указывать - зависит от компонент доступа. В FIBPlus это TpFIBDatabase.DBParams, в IBX - TIBDatabase.Params


Zacho   (2003-08-07 12:57:00) [7]


> filya (07.08.03 12:52)

Какие компоненты доступа ? Если BDE, то LANGDRICER=PdoxANSICyrillic в алиасе или LANGDRICER=ancyr в TDatabase, если IBX - то lc_ctype=win1251 в TIBDatabase.Params
А вообще, тебе уже дали ссылку на статью, в которой все подробно описано - http://www.ibase.ru/devinfo/ibrusfaq.htm, неужели трудно внимательно ее прочитать ?


filya   (2003-08-07 12:52:00) [8]

я так понимаю что при соединении с сервером нужно указывать с какой кодировкой работать, но где это в делфи указать нужно, я что то ненашел?


filya   (2003-08-07 12:49:00) [9]

используя collation все работает с IBExpert, записи добавляются и аппер хорошо работает при использовании
select UPPER(name_klient COLLATE PXW_CYRL) from KLIENT
но вот проблема возникла с делфи, когда я не указывал при создании таблицы character set win1251, то из делфи записи добавлялись нормально, а теперь хрен, пишет что
cannot transliterate character between character sets
но это в том случае если я вношу данные с русскими символами, что теперь делать даже незнаю.


Desdechado   (2003-08-07 11:26:00) [10]

или использовать только большие буквы при записи
или доп поле с большими
или UDF Для этой цели


kaif   (2003-08-06 23:08:00) [11]

Для upper-а collation order еще нужен, а не только character set.


HSolo   (2003-08-06 18:31:00) [12]

http://www.ibase.ru/devinfo/ibrusfaq.htm


Наверх

Титульная страница Поиск, карта сайта Написать письмо