Autor Beitrag
mr_chrome
Hält's aus hier
Beiträge: 13

WINXP Prof.
Delphi 7 Prof.
BeitragVerfasst: Mo 21.06.04 14:23 
Hallo,

ich stehe mal wieder vor einem für mich unerklärlichen Phänomen.
Grundsätzlich: Ich verwende InterBase 6.0 mit Delphi 7.0 und greife per IBX auf
die Datenbank zu.

Mein Problem.
Ich habe ein DBGrid zum Anzeigen der Datensätze einer Tabelle "t_produkte".
In der Tabelle gibt es ein Integer-Feld "kategorie_id", welches mit einer anderen Tabelle "t_kategorie" verknüpft ist, in welcher die Kategorie-Bezeichnungen eingetragen sind.
Um in meinem Grid nun nicht die Integer-Werte des Feldes "kategorie_id", sondern die Bezeichnungen der Kategorien zu sehen, hab' ich im IBDataSet für meine Tabelle ein LookUpFeld eingerichtet, welches im DBGrid angezeigt wird - bis hier her funktioniert alles problemlos.

Jetzt möchte ich die Tabelle nach der Kategorie filtern können. Dazu gibt es eine ComboBox, in der ich die Kategorien auswählen kann.
Angenommen ich wähle jetzte "Kategorie A" aus der ComboBox aus, dann wird folgender Code ausgegeben:

ausblenden Delphi-Quelltext
1:
2:
3:
DataSet_Produkte.Close;
DataSet_Produkte.SelectSQL.Text := 'SELECT * FROM t_produkte WHERE kategorie_id = ' + WERT;
DataSet_Produkte.Open;


WERT ist in dem Fall der Integer-Wert der entsprechenden Kategorie.
Auch bis hierhin funktioniert alles wunderbar, ich erhalte immer nur die Datensätze der entsprechenden Kategorie.

Um wieder alle Daten zu sehen, hab' ich die Möglichkeit den Filter auszuschalten, damit wird folgendes ausgelöst:

ausblenden Delphi-Quelltext
1:
2:
3:
DataSet_Produkte.Close;
DataSet_Produkte.SelectSQL.Text := 'SELECT * FROM t_produkte';
DataSet_Produkte.Open;


Jetzt sehe ich wieder alle Datensätze, aber mein Kategorie LookUpFeld zeigt nicht mehr die Bezeichnungen der Kategorien an. Nur die zuletzt ausgewählte Kategorie Bezeichnung wird bei den entsprechenden Datensätzen angezeigt, bei allen Datensätze mit anderen Kategorie Bezeichnungen bleibt das Feld leer.

Ich führe nach den SelectSQL-Anweisungen ein Commit mit anschließenden neuen Aktivieren der Transaktion und DataSets aus. Hab' ich irgendwas vergessen? Refresh bringt auch nichts.

Ich hoffe mein Problem ist einigermaßen verständlich beschrieben.

Viele Grüsse,

Thomas
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Mo 21.06.04 14:35 
Hallo!

Ich habe mich jetzt nicht intensiv mit deiner Problematik beschäftigt, aber ich habe festgestellt, daß es immer Scherereien gibt, wenn man die Lookup-Quelle selber auch in datensensitiven Steuerelementen anzieht. probier doch einfach mal, die Lookup-Quelle auf ein neues Dataset LUP_Kategorie zu verschieben.

Cu,
Udontknow
mr_chrome Threadstarter
Hält's aus hier
Beiträge: 13

WINXP Prof.
Delphi 7 Prof.
BeitragVerfasst: Mo 21.06.04 14:51 
Danke, du hast mich auf die richtige Spur gebracht.
In einer Prozedur hab' ich, um die Kategorie_ID zur Kategorie-Bezeichung zu bekommen, die Kategorie-Tabelle gefiltert und dies nicht rückgängig gemacht.
Jetzt funktioniert es.

Gruss,

Thomas