Autor Beitrag
Tobi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Mo 23.06.03 11:31 
Mein Problem ist etwas komplex zu erklären, ich bemühe mich aber.

In meiner Datenbank (es hanelt sich immer noch um die Berufe Datenbank von der ich hier schonmal gesprochen hatte) gibt es mehrere Tabellen. In der Haupttabelle stehen mehrere Berufe, mit Beschreibung, usw. und u.a. auch mit einer eindeutigen Identifikationsnummer!
In einer weiteren Tabelle findet man wieder diese Identifikationsnummer und in anderen Spalten Zahlen die ihrerseits Bereichsnamen zugeordnet sind (1=Technik, 2=Wirtschaft, 3=Medien), welche sich logischerweise wieder in einer anderen Tabelle wiederfinden.
Nun muss ich einen Filter programmieren, dass wenn man in der ComboBox "Technik" auswähle nur noch die Berufe mit BereichNr = 1 angezeigt werden.
Das wäre ja nicht so das Problem, wenn es nicht soviele Tabellen wären. Ich steuere die Datenbank über das ADODataset "DB_verbindung" an.
kiwicht
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1021

Win 7, MacOS
Delphi x, VBA, PHP, ...
BeitragVerfasst: Mo 23.06.03 11:36 
also ich empfehle an der Stelle erstmal eine Lösung auf dem SQL-Weg.

Dazu kann ich dir zu allererst mal folgende Seite empfehlen:

home.t-online.de/home/aam_int/de/sqlhelp/

Und zu deinem Problem speziell: Kann dir nicht folgen.

Beschreib doch mal die Struktur deine Tabellen genau, und welche Felder welcher Datenbank du genau als Ergebniss erwartest, wenn du z.B in der ComboBox "Technik" auswählst.

bis dahin..mfG :D
Tobi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Mo 23.06.03 13:39 
hm, das ist schwer zu erklären. ich frage erstmal was anderes, was mich weiterbringen könnte:

1: Wie kann ich Datenbankfelder über die "normale" Delphi-Punktierung ansprechen, damit ich es einer Variablen zuweisen kann.
also, Variab := Datenbank.Tabelle.Feld;

2: Wie kann ich mit einer select Anweisung aus 2 Tabellen ALLE Felder auslesen. Bei mir kommt sich der Code etwas in die Quere.
neojones
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1206
Erhaltene Danke: 1



BeitragVerfasst: Mo 23.06.03 13:44 
Hi!

1.:
ausblenden Quelltext
1:
Variable := Table1.FieldByName('FeldName').AsString					

Alternativ .AsFloat oder .AsInteger

2.: Das macht man über SQL oder alternativ über Master-Detail-Beziehungen. Wenn Du Deine Tabellenstruktur hier mal hin schreibst, könnte man Dir da besser helfen. Evtl. hilft es Dir schon als Anregung: Bei SQL macht man es mit einem LEFT JOIN. Man müsste aber auch wissen, welches Datenbanksystem Du benutzt, denn evtl. ist es mit Sub-Selects einfacher.

Viele Grüße,

Matthias

_________________
Ha! Es compiliert! Wir können ausliefern!
kiwicht
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1021

Win 7, MacOS
Delphi x, VBA, PHP, ...
BeitragVerfasst: Mo 23.06.03 13:56 
neojones hat folgendes geschrieben:
Hi!

1.:
ausblenden Quelltext
1:
Variable := Table1.FieldByName('FeldName').AsString					

Alternativ .AsFloat oder .AsInteger


Jap.. oder auch

ausblenden Delphi-Quelltext
1:
2:
3:
Query1.FieldByName...
bzw.
Query.FieldValues['feldname']


achso achja

ausblenden Delphi-Quelltext
1:
Query.SQL.Text := 'SELECT * FROM dbase1, dbase2';					


ergibt alle Tabellen in einer Abfrage :D
neojones
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1206
Erhaltene Danke: 1



BeitragVerfasst: Mo 23.06.03 15:05 
@kiwicht: Die SQL-Abfrage ergibt ein kartesisches Produkt. Tobi hats zwar oben so formuliert, als wollte er das haben, allerdings machen dann die Lists Of Value keinen Sinn ;-) Is aber ganz lustig zu sehen, wie der Datenbankserver langsam in die Knie geht *g*

Noch ein kurzer Comment: Die Benutzung von "FieldValues" funktioniert einwandfrei, wenn man den Wert des Feldes einer Variablen zuwenden will, aber nicht, wenn man den Variablenwert dem Feld zuweisen will. Dann gibts bei ungültigen Werten, z.B. NULL in NOT NULL-Feldern, Probleme. Ausserdem glaube ich, sogar in der Delphi-Hilfe gelesen zu haben, dass FieldByName performanter ist, weil "FieldValues" Variant-Typen übergibt.

Viele Grüße,

Matthias

_________________
Ha! Es compiliert! Wir können ausliefern!
Tobi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Mo 23.06.03 18:54 
vielen dank. hier mal ein schema der datenbank. im prinzip geht das ganze von der tabelle "Berufe" aus.
bei "bereiche" heißt das feld natürlich [...]Bezeichnung ;)
user defined image
kiwicht
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1021

Win 7, MacOS
Delphi x, VBA, PHP, ...
BeitragVerfasst: Mo 23.06.03 21:14 
Zitat:
Ausserdem glaube ich, sogar in der Delphi-Hilfe gelesen zu haben, dass FieldByName performanter ist, weil "FieldValues" Variant-Typen übergibt.

naja, da streiten sich die Geister.. die Disku hat wir hier schonmal, ich glaub das war nicht sonderlich bemerkbar, der Geschwindigkeits-Vorteil.

Zitat:
@kiwicht: Die SQL-Abfrage ergibt ein kartesisches Produkt. Tobi hats zwar oben so formuliert, als wollte er das haben, allerdings machen dann die Lists Of Value keinen Sinn

ich gebe zu, der Vorschlag war nich sonderlich sinnvoll, aber ich find solche ergebniss-mengen sehr amüsant, wollte das also nicht
vorenthalten :D

egal.. schweift vom Thema ab. ....