125
procedure TfmConnect.Connect;
var
IniFile: TIniFile;
APchar: array[0..254] of Char;
begin
if not Assigned(DM) then
Application.CreateForm(TDM, DM);
//Загрузка данных о сервере базы данных на удаленном компьютере из
//инициализационного файла, если он существует:
ServerName := '(local)';
GetWindowsDirectory(APchar, 255);
if FileExists(string(APchar)+'\Station.ini') then
begin
IniFile := TIniFile.Create(string(APchar)+'\Station.ini');
try
PersistSec := IniFile.ReadBool('Base', 'PersistSec', False);
ServerName := IniFile.ReadString('Base', 'ServerName', '(local)');
UserID := IniFile.ReadString('Base', 'UserID', 'sa');
Password := IniFile.ReadString('Base', 'Password', '');
finally
IniFile.Free;
end;
end;
CancelConnect := False;
if not Assigned(fmConnect) then
Application.CreateForm(TfmConnect, fmConnect);
while (not DM.ADOConnection1.Connected) and (not CancelConnect) do
begin
//Задание параметров подключения к серверу БД:
DM.ADOConnection1.ConnectionString :=
'Provider=SQLOLEDB.1;Persist Security Info=' + BoolToStr(PersistSec,
True) + ';User ID=' +
UserID + ';Initial Catalog=Вокзал;Data Source=' + ServerName +
';Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;' +
'Use Encryption for Data=False;Tag with column collation when
possible=False';
if PersistSec then
DM.ADOConnection1.ConnectionString :=
DM.ADOConnection1.ConnectionString + ';Password=' + Password
else
DM.ADOConnection1.ConnectionString :=
DM.ADOConnection1.ConnectionString + ';Integrated Security=SSPI';
//Попытка подключения к БД:
try
DM.ADOConnection1.Open;
except
on E: Exception do
begin
Application.MessageBox(PChar('Ошибка подключения к базе данных!' +
Chr(13) +
'Строка ошибки:' + Chr(13) + E.Message), 'Ошибка',
MB_OK+MB_ICONERROR);
edServer.Text := ServerName;
RadioButton1.Checked := not PersistSec;
RadioButton2.Checked := PersistSec;
edUser.Text := UserID;
edPass.Text := Password;
fmConnect.ShowModal;