Форум: "Базы";
Текущий архив: 2002.08.29;
Скачать: [xml.tar.bz2];
ВнизПомогите разобраться (базы данных). Найти похожие ветки
← →
delphiwhat (2002-08-09 10:33) [0]Извините, что я задаю такой вопрос (наверное ответы уже были),но это очень срочно а я новичОК в этом деле.
Вопрос: Надо создать прогу,которая работает с локальной базой данных и на любом компе (желательно эту базу запаролить и скрыть от любопытных глаз). Сделал с базой от Access(*.mdb) но ее можно очень легко посмотреть. А вот с FoxPro, на своем работает компе, а на других нет - видимо это "alias" или DBE. Сама проблема надо сделать так чтобы на ВСЕХ компах работало без лишних настроек.
ПОЖАЛУЙСТА, объясните мне как это сделать, ПОЖАЛУЙСТА!
← →
ShuraGrp (2002-08-09 10:37) [1]Без BDE с локальной базой никак. Можно только без настройки Alias, если вместо него прописать файл базы. Paradox паролится без проблем.
← →
delphiwhat (2002-08-09 11:08) [2]Спасибо, но все равно у меня ошибка:
Проблема
Пишет на другом компе: Exception EDBEngineError in module PROJECT1.EXE at 0009D0CE.
An Error occurred while attempting to initialize the Borland Database Engine (error $2109)
Сделал я вот что: Default session
- ?Alias
- c:\data.dbf
Расположил DataSource,TTable,DBGride.
Заранее спасибо
← →
elv (2002-08-09 11:09) [3]ShuraGrp © (09.08.02 10:37)
Без BDE с локальной базой никак. Можно только без настройки Alias, если вместо него прописать файл базы. Paradox паролится без проблем.
Ну почему же. Есть и сторонние разработки. Apollo, Titan и др.
← →
delphiwhat (2002-08-09 11:14) [4]Вы меня извините Уважаемые мастера, но я к сожалению пока в этой области не слишком продвинут, Поэтому очень большая просьба объясните как сделать все же такую прогу , чтобы она работала.
СПАСИБО!
← →
elv (2002-08-09 11:16) [5]delphiwhat © (09.08.02 11:08)
An Error occurred while attempting to initialize the Borland
Не смог инициализировать BDE. На машине, на которой запускается твоя программа нет BDE. Способы решения.
Не использовать BDE
Установить BDE
Установить BDE можно по разному.
Запустить инсталляцию.
Устанавливать свою программу с помощь InstallShielda.
Установить ручками.
Эта подборка из эхи поможет тебе
К вопpосу о пеpеносе BDE с пpогpаммой. По-хоpошему нужно готовить дистpибутив
пpогpаммы каким-нибудь инсталлятоpом (Install Shield и дp.). Hо он может
насовать много лишнего и пакет будет толстым.
Для себя я эту пpоблему pешил пpосто. Отобpал методом пpоб и ошибок набоp
необходимых DLL из BDE. В пpогpамме не использовал псевдонимы (alias) BDE.
Результат - несколько DLL копиpуются вместе с пpогpаммой в одну диpектоpию
и все pаботает. е нужно копиpовать конфигуpацию BDE, ключи pеестpа и пpочую
лабуду. Вот этот набоp файлов из BDE 5.1 от Delphi 5 (поддеpживает только
Paradox и Local SQL):
bantam.dll
blw32.dll
idapi32.dll
idbat32.dll
iddr32.dll
idpdx32.dll
idr20009.dll
idsql32.dll
Общий объем 1.9 Мбайт
Если на целевой машине уже есть BDE, то все это копиpовать не надо -
подеpутся -:)
MN> 2.Можно ли сделать так что-бы экзешкик+бд pаботали на дpугом компе
MN> дез BDE?
Легко - не использовать BDE в пpогpамме. ;) Заменители тут подскажут...
Для своей пpогpаммы, использующей паpадокс, я сделал такое pешение:
==== отсель ====
unit U_Init;
Interface
Implementation
Uses Windows, SysUtils, U_Common, Registry;
Var
Buffer : Array[0..MAX_PATH] of Char;
s: String;
Registry : TRegistry;
Const
BLWKey = "SOFTWARE\Borland\BLW32";
initialization
Path := ExtractFilePath(ParamStr(0));
GetEnvironmentVariable("PATH",@Buffer,MAX_PATH+1);
s := ";"+Path+"BDE";
StrCat(@Buffer,PChar(s));
SetEnvironmentVariable("PATH",@Buffer);
Registry := TRegistry.Create;
With Registry Do
try
RootKey := HKEY_LOCAL_MACHINE;
If not KeyExists(BLWKey) then
begin
OpenKey(BLWKey,True);
s := Path+"BDE";
WriteString("BLAPIPATH",s);
WriteString("LOCALE_LIB1",s+"\USA.BLL");
WriteString("LOCALE_LIB2",s+"\OTHER.BLL");
CloseKey;
end;
finally
Registry.Free;
end;
finalization
Registry := TRegistry.Create;
With Registry Do
try
RootKey := HKEY_LOCAL_MACHINE;
OpenKey(BLWKey,False);
s := Path+"BDE";
If ReadString("BLAPIPATH")=s then
begin
CloseKey;
DeleteKey(BLWKey);
end;
finally
Registry.Free;
end;
end.
==== досель ====
Этот юнит пpописывается пеpвым в юзесах пpоекта и BDE должна лежать pядом с
экзешником в каталоге "BDE". Важно, чтобы не в каталоге экзешника!
Еще, конечно, указываются NetFileDir и PrivateDir для Session.
Hо на этом пути тоже лежат гpабли, описанные в хелпе по BDE.
← →
elv (2002-08-09 11:21) [6]- ---начало InstallPrfSt.dpr---
program InstallPrfSt;
{
Программа иллюстрирует, как установить BDE с поддержкой PARADOX 7.0 на "чистой машине" и создать алиас.
Пример использования в качестве простейшего инсталлятора для программы
C:\MyDir\MyProg.exe
1.Создайте каталог C:\MyDir\BDE и скопируйте в него след. файлы:
CHARSET.BLL
OTHER.BLL
IDAPI32.CFG
BLW32.DLL
IDAPI32.DLL
IDBAT32.DLL
IDPDX32.DLL
IDR20009.DLL
IDSQL32.DLL
BDEADMIN.EXE - по вкусу, т.к. необходимым не является.
2.Измените значение константы AliasName на имя необходимого вам алиаса.
3.Откомпиллируйте и запустите эту программу из каталога C:\MyDir.
ВHИМАHИЕ!!! Если на машине уже установлено BDE, то перед экспериментами
сохраните (на всякий случай) след. ключи из реестра:
[HKEY_LOCAL_MACHINE\SOFTWARE\Borland\Database Engine]
и
[HKEY_LOCAL_MACHINE\SOFTWARE\Borland\BLW32].
Замечания, предложения по улучшению приветствуются.
Счастливо,
Константин Кочедыков / kostya@roadtech.saratov.su /
}
{$APPTYPE CONSOLE}
uses
Windows, BDE, Registry;
const
AliasName: String = "PrefStat";
var
R: DBIResult;
Path :String;
procedure WriteString(S1:String);
begin
S1:=S1+#0;
AnsiToOem(@S1[1],@S1[1]);
writeln(S1);
end;
function GetExePath(S1:String):String;
var
I,K :Integer;
S:String;
begin
K:=1;
S:="";
for I:=Length(S1) downto 1 do begin
if S1[I]="\" then begin
K:=I;
Break;
end;
end;
for I:=1 to K-1 do
S:=S+S1[I];
Result:=S;
end;
← →
elv (2002-08-09 11:22) [7]procedure InstallBde;
const
Bor :String = "SOFTWARE\Borland";
var
a:TRegistry;
BPath:String;
begin
BPath:=PATH+"\BDE";
a:=TRegistry.Create;
with a do begin
RootKey:=HKEY_LOCAL_MACHINE;
OpenKey(Bor+"\Database Engine",True);
WriteString("CONFIGFILE01", BPath+"\IDAPI32.CFG");
WriteString("DLLPATH", BPath);
WriteString("RESOURCE",
"0009");
WriteString("SaveConfig", "WIN32");
WriteString("UseCount", "2");
CloseKey;
OpenKey(Bor+"\BLW32",True);
WriteString("BLAPIPATH", BPath);
WriteString("LOCALE_LIB3", BPath+"\OTHER.BLL");
WriteString("LOCALE_LIB4", BPath+"\CHARSET.BLL");
CloseKey;
OpenKey(Bor+"\Database Engine\Settings\SYSTEM\INIT",True);
WriteString("AUTO ODBC", "FALSE");
WriteString("DATA REPOSITORY", "");
WriteString("DEFAULT DRIVER", "PARADOX");
WriteString("LANGDRIVER", "ancyrr");
WriteString("LOCAL SHARE", "FALSE");
WriteString("LOW MEMORY USAGE LIMIT", "32");
WriteString("MAXBUFSIZE", "2048");
WriteString("MAXFILEHANDLES", "48");
WriteString("MEMSIZE", "16");
WriteString("MINBUFSIZE", "128");
WriteString("SHAREDMEMLOCATION", "");
WriteString("SHAREDMEMSIZE", "2048");
WriteString("SQLQRYMODE", "");
WriteString("SYSFLAGS", "0");
WriteString("VERSION", "1.0");
CloseKey;
OpenKey(Bor+"\Database Engine\Settings\SYSTEM\FORMATS\DATE",True);
WriteString("FOURDIGITYEAR", "TRUE");
WriteString("LEADINGZEROD", "FALSE");
WriteString("LEADINGZEROM", "FALSE");
WriteString("MODE", "1");
WriteString("SEPARATOR", ".");
WriteString("YEARBIASED", "TRUE");
CloseKey;
OpenKey(Bor+"\Database Engine\Settings\SYSTEM\FORMATS\NUMBER",True);
WriteString("DECIMALDIGITS", "2");
WriteString("DECIMALSEPARATOR", ",");
WriteString("LEADINGZERON", "TRUE");
WriteString("THOUSANDSEPARATOR", " ");
CloseKey;
OpenKey(Bor+"\Database Engine\Settings\SYSTEM\FORMATS\TIME",True);
WriteString("AMSTRING", "AM");
WriteString("MILSECONDS", "FALSE");
WriteString("PMSTRING", "PM");
WriteString("SECONDS", "TRUE");
WriteString("TWELVEHOUR", "TRUE");
CloseKey;
OpenKey(Bor+"\Database Engine\Settings\REPOSITORIES",True);
CloseKey;
OpenKey(Bor+"\Database Engine\Settings\DRIVERS\PARADOX\INIT",True);
WriteString("LANGDRIVER", "ancyrr");
WriteString("TYPE", "FILE");
WriteString("VERSION", "1.0");
CloseKey;
OpenKey(Bor+"\Database Engine\Settings\DRIVERS\PARADOX\TABLE
CREATE",True);
WriteString("BLOCK SIZE", "4096");
WriteString("FILL FACTOR", "95");
WriteString("LEVEL", "7");
WriteString("STRICTINTEGRTY", "TRUE");
CloseKey;
end;
a.Free;
end;
begin
Path:=GetExePath(ParamStr(0));
R:=dbiInit(Nil);
if R<>DBIERR_NONE then begin
WriteString("Инициализация BDE ...");
InstallBDE;
end;
R:=dbiInit(Nil);
if R=DBIERR_NONE then begin
WriteString("Инициализация BDE прошла успешно");
DbiDeleteAlias(nil, PChar(AliasName));
R:=DbiAddAlias(Nil, PChar(AliasName), szPARADOX,
PChar("PATH:"+Path+"\DB"), True);
if R=DBIERR_NONE then
WriteString("Псевдоним ""+AliasName+"" создан")
else WriteString("Ошибка создания псевдонима ""+AliasName+""");
R:=DbiCfgSave(nil, nil, Bool(-1));
if R=DBIERR_NONE then
WriteString("Файл конфигурации сохранён")
else WriteString("Ошибка сохранения файла конфигурации");
DbiExit;
end
else WriteString("Ошибка инициализации BDE");
end.
- ---конец InstallPrfSt.dpr---
Счастливо,
Константин Кочедыков / kostya@roadtech.saratov.su /
← →
delphiwhat (2002-08-09 11:26) [8]Спасибо уважаемый elv © ,
первый вариант мне больше подходит (за исключением, что уменя Delphi6),а то что будет большой объем - это не столь важно.
И небольшой вопрос , Вы написали:
-К вопpосу о пеpеносе BDE с пpогpаммой. По-хоpошему нужно готовить дистpибутив
пpогpаммы каким-нибудь инсталлятоpом (Install Shield и дp.). Hо он может
насовать много лишнего и пакет будет толстым.
- Если использовать эту программу , то она может выбрать сама все необходимое????
P.S. Если Вам покажется эти вопросы глупым, то заранее простите, в области программирования я недавно.
Спасибо.
← →
Anatoly Podgoretsky (2002-08-09 11:31) [9]Зато будет работать не а пример доморощенным интсалляторам, которые правильнее отнести к классу троянов, но не волнуйся инсталлятор ничего лишнего не поставит, а вот те которые поставят не полность, тех под ноготь, так как муки пользователей после этих горе самоделкиных невыносимы.
Так что не думай и делай нормальную инсталляцию с помощью сертифицированного инсталлятора, если конечно уважаешь пользователей и претендуешь на звание программиста-профессионала.
← →
delphiwhat (2002-08-09 11:35) [10]Уважаемый Anatoly Podgoretsky ©
Подскажите, какие инсталяторы Вы имеете ввиду (рекомендуете)
Спасибо
← →
velk (2002-08-09 11:40) [11]Используй MYSQL
← →
jessis (2002-08-09 11:47) [12]В ручную прописать соединение (Session) в проге, настроить напрямую на ODBC
← →
jessis (2002-08-09 11:48) [13]void __fastcall Tdm::DataModuleCreate(TObject *Sender)
{
TStringList *L;
SesN26->Open();
if(!SesN26->IsAlias("MySQLN26"))
{ L = new TStringList();
L->Add("DATABASE NAME=N26");
L->Add("ODBC DSN=ODBC-N26");
SesN26->AddAlias("MySQLN26", "MySQL", L);
delete L;
}
SesN26->Close();
SesKiT->Open();
if(!SesKiT->IsAlias("MySQLKiT"))
{ L = new TStringList();
L->Add("DATABASE NAME=KiT");
L->Add("ODBC DSN=ODBC-KiT");
SesKiT->AddAlias("MySQLKiT", "MySQL ODBC 3.51 Driver", L);
delete L;
}
SesKiT->Close();
}
← →
Anatoly Podgoretsky (2002-08-09 11:55) [14]delphiwhat © (09.08.02 11:35)
Вместе с Дельфи идут файлы bdedeploy.txt и deploy.txt, в них описаны подробности распространения программ.
Я бы посоветовал Install Shield Express благо он бесплатно прикладывается к Дельфи именно для этой цели, освоение занимает от 5 до 10 минут, с созданием полноценной инсталляции.
← →
elv (2002-08-09 11:59) [15]delphiwhat © (09.08.02 11:26)
первый вариант мне больше подходит (за исключением, что уменя Delphi6)
Значения не имеет. Ты переносишь BDE
И небольшой вопрос , Вы написали:
Это написал автор совета.
-К вопpосу о пеpеносе BDE с пpогpаммой. По-хоpошему нужно готовить дистpибутив пpогpаммы каким-нибудь инсталлятоpом (Install Shield и дp.). Hо он может насовать много лишнего и пакет будет толстым.
Размер программы может увеличиться на несколько мег.
- Если использовать эту программу , то она может выбрать сама все необходимое????
Нет. Это пример для Парадокса.
P.S. Если Вам покажется эти вопросы глупым, то заранее простите, в области программирования я недавно.
Используй InstallShield.
Если в области программирования ты недавно, то круг пользователей небольшой. Поставь им BDE руками и не имеей проблем. Когда наберешся опыта сделаешь свой инсталятор, если захочешь. В принципе Anatoly Podgoretsky прав, используй "сертифицированный инстарятор". Но не по тем причинам которые он называет. (громкие слова сотрясают воздух :))) Тем же InstallShieldом можно покрамсать реестр, или поставить BDE неполностью. Все зависит от твоих рук. Использование InstasllShielda позволит уменьшить время разработки и не забивать голову ненужными знаниями.
P.S. IMHO!
← →
delphiwhat (2002-08-09 12:00) [16]Большое (огромное) всем спасибо! Обязательно посмотрю и опробую все варианты.
← →
Anatoly Podgoretsky (2002-08-09 12:05) [17]elv © (09.08.02 11:59)
Именно по тем причинам, приходилось и приходится наблюдать последствия таких инсталляций, я бы этим программистам, не смотря на то что я мягкий человек, кое что бы оторвал, а еще отдал бы на растерзания пользователям, а уж они то точно звери.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.08.29;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.006 c