Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Unit aus anderer Unit verwendet


Das S - Fr 23.04.04 18:01
Titel: Unit aus anderer Unit verwendet
Hi,

ich habe versucht, eine Unit zu schreiben, die eine Datenbankverbindung herstellt. Diese Unit wiederrum soll durch eine andere verwendet werden durch übergabe des Datenbankverzeichnisses. Hier der Code der Unit, die die Verbindung herstellen soll:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,db,ADODB;


//dynamisch zusammengesetzt dbconnector
procedure dbconnect(verzeichnis:widestring);

implementation

procedure dbconnect(verzeichnis:widestring);
var typecon:TADOconnection;
begin
try
typecon.ConnectionString:='';
typecon.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+verzeichnis+';Persist Security Info=False';
typecon.LoginPrompt:=false;
typecon.Connected:=true;
application.MessageBox('Test erfolgreich','Hinweis',64);
except
application.MessageBox('DATENBANKVERBINDUNG ZUR DATENBANK NICHT ERFOLGREICH','Hinweis',16);

end;
end;

end.


Hier der Code, der die Unit2 verwendet:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  StdCtrls, DB, ADODB, unit2;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
unit2.dbconnect('e:\SOURCECODE\VERWALTUNG\DB\bla.mdb');
end;

end.


Vielleicht noch eines: Das ist meine erste unit die ich schreibe. Bitte habt verständnis, wenn es nicht so gut ist, wie es sein sollte. Und bitte nicht so eine ultrakurze Antwort. :oops:

Liebe Grüße

Steffen

Moderiert von user profile iconPeter Lustig (18:03, 23.04.2004): Delphi-Tags hinzugefügt
Moderiert von user profile iconPeter Lustig (18:29, 23.04.2004): Großschreibung in Titel beruhigt


Christian S. - Fr 23.04.04 18:04

Hallo!

Bitte ändere den Titel des Topics da er wenig über das eigentlich Thema verrät. Hier der entsprechende Absatz aus den Delphi-Forum.de Richtlinien:

Richtlinien hat folgendes geschrieben:

1.1 Beiträge
Bitte formuliere den Betreff Deiner Beiträge so, dass andere Mitglieder anhand dieser bereits das eigentliche Thema festmachen können. Beiträge wie etwa "Eine Anfängerfrage" oder "Weiß jemand, wie das geht?" lassen den Leser im Unklaren darüber, was das Thema der Diskussion ist.[...]

Einfach oben bei deinem ersten Beitrag auf "Edit" klicken und den Titel ändern. Dank Dir!

Gruß Peter Lustig


raziel - Fr 23.04.04 18:15

du warst zwar nicht grad redselig was dein problem angeht, aber dank eines kleinen blickes in meine zauberkugel dürfte klar sein, was das problem is... 8)

probier doch einfach mal zunächst deine TADOConnection zu createn:

Delphi-Quelltext
1:
typecon := TADOConnection.Create(self);                    

und am ende wieder freigeben:

Delphi-Quelltext
1:
typecon.Free;                    

natürlich macht das wenig sinn, erst zu connecten und dann gleich wieder zu disconnecten (free), deshalb solltest du noch mindestens die funktion "Disconnect" einbauen. Dazu müsstest du typecon in der unit2 global deklarieren...
ich hoff die antwort war dir nich zu kurz ;-)


raziel

//edit: btw kannst du das "unit2." vor "dbconnect" weglassen, es sei denn es gibt noch eine unit mit der funktion dbconnect!


Das S - Fr 23.04.04 18:43

Vielen Dank, kann mir jetzt noch einer verraten, wie ich zum Beispiel diesen Verbindungsstring in einem ADOTABLE anbringen kann. So geht es jedenfalls nicht: adotable1.connection:=unit2.dbconnect;