Gab ja schon viele Fragen zu Datenbanken. Vllt ist dies hier mal was neues...
Habe mir eine Klasse geschrieben für Datenbankzugriffe, d.h. wenn ein Frame(Form) was aus ner Datenbank braucht, oder inserten möchte, dann instanziiert es einfach eine DBConnection. Nun möchte ich das alles so frei wie möglich halten und somit während der Entwurfszeit keinerlei Angaben darüber machen wie zur Datenbank verbunden werden soll... Hier ein Beispiel wie es gemeint ist. Das ist natürlich nicht die endgültige
DB-Zugriffsklasse, aber bringt das Problem auf den Punkt... Hoffe ich zumindest...
Delphi-Quellcode:
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,
DB, DBTables, Grids, DBGrids, StdCtrls;
type
TForm3 =
class(TForm)
Database1: TDatabase;
Session1: TSession;
Query1: TQuery;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure Database1Login(Database: TDatabase; LoginParams: TStrings);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form3: TForm3;
implementation
{$R *.dfm}
{ MyClass }
procedure TForm3.Database1Login(Database: TDatabase; LoginParams: TStrings);
begin
with Database
do
begin
LoginParams.Values['
USER NAME'] := '
root';
LoginParams.Values['
Password'] := '
root';
end;
end;
procedure TForm3.Button1Click(Sender: TObject);
begin
Database1.DatabaseName := '
owv';
Database1.AliasName := '
myodbc';
Query1.DatabaseName := Database1.DatabaseName;
Session1.SessionName := '
S1';
Query1.SessionName := Session1.SessionName;
Query1.Open;
end;
end.
Funktioniert nicht !!! Wenn im Entwurfsmodus Databasename und AliasName nicht angegeben werden.
Fehlermeldung ist, dass der Datenbank Alias 'owv' nicht existiert.
Ich versteh einfach nicht wo Delphi den Unterschied macht. Sobald ich zur Entwurfszeit die Angaben DatabaseName und AliasName mache, funktioniert das ganz toll.
Fürs Helfen im Voraus vielen Dank !!
delphino