Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.06;
Скачать: CL | DM;

Вниз

Создание базы Interbase с определенной кодировкой   Найти похожие ветки 

 
Grihan   (2004-01-12 09:49) [0]

Создаю базу InterBase в рантайме следующим образом:
ibdbBase.Params.Clear;
ibdbBase.Params.Add("USER "SYSDBA"");
ibdbBase.Params.Add("PASSWORD "masterkey"");
ibdbBase.Params.Add("PAGE_SIZE 4096");
ibdbBase.CreateDatabase;
где
ibdbBase: TIBDatabase;
Мне необходимо создать базу с кодировкой win1251. Подскажите пожалуйста, какой для этого должен быть параметр?


 
Johnmen ©   (2004-01-12 10:08) [1]

lc_ctype=WIN1251


 
Johnmen ©   (2004-01-12 10:16) [2]

А вообще-то у тебя все неправильно.
Сднлай даблклик на IBDatabase и прописывай/смотри...


 
Grihan   (2004-01-12 10:26) [3]

в том то и дело, что если пишу:
Base.Params.Clear;
Base.Params.Add("user_name=SYSDBA");
Base.Params.Add("password=masterkey");
Base.Connected := True;
то это работает только для коннекта, а не для создания.
два раза кликнул на IBDatabase - посмотрел, параметры для коннекта, но все равно попробовал - ошибка, типа логин не тот...
пробовал lc_ctype=WIN1251 - не работает - ошибка...


 
Johnmen ©   (2004-01-12 10:51) [4]

Д, я слегка не про то...:)
Надо так :

USER "SYSDBA"
PASSWORD "masterkey"
PAGE_SIZE 4096
DEFAULT CHARACTER SET WIN1251


 
Grihan   (2004-01-12 10:55) [5]

и так я пробовал - ошибка та же, что и когда задаешь lc_ctype=WIN1251:
"Dynamic SQL error: SQL error code = -104
Token unknown - line 1, char 46
SYSDBA""


 
Johnmen ©   (2004-01-12 11:11) [6]

Должны быть двойные кавычки, а не двойные апострофы...
-> " а не -> ""


 
Sergey13 ©   (2004-01-12 11:17) [7]

ОФ ТОПИК, сори.
Всегда меня занимал вопрос. А зачем создавать базы из программы? Какой в этом глубинный смысл - писать код для одноразовой работы?
Неужели так часто люди пишут аналоги ИБЭксперта (это потому что частенько наблюдаю ветки с сабжем)?


 
Johnmen ©   (2004-01-12 11:35) [8]

>Grihan (12.01.04 10:55)

Ещё одно пояснение. Если диалект 3, то не двойные кавычки, а одиночные апострофы.


 
Grihan   (2004-01-12 11:38) [9]

во-первых, не понял я, где должны быть кавычки?
во-вторых, базы из программы необходимо создавать например вот для чего - на другом конце росиии сидит ламер с базой, которую надо переконвертить, он не умеет пользоваться IBExpert - ом...
возможно и найдется другое решение - не программно, но я считаю, раз мы программисты, то и должны предусмотреть элегантное и простое для пользователя решение. И вообще - это дело принципа! Как то не полюдски - базу одной прогой, конвертация - другой, просмотр - третьей. Нехорошо...


 
Sergey13 ©   (2004-01-12 11:53) [10]

2Grihan (12.01.04 11:38) [9]
Обычно такие вещи делаются через скрипт, который запускается однократно через какой-нить BAT.
А если твой юзер-ламер после месяца работы вдруг "нечаянно" (или евоный "друг" "чаянно" 8-)нажмет на создание базы и похерит месяц-другой своей работы?

>Как то не полюдски - базу одной прогой, конвертация - другой, просмотр - третьей. Нехорошо...
А по моему - только так, и больше никак. Но, это дело вкуса, и я свой офтопик прекращаю. Еще раз - сори.


 
Johnmen ©   (2004-01-12 11:53) [11]

Кавычки для имени пользователя и пароля.


 
Grihan   (2004-01-12 11:54) [12]

а как решить проблему с кавычками? что написать вместо строки
ibdbBase.Params.Add("USER "SYSDBA"");
?


 
Grihan   (2004-01-12 11:58) [13]

спасибо Johnmen - все получилось!


 
Grihan   (2004-01-12 12:11) [14]

ну блин, теперь другая проблема:
ibtDicti.Active := False;
ibtDicti.TableName := "DICTI";
ibtDicti.FieldDefs.Clear;
ibtDicti.FieldDefs.Add("ISN", ftInteger, 0, True);
ibtDicti.FieldDefs.Add("PARISN", ftInteger, 0, True);
ibtDicti.FieldDefs.Add("SNAME", ftString, 15, False);
ibtDicti.FieldDefs.Add("FNAME", ftString, 15, False);
ibtDicti.IndexDefs.Clear;
ibtDicti.IndexDefs.Add("", "ISN", [ixPrimary, ixUnique]);
ibtDicti.AppendRecord([1, 0, "Адреса", "Типы адресов"]);
после последней строчки вылиться, хотя раньше, до указания кодировка все работало
где
ibtDicti: TIBTable;


 
Grihan   (2004-01-12 12:14) [15]

ibtDicti.CreateTable;
ibtDicti.Open;
там тоже есть


 
Johnmen ©   (2004-01-12 12:33) [16]

>Grihan

Хочешь, следуй, не хочешь - не следуй, но вот совет:
Полностью откажись от TIBTable, как от атавизма.
Используй TIBDataSet !


 
Grihan   (2004-01-12 13:22) [17]

да и при использовании и TIBSQL возникает та же ошибка. Я проверил, строчки на английском он TIBTable вставляет нормально. А на русском и TIBSQL валиться.


 
Grihan   (2004-01-12 13:24) [18]

Блин, я лоханулся - при создании указал кодировку 1251, а при коннекте 1252 - вот все а валилось...


 
Vlad ©   (2004-01-12 13:28) [19]

Grihan, признавайся, откудова структуру таблицы DICTI стырил ? :-)



Страницы: 1 вся ветка

Текущий архив: 2004.02.06;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.021 c
3-16151
Lider
2004-01-14 20:14
2004.02.06
Как получить возвращаемое значение SQL сервером


1-16389
Ренат
2004-01-23 16:38
2004.02.06
Динамическое создание TQRDbText в отчете


1-16318
Darkwing
2004-01-25 13:55
2004.02.06
Процедура неправильно принимает динамический массив.


1-16329
CyberFreak
2004-01-24 22:23
2004.02.06
Incompatible types: regular procedure and method pointer


8-16539
nester
2003-10-05 16:18
2004.02.06
Как сохранить TImage в gif?