![]() |
Datenbank: Interbase • Version: 2007 • Zugriff über: dbExpress
Sinnvolle DB-Abfragen ohne gebundene Steuerelemente
Hallo Leute,
ich arbeite mich gerade in die Datenbankprogrammierung ein und verwende hierzu dbexpress 4 und Delphi 2007. Soweit klappt alles ganz gut, doch bei einer Sache stecke ich fest. Ich verwende keine gebundenen Steuerelemente oder ähnliches. Ich habe eine Funktion erstellt, die die Daten über ein DataSet abfragt und dann über ein Record zurückgibt. In einer Schleife weise ich einige Member des Records an einen ListView. Soweit, so gut. Wenn ich jetzt einen Eintrag aus dem ListView auswähle, will ich nun den gesamten Datensatz, also den Record, öffnen. Und hier habe ich das Problem. Meist nehme ich jetzt die Strings aus den Spalten des ListViews und mache wieder eine Abfrage an die Datebank um die gesamten Daten zu bekommen. Doch bei einigen ListViews sind nicht genug eindeutige Daten drin, so dass ich eben keine eindeutige Abfrage machen kann. Ich fürchte, ich mache hier grundsätzlich was falsch oder renne halt in die Flasche Richtung. Über Hinweise zur besseren oder richtigen Vorgehensweise sehr dankbar. Dank Euch. Alex |
Re: Sinnvolle DB-Abfragen ohne gebundene Steuerelemente
Speichere, die Schlüssel zusätzlich in den Records
|
Re: Sinnvolle DB-Abfragen ohne gebundene Steuerelemente
Hallo mkinzler,
das mache ich schon, der Schlüssel ist im Record. Doch ich weise dem ListView ja nur ein paar Strings aus dem Record zu und der Schlüssel gehört nicht dazu. Die Werte, die ich den ListItems zuweise, sind ja die, die m ListView als Spalten sichtbar sind. Nur der Schlüssel ist ja für den Anwender uninteressant und daher packe ich ihn nicht mit da rein und genau das ist mein Problem. Wenn ich die ausgewählte Zeile des ListViews habe, dann fehlt mir der ursprüngliche Record, ich habe dann nur noch ein paar Strings aus dem Record und diese reichen nicht aus, um eine eindeutige Abfrage an die DB zu starten. Wenn es sowas wie ein Tag in dem ListItem gäbe, würde ich dort (unsichtbar) den Schlüssel speichern, doch ich konnte nix finden. Wie macht ihr das denn so? Verwendet ihr alle gebundene Steuerelemente? Oder gibts da noch andere Lösungen? Dank Euch für eure Vorschläge. Der Alex |
Re: Sinnvolle DB-Abfragen ohne gebundene Steuerelemente
Pack doch einen Zeiger auf den Array in .Data
|
Re: Sinnvolle DB-Abfragen ohne gebundene Steuerelemente
Hallo,
ich würde statt dem Record gleich eine Klasse nehmen. Die Klasse kann dann als .Data in das ListItem eingetragen werden.
Delphi-Quellcode:
var
TMyClass = class iId: Integer; end; var MyClass: TMyClass; // keine lokale Variable !! begin MyClass:= TMyClass.Create; MyClass.Id:= 1; // <<-- aus dem DataSet .... var ListItem: TListItem; begin ListItem:= ListView.Items.Add; ListItem.Data:= MyClass; ListItem.Caption:= 'bla'; end; Heiko |
Re: Sinnvolle DB-Abfragen ohne gebundene Steuerelemente
Hallo mkinzler,
das war ne gute Idee, ich hab mir jetzt ein Array von den Records gebaut und lege unter .Data einen Pointer darauf ab. Klappt wunderbar. Hallo Heiko, noch wächst die Anwendung, ich denke auch, dass ich später aus den Records echte Klassen machen werde, die dann auch eigene Funktionen / Methoden enthalten. Danke Euch... macht immer wieder Spass wie bei der DP! Der Alex |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz