Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

работа с Alias [D7, Paradox]


zep ©   (2003-07-02 23:24:00) 

привыт ALL подскажите как сделать чтобы при запуске программа проверяла Alias базы и если такого нет, создавала его. желательно с примером.


AbrosimovA   (2003-07-03 13:57:00) [1]

Program Base;

uses Forms,Windows,Registry,SysUtils,Classes,DBTables,

Module in "Module.pas" {DataModule1: TDataModule},
Main in "Main.pas" {MainForm};

{$R *.RES}

var L : TStringList;
Index: integer;
Flag: boolean;

begin
with TRegistry.create do begin
Rootkey := HKEY_LOCAL_MACHINE;
if Not (OpenKey("SOFTWARE\BORLAND\DATABASE ENGINE", false)) then
begin
MessageBox(0,PChar("Не установлена BDE."),
PChar("Ошибка"), mb_OK);
Application.Terminate;
end
else begin
CFGFile := ReadString("CONFIGFILE01");
Free;
try
Application.CreateForm(TDataModule1, DataModule1);
except
MessageBox(0,PChar("Ошибка настройки базы данных MyBase
(Paradox) !!!"),PChar("Ошибка"), mb_OK);
Application.Terminate;
end;
DataModule1.Session1.ConfigMode := cmPersistent;
L := TStringList.Create;
try
DataModule1.Session1.GetAliasNames(L);
for Index := 0 to L.Count - 1 do
if L.Strings[Index]="MyBase" then Flag:=true;
if NOT(Flag) then begin
L.Add("PATH="+ExtractFilePath(Application.Exename)+"Data");
DataModule1.Session1.AddAlias("MyBase", "STANDARD", L);
DataModule1.Session1.SaveConfigFile;
end;
DataModule1.Cust.Active:=true;
finally
L.Free;
end;
Application.CreateForm(TMainForm, MainForm);
Application.Run;
end;
end;

end.


Edward   (2003-07-03 09:34:00) [2]

var Session: TSession;
AliasParams: TStrings;
Index: Integer;
begin
Session := TSession.Create(nil);
Session.AutoSessionName := True;
try
if Session.IsAlias("MyAlias") then
ShowMessage("Алиас существует!")
else begin
AliasParams := TStringList.Create;
try
with AliasParams do
begin
Add("SERVER NAME=IB_SERVER:/PATH/DATABASE.GDB");
Add("USER NAME=MYNAME");
end;
Session.AddAlias("MyAlias","INTRBASE", AliasParams);
finally
AliasParams.Free;
end;
end;
finally
Session.Free;
end;
end;


гончий   (2003-07-03 09:21:00) [3]

function AliasExists(DbName: PChar): boolean;
var
E: DbiResult;
DbRec: DbDesc;
IsInit: boolean;
begin
IsInit := True;
Result := False;
while True do
begin
E := DbiGetDataBaseDesc(DbName, @DbRec);
IsInit := ( E <> DBIERR_NOCONFIGFILE );
if( not IsInit )then
begin
DbiInit(nil);
Continue;
end;{ IF }
Result := ( E = DBIERR_NONE );
Break;
end;{ WHILE }
if( not IsInit)then DbiExit;
end;

function CheckAlias(DbName, DbPath, DbType: PChar): boolean;
var PATH: string;
begin
Result := AliasExists( DbName );
if not Result then
begin
PATH := "PATH:" + DbPath;
Result := DbiAddAlias(nil, DbName, DbType, PChar(PATH), True) = DBIERR_NONE;
if Result then
SESSION.SaveConfigFile;
//Result := DbiCfgSave(nil, nil, False) = DBIERR_NONE;
end;
end;


Zacho   (2003-07-03 09:03:00) [4]

Смотри св-ва и методы TSession.


zep   (2003-07-02 23:37:00) [5]

??????????????????????


Наверх

Титульная страница Поиск, карта сайта Написать письмо