Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL zugriff in einer Unit (https://www.delphipraxis.net/100179-sql-zugriff-einer-unit.html)

jjep 24. Sep 2007 07:52

Datenbank: ? • Version: ? • Zugriff über: SQL

SQL zugriff in einer Unit
 
Hallo zusammen

Ich möchte in einer blanken Unit ohne grafischer Oberfläche mittels eines Query auf eine Datenbank zugreifen.
Dies heisst, dass ich die Query-Instanz manuell erzeugen muss...
Für dass brauch ich aber einen TComponent Object als Parameter. Wo kann ich denn das TComponent Object erstellen?


Delphi-Quellcode:
//Query1.create(AOwner:TComponent);
Query1.create;   //diese Zeile macht Probleme, da man Query1 einem TCompent zuweisen muss
With Query1 Do
  begin
  close;
  SQL.clear;
  SQL.Add('SELECT "Mitarbeiter.dbf" Where Personalnr = '+ PersNr);
  Open;
  end;
Query1.Fields[ArtNr+3].AsInteger := Query1.Fields[ArtNr+3].AsInteger + 1;
Query1.Free;
Danke schon im voraus

PS: Ich weiss selber nicht welche Datenbank ich benütze, ich erstelle meine Datenbanken durch SQL.

DeddyH 24. Sep 2007 07:54

Re: SQL zugriff in einer Unit
 
Übergeb doch einfach nil. Außerdem solltest Du nach dem Erzeugen einen try-finally-Block benutzen.

Phoenix 24. Sep 2007 07:56

Re: SQL zugriff in einer Unit
 
Stichwort Datenmodul (Datei -> Neu -> Datenmodul).

Das Datenmodul bedient sich eigentlich wie ein Formular, ist aber keins: Du kannst Deine Datenbankkomponenten da einfach draufziehen - es ist aber im Prinzip nichts anderes als eine normale nicht-Visuelle-Klasse, die dann Deine DB-Komponenten beheimatet.

hoika 24. Sep 2007 08:19

Re: SQL zugriff in einer Unit
 
Hall,

sieht wie dBase aus ?

manuell erzeugt


var
sDBPath: String; // das sollte irgendwo global passieren

sDBPath:= 'c:\data'; // mal als Bsp.

Query1:= TQuery.Create(NIL);
try
Query1.DataBaseName:= sDBPath;
finally
Query1.Free;
end;
[delphi]

Ausserdem stimmt deine SQL-Abfrage nicht

select * from Mitarbeiter where ...

Un dzum Schluss würde ich statt Fields[] FieldByName benutzen,
dass macht es einfacher, in der SQL-Abfrage mal die Reihenfolge
der Felder zu ändern.


Heiko

alzaimar 24. Sep 2007 09:20

Re: SQL zugriff in einer Unit
 
[quote="jjep"]
Delphi-Quellcode:
//Query1.create(AOwner:TComponent);
Query1.create;   //diese Zeile macht Probleme, da man Query1 einem TCompent zuweisen muss
...
Kein Wunder, denn es muss so aussehen:
Delphi-Quellcode:
Query1 := TADOQuery.Create (Nil);
Falls Query1 eine TADOQuery ist.

jjep 24. Sep 2007 09:38

Re: SQL zugriff in einer Unit
 
Ja logisch habe ich vergessen :wall:

danke vielmals für eure tipps war mir echt eine Hilfe


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:20 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz