![]() |
Delphi-Version: 2010
DB-Felder über Methode Variablen zuweisen
Hallo zusammen,
ich stehe gerade vor einem Problem, für welches IHR - wie immer - die Lösung bereits parat habt. Da es ich nicht unbedingt um eine DB-Problematik handelt, denke ich, ich bin in dieser Rubrik richtig. Folgendes: Im Rahmen der Trennung von Darstellung und Funktion habe ich mir eine Klasse gebastelt. Es handelt sich vereinfacht ausgedrückt um einen Kalender. Die Klasse holt / speichert die Daten in/aus einer Datenbank (Firebird). Bislang war es "nur" notwendig, Wertepaare (String und Integer) aus der Datenbank auszulesen. Dazu habe ich das "String"-Feld in eine StringList und den Integer-Wert über TObject(IntegerWert) dem StringList-Eintrag zugeordnet. Das funktioniert einwandrei. Ungefähr so:
Delphi-Quellcode:
Nun möchte ich aber mehrere Felder auslesen, hier funktioniert ja o.g. System nicht mehr. Bevor ich meine Idee in die Tat umsetze (s. unten) möchte ich jedoch sicher sein, dass es keine "schönere" Lösung für geschildertes Problem gibt.
procedure TMeineKlasse.HoleDaten(DestStrList : TStringList);
begin [...] DestStrList.AddObject(QueryXYZ.FieldByName('StrFeld').AsString, TObject(QueryXYZ.FieldByName('IntFeld').AsInteger)); end; Meine Lösung: Zwei Klassen-Methoden, die erste liest den ersten Datensatz aus und schreib ihn über folgende Funktion in die entsprechenden Variablen. Als Funktionsergebnis wird die Anzahl der vorhandenen Datensätze zurückgegeben:
Delphi-Quellcode:
Dann wird der Zeiger auf den nächsten Datensatz gelegt. Das weitere auslesen wird über eine zweite - ähnliche - Funktion vorgenommen.
function HoleErstenDatensatz(VAR int1: integer; var int2: integer; var str1: string; var str2: string) : integer;
Ich hoffe, mein Vorhaben ist klar und hoffe, dass mir jemand einen einfach(eren) Lösungsweg zeigen kann :) Michael |
AW: DB-Felder über Methode Variablen zuweisen
Statt des harten Casts einer Integer auf TObject könntest Du Dir eine tatsächliche Klasse deklarieren, die die benötigten Felder enthält. Diese kannst Du dann instanzieren und wie gehabt mit AddObject zu Deiner Liste hinzufügen.
|
AW: DB-Felder über Methode Variablen zuweisen
Das heißt ich bilde mir eine Klasse XYZ mit den entsprechenden Feldern, ok.
Wäre es dann sinnvoll, der o.g. Prozedur eine TObjectList zu übegeben, in welcher dann die ausgelesenen Datensätze über die Klasse XYZ gespeichert werden? Dann ist das doch schonmal eine deutlich elegantere Lösung :) |
AW: DB-Felder über Methode Variablen zuweisen
Ob TObjectlist oder TStrings hängt m.E.n. davon ab, ob Du die Daten darstellen willst/musst oder nicht. Andererseits hält Dich ja auch niemand davon ab, Methoden zu überladen ;)
|
AW: DB-Felder über Methode Variablen zuweisen
Super! Dann komme ich erst einmal weiter bei meinem Programm :)
Bis bald und Danke! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:47 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-2025 by Thomas Breitkreuz