Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Sinnvolle DB-Abfragen ohne gebundene Steuerelemente (https://www.delphipraxis.net/111687-sinnvolle-db-abfragen-ohne-gebundene-steuerelemente.html)

Alex_kfm 7. Apr 2008 21:51

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

mkinzler 7. Apr 2008 21:53

Re: Sinnvolle DB-Abfragen ohne gebundene Steuerelemente
 
Speichere, die Schlüssel zusätzlich in den Records

Alex_kfm 8. Apr 2008 06:44

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

mkinzler 8. Apr 2008 06:51

Re: Sinnvolle DB-Abfragen ohne gebundene Steuerelemente
 
Pack doch einen Zeiger auf den Array in .Data

hoika 8. Apr 2008 12:11

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

Alex_kfm 8. Apr 2008 16:25

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 18:21 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz