Autor Beitrag
eXpli
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Do 17.01.08 12:10 
Jetzt habe ich ein ziehmlich kniffliges Problem!

TabellenName: TabVokabeln
Felder/Spalten: ID_Vokabeln, Vok_Deutsch, Vok_Englisch, Kategorie, Datum

TabellenName: TabKategorie
Felder/Spalten: ID_Kategorie, Kat_Deutsch, Kat_Englisch

Verknüpft sind die Tabellen 1:n von TabKategorie.ID_Kategorie zu Kategorie!

Habe jetzt nun eine DBLookupComboBox welche mir Einträge aus meiner DB anzeigt - genau genommen die Einträge von Kat_Deutsch.

Da es ein Vokabeltrainingstool wird, soll der Benutzer mit der DBLookupComboBox eine Kategorie auswählen und dann sollen alle Vokabeln (im Grid) angezeigt werden die diese Kategorie haben.

Wie bekomme ich denn "DBLookupComboBox1.Text" welcher ja die Kategorie inne hat in meine Abfrage?
Und wie bekomme ich das hin, in einem Dataset die Abfrage über 2 Tabellen zu quetschen? So das im Grid dann zu sehen ist:

Vok_Deutsch, Vok_Englisch, Kat_Deutsch, Datum


Wäre echt klasse von euch wenn ihr mir weiterhelfen könntet!!
noidic
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 851

Win 2000 Win XP Vista
D7 Ent, SharpDevelop 2.2
BeitragVerfasst: Do 17.01.08 12:27 
Das Stichwort, welches du brauchst, heisst join.

Mit einem Inner Join der beiden Tabellen ist das kein Problem, die Suche dürfte einiges zu joins liefern.

_________________
Bravery calls my name in the sound of the wind in the night...
Mike19
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 256

Win XP, Vista, Win 7
Delphi 2005, Turbo Delphi
BeitragVerfasst: Do 17.01.08 12:30 
Hallo,

ich verstehe nicht so richtig, warum Du nur 1 Dataset verwenden willst. Mach doch für jede Tabelle eins, dann ist doch die Zuweisung zum StringGrid relativ einfach.

Gruß Micha
eXpli Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Do 17.01.08 14:54 
Die Abfrage ist nicht mein Problem. Mit SQL kenn ich mich recht gut aus. Das Problem liegt eher bei Delphi bzw. mein wissen mit delphi umzugehen :).

hier die Abfrage:

SELECT TabVokabeln.Vok_Deutsch, TabVokabeln.Vok_Englisch, TabKategorie.Kat_Deutsch, TabKategorie.Kat_Englisch
FROM TabKategorie LEFT JOIN TabVokabeln ON TabKategorie.ID_Kategorie=TabVokabeln.Kategorie
WHERE TabKategorie.Kat_Deutsch="xxx";

Ich weiss bloß nicht recht wie ist das in nem Grid reinbekomme. Wie macht man das denn am besten wenn man zwei tabellen hat? Mit einer hab ich das gut im griff, aber weiß halt ned wie das mit 2 oder mehreren funktioniert.

Könntet ihr mir ne kleine erläuterung geben?
Mike19
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 256

Win XP, Vista, Win 7
Delphi 2005, Turbo Delphi
BeitragVerfasst: Do 17.01.08 15:04 
Hallo,

SQL ist nicht meine Stärke, aber wenn Deine Abfrage funktioniert, kannst Du doch die Ergebnisse mit "StringGrid.Cells:=" platzieren.

Gruß Micha
noidic
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 851

Win 2000 Win XP Vista
D7 Ent, SharpDevelop 2.2
BeitragVerfasst: Do 17.01.08 15:16 
Über welche Zugriffskomponente holst du denn die Daten? Wenn die von TDataset abgleitet ist, kannst du die einfach über eine TDatasource an ein TDBGrid hängen, egal, wieviele Tabellen da betrachtet werden.

_________________
Bravery calls my name in the sound of the wind in the night...
eXpli Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Do 17.01.08 17:06 
Bin grad nicht zuhause kann also nicht testen. Aber bisher gehe ich über ADODataSet und TDataSource an die sache ran. Kann man das einfach alles über ein DataSet machen,ja?

Komme heut Abend bestimmt noch mit Fragen... Wenn ich an dem Projekt sitze!

Danke trotzdem schonmal!!!
eXpli Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Do 17.01.08 20:33 
Hmm also ich habe folgende kompos:

ADOConnection, DataSet, DataSource, DBGrid

Ich bekomme bloß von einer DB die Vokabeltabelle ins DataSet (wenn ich doppelklick auf DataSet mache und dann "Alle Felder hinzufügen"). Wie bekomme ich die Felder von der zweiten Tabelle in das DataSet?

Gruß eXpli
noidic
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 851

Win 2000 Win XP Vista
D7 Ent, SharpDevelop 2.2
BeitragVerfasst: Fr 18.01.08 11:07 
Ich hab mit ADO lamg micht mehr gearbeitet, aber kannst du da nicht ein SQL-Statement angeben? Ansonsten verwende ein TADOQuery (müsste es geben).

_________________
Bravery calls my name in the sound of the wind in the night...
eXpli Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: So 20.01.08 21:45 
Hmm habe es leider immernoch nicht geschafft :(

Das sind jetzt alle Kompos die ich verwende (habe mir neues projekt geöffnet damit ich das versuchen kann):

Nochmal... Ich habe 2 Tabellen in der DB. Ich möchte dem User über eine ComboBox (entweder DBComboBox oder DBLookupComboBox) einfach "filtern" lassen. Das er Nur das anzeigt was der User in der Combobox ausgewählt hat.

ADOConnection1: TADOConnection;
dsVok: TDataSource;
DBGrid1: TDBGrid;
rsKat: TADODataSet;
rsVok: TADODataSet;
dsKat: TDataSource;

Meine "Einstellungen":

rsVok.DataSource auf dsKat
rsVok.MasterFields auf Kategorie -> ID_Kategorie
rsVok.IndexFieldnames auf Kategorie
rsVok.CommandText steht "select * from TabVokabeln"

rsKat.DataSource auf nix
rsKat.MasterFields auf Kategorie -> ID_Kategorie
rsKat.IndexFieldnames auf Kategorie
rsKat.CommandText steht "select * from TabKategorie"

dsVok.DataSet auf rsVok
dsKat.DataSet auf rsKat

DBGrid.DataSource auf dsVok

DBComboBox.DataSource auf dsKat


Wenn ich der DBComboBox für die DS, dsKat zuordne passiert garnix :>.

Hat einer von euch ne Idee? Need Help :(