Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Tabelle öffnen und per SQL ansprechen (https://www.delphipraxis.net/1676-tabelle-oeffnen-und-per-sql-ansprechen.html)

Barzy2x 17. Dez 2002 18:42


Tabelle öffnen und per SQL ansprechen
 
Hallo,
über TOpenDialog öffne ich eine DB Datei. Diese Datei möchte ich nun mit SQL ansprechen (z.b SELECT IRGENDWAS FROM Tabelle_die_ich_über_TOpenDialog_geöffnet_habe). Mein Problem liegt nun darin, dass ich nicht weiß wie ich SQL vermittle, dass er diese ausgesuchte Tabelle abfragen soll.
Habe versucht die geöffnente DB Datei einer TTable Variable zuzuweisen und diese dann über SQL anzusprechen. Funktioniert aber nicht da SQL meldet, dass er die Tabelle "Variable.db" nicht findet. Wie kann ich also die geöffnete Tabelle in eine SQL Abfrage einbinden?
Danke im vorraus...

xbu58 17. Dez 2002 18:52

Hallo Barzy

Ganz einfach:
Code:
select *
from "d:\b\Borland Shared\data\parts.db"
das ist schon alles.

Gruss
Xaver

Barzy2x 17. Dez 2002 19:13

Das könnte ich natürlich auch verwenden. Ich muss jedoch diese Tabelle vorher öffnen, da ich sie auch für eine andere Table Komponente benötige. Würde ich nur SELECT ... FROM 'D:\...' schreiben, kann ich nur mit einer Tabelle arbeiten und kann sie nicht vorher öffnen. Wenn die geöffnete Tabelle nun auf e: ist und ich d:\... anspreche funktioniert das nicht. Gibt es dafür auch eine andere Lösung?

xbu58 17. Dez 2002 19:20

Ja die gibt es. Setze einfach die Komponente TDatabase ein. Dort gibst Du im Property DatabaseName den Directory-Paht ein z.B. D:\Data
Nun kannst Du jedes TQuery-Object über das Property DatabaseName an das Database-Objekt anhängen. Alle Tabellen sind so verfügbar, welche sich in dem Directory sind. Eine Tabelle kann so mehrmals geöffnet werden, indem Du einfach den Pfad nach FROM weglässt und nur den Tabellen-Name z.B. FROM "Test.db" angibst öffnen.

Gruss
Xaver

Barzy2x 17. Dez 2002 21:07

Danke Xaver, das funktioniert. Dennoch bleibt das Problem mit dem Öffnen der datenbanken. Wenn ich in meine SQL Anweisung schreibe "SELECT ... FROM Test" dann greift SQL nur auf diese Test.db zu. Wenn ich nun aber z.b Test1.db geöffnet habe, dann spricht SQL diese natürlich nicht an, da in der Anweisung "...From Test" steht. Also brauche ich in der Anweisung eine Variable die sich merkt welche Datenbank ich geöffnet habe. Zum öffnen der Datenbank nutze ich folgenden Code:

Code:
PROCEDURE TDatenbankoeffnen.BtnODClick(Sender: TObject);
VAR OD : TOpenDialog;
BEGIN
  OD := TopenDialog.Create(self);
  OD.InitialDir := 'C:\';
  OD.Filter := 'Datenbankdateien |*.DB';
IF
  OD.Execute
THEN
TRY
  Edit1.Text := od.FileName;
EXCEPT
Application.MessageBox(Pchar('Die Datei konnte nicht geöffnet werden'),'Fehler',0);
END;
END;
Also "befindet" ich die geöffnete DB datei in "Edit1.Text". Das müsste die SQL Anweisung merken und so auf die richtig Datenbank zugreifen. Ist das Einfügen einer Variable in eine SQL Anweisung möglich?

Barzy2x 18. Dez 2002 11:45

Problem hat sich erledigt...


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:52 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