Entwickler-Ecke

Datenbanken - Dynamisch eine Tabelle zuweisen


HotLaps - Fr 13.09.02 08:32
Titel: Dynamisch eine Tabelle zuweisen
Hallo, schon wieder ich!

Ich habe drei verschiedene Tabellen.
Ich möchte jetzt, je nachdem welche ausgewählt ist, meinen tollen Suchdialog (der jetzt endlich fertig ist) dafür aufrufen.


wwerner - Fr 13.09.02 09:03

Wo ist das Problem? Das kommt aus deiner Frage nicht raus!


HotLaps - Fr 13.09.02 09:12

drei Tabellen:

tblItem
tblItem_Checked_In
tblItem_Checked_Out

jetzt habe ich einen Suchdialog programmiert in dem Aufrufe vorkommen, die direkt auf die Tabelle gehen
frmMain.tblItem_Checked_In. .....

dieser Dialog soll aber für alle drei Tabellen funktionieren ohne, dass ich ihn drei mal schreibe

ich weiß die DataSourc der selektierten Tabelle

also in Suchdialog soll nicht hardcoded der Tabellenname stehen, sondern eine Variable oder sonst irgendetwas ich weiß ja auch nicht, sonst würde ich nicht fragen,

ich hoffe ich habe mich etwas verständlicher ausgedrückt, es ist schwierig zu beschreiben


wwerner - Fr 13.09.02 09:23

OK,

Du legst ein Tabellenobjekt im Suchdialog an: tblTemp
Bevor der Suchdialog augerufen wird weist du die entsprechende Tabelle aus dem MainForm deinem Tabellenobjekt im Suchform zu. In Suchform arbeitest du dann mit deiner lokalen Tabelle


LCS - Fr 13.09.02 09:25

Hi
wenn du die Datasource hast, hast du doch über Datasource.Dataset.Tablename auch den Tabellennamen der betreffenden Tabelle.
Seh ich den Wald vor lauter Bäumen nicht :?!?:

Lothar


MrSpock - Fr 13.09.02 09:27

Hallo HotLaps,

das ist prinzipiell möglich, wenn du nur ein TTable Object benutzt und die Eigenschaft TableName dynamisch anpasst. Die Tabelle muss dazu natürlich geschlossen und wieder geöffnet werden. Außerdem müssen die Tabellenstrukturen identisch sein oder du darfst nur die Felder über den Feldeditor einfügen, die bzgl. ihrer Struktur absolut identisch sind.

Alternativ könntest du TQueries nutzen und den Tabellennamen dynamisch anpassen.


HotLaps - Fr 13.09.02 09:38

LCS:

Auf die Gefahr hin mich jetzt lächerlich zu machen:
Datasource.Dataset.Tablename
eh, die Eigenschaft Tablename gibt es nicht


LCS - Fr 13.09.02 09:50

Peinlich, peinlich :oops:
TTable(Datasource.Dataset).TableName

Lothar


HotLaps - Fr 13.09.02 09:52

LCS:

ich weiß den TabellenName doch nicht;
ich möchte ihn über die DataSource herausfinden!


MrSpock - Fr 13.09.02 09:53

Hallo HotLaps,

das ist richtig, weil eine DataSet auf jede beliebige Datenmenge zeigen kann, also z.B. sowohl auf ein TTable Objekt als auch auf eine TQuery. Wenn du sicher bist, dass DataSet auf eine TTable Kompo zeigt, dann kannst du folgendes schreiben:


Quelltext
1:
(MyDataSource.DataSet as TTable).Tablenname;                    


Mit meinem Vorschlag oben kannst du aber weiterhin direkt mit dem TTable Objekt arbeiten.


UGrohne - Mi 25.09.02 11:52

Hää?
Also wenn cih das jetzt richtig verstanden habe, dann willst Du eine Suche in 3 Tabellen gleichzeitig vornehmen?
Dann würde ich Dir einen Query mit SQL vorschlagen. Als SQL-Tag einfach:


Quelltext
1:
Select * FROM [Table1], [Table2], ... WHERE [Bedingung1]                    


oder sowas, da kannste ja alles dynamisch anpassen, dann brauchste auch keine DataSource.

Hmm, irgendiwe, beim nochmaligen Durchlesen hab ich gemerkt, ihc habs doch net so richtig geblickt, aber vll. hilft Dir das da jetzt doch weiter *g*.

Grüßle[/code]


HotLaps - Fr 27.09.02 08:12

MrSpock

"oder du darfst nur die Felder über den Feldeditor einfügen"

könntest du mir bitte erklären wie das funktioniert!
Danke!


bis11 - Sa 28.09.02 10:57

Hi,

ich würde die Version von UGrohne nehmen. Nur würde ich vorher die Tabellennamen Deiner Datenbank auslesen und die als Auswahlfeld in Deinen Search-Dialog einbauen, ich komme bloß im Moment nicht drauf wie ich die Tabellennamen auslesen kann.