Форум: "Базы";
Текущий архив: 2002.04.25;
Скачать: [xml.tar.bz2];
ВнизЯзыковые драйверы в BDE Найти похожие ветки
← →
Андрей Брусов (2002-04-04 09:13) [0]Всем привет! Подскажите как програмно сменить языковой драйвер в BDE. Или как сделать так, чтобы BDE устанавливался на новый компьютер сразу с нужными языками, например: dBASE RUS cp 866, а то по умолчанию там забит ANSII. Чтобы клиенту не приходилось самому настраивать BDE.
И второе, как все-таки настроить Database Desktop, чтобы вместо абракадабры был русский алфавит, чего только не пробовал, ничег не помогает. Заранее благодарен.
← →
deleon (2002-04-04 09:50) [1]В данном случае очень пригодится компонент TBDEConfig, который позволяет в Run-Time настраивать любые параметры BDE, доступные из BDE Administrator. Взять его можно здесь:
http://www.dbwork.kuban.ru/download/degisydb.zip
← →
Mike S (2002-04-04 09:59) [2]List.Values["LANGDRIVER"] := "Pdox ANSI Cyrillic";
Session.ModifyAlias(AliasName, List);
← →
deleon (2002-04-04 10:08) [3]И еще, попробуй вместо Database Desktop -> Database Workshop, функциональность намного выше чем у первого и проблем с кодировкой не возникает!
http://www.dbwork.kuban.ru
← →
Андрей Брусов (2002-04-04 11:10) [4]Скачал компонент. Установить не получается. Не находит файл с расширением .inc
Неужели нет других путей? Алиасами BDE я не пользуюсь.
← →
sniknik (2002-04-04 11:23) [5]кроме установок в BDE драйвер в таблице прописывается попробуй его изменить.
procedure ChangeLangDriver(DatabaseName, TableName, LDName: string);
var
TblExt: string;
Database: TDatabase;
TblDesc: CRTblDesc;
OptDesc: FLDDesc;
OptData: array [0..250] of Char;
Cur: hDBICur;
Rec: CFGDesc;
begin
if (TableName="") or (LDName="") then raise Exception.Create("Unknown TableName or LDName");
Database:=Session.OpenDatabase(DatabaseName);
try
if Database.IsSQLBased then raise Exception.Create("Function ChangeLangDriver working only with dBase or Paradox tables");
FillChar(OptDesc, SizeOf(OptDesc), #0);
FillChar(TblDesc, SizeOf(TblDesc), #0);
StrCopy(OptDesc.szName, "LANGDRIVER");
OptDesc.iLen:=Length(LDName)+1;
with TblDesc do begin
StrPCopy(szTblName, TableName);
TblExt:=UpperCase(ExtractFileExt(TableName));
if TblExt="DBF" then StrCopy(szTblType, szDbase)
else if TblExt=".DB" then StrCopy(szTblType, szParadox)
else begin
AnsiToOEM(StrPCopy(OptData, DatabaseName), OptData);
if DbiOpenCfgInfoList(nil, dbiREADONLY, cfgPersistent, StrPCopy(OptData, "\DATABASES\"+StrPas(OptData)+"\DB INFO\"),Cur)<>DBIERR_NONE
then raise Exception.Create("Unknown table type");
try
while DbiGetNextRecord(Cur, dbiNOLOCK, @Rec, nil)<>DBIERR_EOF do
if StrComp(Rec.szNodeName, "DEFAULT DRIVER")=0 then begin
StrCopy(szTblType, Rec.szValue);
Break;
end;
finally
Check(DbiCloseCursor(Cur));
end;
end;
iOptParams:=1;
pfldOptParams:=@OptDesc;
pOptData:=@OptData;
end;
StrPCopy(OptData, LDName);
Check(DbiDoRestructure(Database.Handle, 1, @TblDesc, nil,nil, nil, False));
finally
Session.CloseDatabase(Database);
end;
end;
вызов
ChangeLangDriver("D:\", "CASH005.DB", "cyrr");
для dbf
ChangeLangDriver("D:\", "CASH005.DBF", "db866ru0");
← →
deleon (2002-04-04 11:57) [6]10000 извинений!!!
По спешке забыл включить в пакет DegisyDb.inc
Теперь все в порядке:
http://www.dbwork.kuban.ru/download/degisydb.zip
← →
Андрей Брусов (2002-04-04 16:01) [7]Спасибо за компонент, установил. С BDEConfig все нормально, а вот BDEInfo.UpdateInfo почему-то не срабатывает. В чем дело?
← →
deleon (2002-04-04 16:04) [8]Сейчас проверю, а где не срабатывает в Design-Time или Run-Time,
может ничего не изменялось с предыдущего апдэйта, вот и кажется что не работает?
← →
deleon (2002-04-04 16:08) [9]Update info работает, только это происходит незаметно, тк вероятно не изменилось ни количество сессий, ни количество пользователей и т.д.
← →
Андрей Брусов (2002-04-04 16:10) [10]Поменял все драйверы на "acsii", а Update выдает по прежнему RUS866. На обоих этапах.
Вот код, посмотри:
BdeInfo1.UpdateInfo;
If BdeInfo1.LangDriver <> "dBASE RUS cp866" Then
BdeConfig1.Execute;
← →
deleon (2002-04-04 16:18) [11]BdeInfo выдает язык с которым был инициализирован сам BDE, а не конкретный драйвер (Paradox, dBase), чтобы изменить язык BDE по-умолчанию, необходимо его переинициализировать с другим языком. Собственно langdriver bde ни на что не влияет! Важно какой langdriver стоит у драйвера доступа к СУБД! А BDEConfig в твоем случае устанавливает язык для драйвера доступа к таблицам dBase, чтобы убедиться в том что он его корректно устанавливает, можно посмотреть нужную ветвь при помощи BDE Administrator. Все работает, удачи!
← →
deleon (2002-04-04 16:20) [12]Наверное пора садиться писать статьи по работе BDE, хотя BDE потихоньку сдает позиции ADO :)))
← →
Андрей Брусов (2002-04-04 16:26) [13]Да я понял, что Info берет сведения из раздела SYSTEM/INIT, но как тогда програмно определить драйвер доступа к СУБД. Можно конечно при каждом запуске программы запускать BDEConfig, но зачем если это можно сделать один раз, а потом просто проверять драйвер?
А вообще классная штука, спасибо еще раз.
← →
Lusha (2002-04-04 16:37) [14]>deleon
>...BDE потихоньку сдает позиции ADO
Ой, ли?
← →
deleon (2002-04-04 16:42) [15]Так нужно один раз и навсегда установить драйвер для dBase в этой ветке:
\DRIVERS\DBASE\INIT\LANGDRIVER=db866ru0
← →
Андрей Брусов (2002-04-05 09:19) [16]Сообщение для deleon.
Привет! При запуске приложения на другом компьютере, появилось сообщение о необходимости библиотеки DegisyDb6.bpl
Ее нужно в дистрибутив включать? Или как?
← →
deleon (2002-04-05 09:37) [17]Нет не нужно! Посмотри в свойствах проекта, не стоит-ли галочка использования пакетов? Сейчас я и сам проверю все :)))
← →
deleon (2002-04-05 09:40) [18]Нашел ошибку:
Нужно зайти в опции пакета и установить свойства:
Designtime only и Rebuil as needed.
И перекомпилировать пакет, должно все заработать, а я сейчас обновлю download. Спасибо :)))
← →
Андрей Брусов (2002-04-05 09:55) [19]Тогда еще одна задачка, может это связано с предыдущей, не знаю. В общем на компе с Windows XP, приложение при запуске требует rtl60, расширение не помню. Посмотри если есть возможность.
← →
deleon (2002-04-05 10:00) [20]К сожалению, нет Windows XP...Но думаю это все из предыдущей песни, кстати я обновил download DegisyDb.
← →
Андрей Брусов (2002-04-05 12:08) [21]Нет не из той. Проблема вот в чем. Если строю свой проект без DegisyDb6.dcp (не ставлю галочку в опциях и не добавляю туда пакет), то при компиляции приложения Delphi не находит BdeConfig.dcu, а если строю с пакетами даже с одним DegisyDb6, то при запуске приложения запрашивается rtl60.bpl, хотя она никакого отношения к твоим компонентам не имеет. Что делать?
← →
deleon (2002-04-05 12:27) [22]Пропиши пути к библиотеке, ведь файл BdeConfig.pas есть!
← →
Андрей Брусов (2002-04-05 12:52) [23]Да ни к чему чужие исходники курочить. Может просто при установке компонентов все *.dcu копировать в какой-то доступный дельфийский каталог. Где у Delphi свои *.dcu храняться? Чтобы не подключать дополнительные пакеты. Или это невозможно?
← →
Андрей Брусов (2002-04-05 13:07) [24]В общем получилось. Скопировал bdeConfig.dcu в каталог LIB и все заработало. Слушай, а может я не из того места устанавливал компоненты, может перед установкой весь пакет куда-то надо помещать? Просто раньше никогда не доводилось, обходился тем, что есть.
← →
deleon (2002-04-05 13:58) [25]Я делаю так:
Путь к Delphi: C:\Delphi6\Delphi6\Bin...
Путь к левым компонентам: C:\Delphi6\Adds\...
Копирую файлы DegisyDb сюда:
C:\Delphi6\Adds\DegisyDb\
Затем компилирую и инсталлирую пакет DegisyDb.dpk
И затем прописываю путь к библиотеке в настройках:
C:\Delphi6\Adds\DegisyDb\
-----------------------------------
Все работает :)))
А копировать в Lib чужие dcu не советую, будет бардак :)))
← →
Андрей Брусов (2002-04-06 09:08) [26]Так и сделал. Все работает, большое спасибо. Удачи.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.04.25;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.006 c