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

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

Как правильно создать TDataBase динамически?


Kolan ©   (2007-07-24 12:13:00) 

А то при запросе ругается Unknown database…
А если кинуть базу на форму и указать её — то все работает…


MsGuns   (2007-07-24 21:28:00) [1]

Вообще-то можно "кинуть" TDataBase на форму, настроить ее, а в ране создавать динамически "по образу и подобию"


Kolan   (2007-07-24 15:28:00) [2]

> Loginov Dmitry ©   (24.07.07 13:50)

Угу, благодарю — получилось…


Loginov Dmitry   (2007-07-24 13:50:00) [3]


> Как правильно создать TDataBase динамически?


Как-то так:

procedure TForm1.Button1Click(Sender: TObject);
begin
 with TDatabase.Create(Application) do
 try
   DatabaseName := 'TIPA_ALIAS';
   DriverName := 'STANDARD';
   Params.Values['PATH'] := DBPath;
   Connected := True;
 finally
   Free;
 end;
end;


Плохиш   (2007-07-24 12:32:00) [4]


> Kolan ©   (24.07.07 12:25) [3]

Что-то не заметно присвоения значений ни свойству AliasName, ни свойству DriverName.


Desdechado   (2007-07-24 12:31:00) [5]

If DatabaseName is the same as an existing Borland Database Engine (BDE) alias, then the AliasName and DriverName properties need not be set. If DatabaseName does not match an existing BDE alias, then either the application must also supply a valid alias in the AliasName property in addition to the DatabaseName, or it must supply the DriverNameand Params properties.


Kolan   (2007-07-24 12:25:00) [6]

> А как ты создаешь?

 FDataBase := TDatabase.Create(nil);
 FDataBase.DatabaseName := 'DB';
 FDataBase.Params.Clear;
 FDataBase.Params.Add('PATH='+GetSettingsManager.GetDBDir);
 FDataBase.Params.Add('DEFAULT DRIVER=PARADOX');
 FDataBase.Params.Add('ENABLE BCD=FALSE');


Использую как-то так:
var
 Query: TQuery;
 TempLPU: TCustomLPU;
begin
 Result := nil;
 Query := TQuery.Create(nil);
 try
   Query.DatabaseName := 'DB234';//FDataBase.DatabaseName;
   Query.SQL.Add('SELECT * FROM SLLPU ');
   Query.Open;
   if not Query.Eof then
   begin
     Result := TLPUList.Create;
     Query.First;
     while not Query.Eof do
     begin
       TempLPU := TCustomLPU.Create(Query.FieldByName('NMLPU').AsString,
         lUnknown);
       TempLPU.ID := Query.FieldByName('CDLPU').AsInteger;
       Result.Add(TempLPU);
       Query.Next;
     end;
   end;
 finally
   Query.Close;
   Query.Free;
 end;
end;


'DB234';//FDataBase.DatabaseName;
'DB234' — лежит на форме — с ней работает…


Desdechado   (2007-07-24 12:16:00) [7]

А как ты создаешь?


Плохиш   (2007-07-24 12:15:00) [8]


> Kolan ©   (24.07.07 12:13)  
> А то при запросе ругается Unknown database

Ошибка в программе, строка 17.


Наверх

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