Autor |
Beitrag |
Tobi
      
Beiträge: 18
|
Verfasst: 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
      
Beiträge: 1021
Win 7, MacOS
Delphi x, VBA, PHP, ...
|
Verfasst: 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 
|
|
Tobi 
      
Beiträge: 18
|
Verfasst: 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
      
Beiträge: 1206
Erhaltene Danke: 1
|
Verfasst: Mo 23.06.03 13:44
Hi!
1.:
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
      
Beiträge: 1021
Win 7, MacOS
Delphi x, VBA, PHP, ...
|
Verfasst: Mo 23.06.03 13:56
|
|
neojones
      
Beiträge: 1206
Erhaltene Danke: 1
|
Verfasst: 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 
      
Beiträge: 18
|
Verfasst: 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

|
|
kiwicht
      
Beiträge: 1021
Win 7, MacOS
Delphi x, VBA, PHP, ...
|
Verfasst: 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
egal.. schweift vom Thema ab. ....
|
|
|