Interbase 'SET NAMES'

6 отговора 153 прегледа
#1

Interbase 'SET NAMES'

Здравейте имам следния проблем:
Динамично създавам IBDatabase и IBTransaction .

with IBdb do begin
DatabaseName := dbPath;
DefaultTransaction := IBtr;
LoginPrompt := False;
SQLDialect := 3;
with Params do begin
Add('user_name=sysdba');
Add('password=masterkey');
Add('lc_ctype=WIN1251');
end;
Connected := True;
end;
with IBtr do begin
DefaultDatabase := IBdb;
Active := True;
end;


До тук добре, но как мога да задам SET NAMES = WIN1251 преди Connection към базата данни?

Отговор
в отговор на ^_ #2

Re: Interbase 'SET NAMES'

Ти си го задал
Add('lc_ctype=WIN1251');


Set Names e аналогичната инструкция в скриптовете на ISQL

Отговор
в отговор на NDeu #3

Re: Interbase 'SET NAMES'

Да но в този случай UPPER не работи с кирилица.
Ако задам SET NAMES = WIN1251 при CREATE DATABASE или при CONNECT DATABASE в IBExpert - UPPER си работи с кирилица.
Друг въпрос. Как мога в Делфи от Run-time при създаване на база данни за Interbase server да задам DEFAULT CHARACTER SET = WIN1251?
Цялата работа е заради LIKE UPPER('%SomeCyrlStr%').

Отговор
в отговор на ^_ #4

Re: Interbase 'SET NAMES'

В отговор на:

Цялата работа е заради LIKE UPPER('%SomeCyrlStr%')




1. Чети за Collate
2. Не ползвай IB6.0. Аз предпочитам FB1.5
3. Провери за наличието на %InstallDir%\intl\??intl.dll

DEFAULT CHARACTER SET се задава в CREATE DATABASE, но то ти спестява само писането на CHARACTER SET за всяко символно поле/променлива/параметър.

Отговор
в отговор на NDeu #5

Re: Interbase 'SET NAMES'


3. Провери за наличието на %InstallDir%\intl\??intl.dll


Това не ми е ясно защо?

Отговор
в отговор на ^_ #6

Re: Interbase 'SET NAMES'

INTernational Language
Необходим за да работи Collate за неанглийски

Отговор
в отговор на ^_ #7

Re: Interbase 'SET NAMES'

Във Interbase и Firebird 1.0 collate WIN1251 не работи. Трябва да използваш PXWL_CYR. Във Firebird 1.5 го оправиха.

Отговор