![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание базы Interbase с определенной кодировкой [D6, D7, IB6.x]
Grihan © (2004-01-12 09:49:00)
Создаю базу 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. Подскажите пожалуйста, какой для этого должен быть параметр?
Vlad (2004-01-12 13:28:00) [1]
Grihan, признавайся, откудова структуру таблицы DICTI стырил ? :-)
Grihan (2004-01-12 13:24:00) [2]
Блин, я лоханулся - при создании указал кодировку 1251, а при коннекте 1252 - вот все а валилось...
Grihan (2004-01-12 13:22:00) [3]
да и при использовании и TIBSQL возникает та же ошибка. Я проверил, строчки на английском он TIBTable вставляет нормально. А на русском и TIBSQL валиться.
Johnmen (2004-01-12 12:33:00) [4]
>Grihan
Хочешь, следуй, не хочешь - не следуй, но вот совет:
Полностью откажисьот TIBTable, как от атавизма.
Используй TIBDataSet !
Grihan (2004-01-12 12:14:00) [5]
ibtDicti.CreateTable;
ibtDicti.Open;
там тоже есть
Grihan (2004-01-12 12:11:00) [6]
ну блин, теперь другая проблема:
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 11:58:00) [7]
спасибо Johnmen - все получилось!
Grihan (2004-01-12 11:54:00) [8]
а как решить проблему с кавычками? что написать вместо строки
ibdbBase.Params.Add("USER "SYSDBA"");
?
Sergey13 (2004-01-12 11:53:00) [9]
2Grihan (12.01.04 11:38) [9]
Обычно такие вещи делаются через скрипт, который запускается однократно через какой-нить BAT.
А если твой юзер-ламер после месяца работы вдруг "нечаянно" (или евоный "друг" "чаянно" 8-)нажмет на создание базы и похерит месяц-другой своей работы?
>Как то не полюдски - базу одной прогой, конвертация - другой, просмотр - третьей. Нехорошо...
А по моему - только так, и больше никак. Но, это дело вкуса, и я свой офтопик прекращаю. Еще раз - сори.
Johnmen (2004-01-12 11:53:00) [10]
Кавычки для имени пользователя и пароля.
Grihan (2004-01-12 11:38:00) [11]
во-первых, не понял я, где должны быть кавычки?
во-вторых, базы из программы необходимо создавать например вот для чего - на другом конце росиии сидит ламер с базой, которую надо переконвертить, он не умеет пользоваться IBExpert - ом...
возможно и найдется другое решение - не программно, но я считаю, раз мы программисты, то и должны предусмотреть элегантное и простое для пользователя решение. И вообще - это дело принципа! Как то не полюдски - базу одной прогой, конвертация - другой, просмотр - третьей. Нехорошо...
Johnmen (2004-01-12 11:35:00) [12]
>Grihan (12.01.04 10:55)
Ещё одно пояснение. Если диалект 3, то не двойные кавычки, а одиночные апострофы.
Sergey13 (2004-01-12 11:17:00) [13]
ОФ ТОПИК, сори.
Всегда меня занимал вопрос. А зачем создавать базы из программы? Какой в этом глубинный смысл - писать код для одноразовой работы?
Неужели так часто люди пишут аналоги ИБЭксперта (это потому что частенько наблюдаю ветки с сабжем)?
Johnmen (2004-01-12 11:11:00) [14]
Должны быть двойные кавычки, а не двойные апострофы...
->"а не ->""
Grihan (2004-01-12 10:55:00) [15]
и так я пробовал - ошибка та же, что и когда задаешь lc_ctype=WIN1251:
"Dynamic SQL error: SQL error code = -104
Token unknown - line 1, char 46
SYSDBA""
Johnmen (2004-01-12 10:51:00) [16]
Д, я слегка не про то...:)
Надо так :
USER "SYSDBA"
PASSWORD "masterkey"
PAGE_SIZE 4096
DEFAULT CHARACTER SET WIN1251
Grihan (2004-01-12 10:26:00) [17]
в том то и дело, что если пишу:
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:16:00) [18]
А вообще-то у тебя все неправильно.
Сднлай даблклик на IBDatabase и прописывай/смотри...
Johnmen (2004-01-12 10:08:00) [19]
lc_ctype=WIN1251