Hallo,
will für meine Anwendung die Datenbank Connection in eine
Unit auslagern, da ich die Connection in der Anwendung an verschiedenen Orten benutzen muss.
Nach dem ich ein bissel hier gesucht habe, sieht mein quellcode momentan so aus :
(is nur ne beispiel anwendung
)
Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,
DB, ADODB, Grids, DBGrids, StdCtrls,
//Eigene Units die gebraucht werden
Unit2;
type
TForm1 =
class(TForm)
DBGrid1: TDBGrid;
Table: TADOTable;
datasource: TDataSource;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
(*
Per Knopfdruck soll nen DBGrid Daten aus der DB angezeigt werden,
die Datasource ist dem Grid zugeteilt,
der Datasource ist der Table zugeteilt
dem table will ich per Code die sachen zuweisen
*)
procedure TForm1.Button1Click(Sender: TObject);
begin
//Table eine Connection zuweisen
table.Connection:= unit2.connectionGeber(Application.Owner);
//Tablenamen der Tabelle einstellen
table.TableName:='
Kunde';
//Table aktivieren
table.Active:=true;
end;
end.
und die Unit2:
Delphi-Quellcode:
unit Unit2;
interface
uses
ADODB, Classes;
function connectionGeber(comp:TComponent):TADOConnection;
implementation
function connectionGeber(comp:TComponent):TADOConnection;
var
con:TADOConnection;
begin
con:= con.Create(comp);
con.Connected:=false;
con.Provider:='
SQLNCLI.1';
con.ConnectionString := '
Provider=SQLNCLI.1;Password=dasPW;Persist Security Info=True;User ID=derUser;Initial Catalog=derDBName';
con.LoginPrompt:=false;
con.Connected:=true;
con.Open;
end;
end.
Die
DB läuft auf dem selben rechner. Wenn ich die Connection so in die Form ziehe und den Connection String zusammen baue,
sieht er genauso aus wie oben funktionbiert aber...
wenn ich es per Connection aus der
Unit versuche kommt ne "Zugriffsverletzung"...
Erkennt einer den Fehler??
Gruß