Einzelnen Beitrag anzeigen

Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#7

Re: Datenstruktur clientseitig abbilden?

  Alt 8. Sep 2009, 09:39
Um alle Daten sofort zur Verfügung zu haben, müsstest Du ja die komplette DB im Speicher halten. Das macht in meinen Augen wenig Sinn. Bei gescheiter Indexierung sollte auch eine Abfrage zu der Zeit, wo die Daten wirklich benötigt werden, kein großes Performanceproblem darstellen. Nehmen wir einmal Folgendes an: Du hast aus der Datendefinition der Tabelle Users eine Klasse TUser erstellt, die zunächst nur die Daten, die auch in dieser einen Tabelle definiert wurden, enthält. Nun wäre es doch kein Problem, diese Klasse um eine Methode zu erweitern, die die Einträge des aktuellen Benutzers ermittelt. Was nach meiner Erfahrung gut klappt ist, solche Auflistungen für die Darstellung in TStrings-Objekten abzulegen (das Gleiche gilt auch für die Users-Tabelle). Ein Beispiel aus dem Kopf:
Delphi-Quellcode:
procedure TUser.GetEntries(const sl: TStrings);
var Entry: TEntry;
begin
  sl.BeginUpdate;
  try
    sl.Clear;
    //dem Objekt sei ein TQuery o.ä. zugewiesen
    Query.Close;
    Query.SQL.Text := 'SELECT ID,Text FROM Entries WHERE AuthorID = :id';
    Query.ParamByName('id').Value := self.ID;
    Query.Open;
    while not Query.EOF do
      begin
        //Entry-Objekt anlegen, befüllen und in TStrings ablegen
        Entry := TEntry.Create;
        Entry.ID := Query.FieldByName('ID').AsInteger;
        Entry.AuthorID := self.ID;
        Entry.Text := Query.FieldByName('Text').AsString;
        sl.AddObject(IntToStr(Entry.ID),Entry);
      end;
  finally
    sl.EndUpdate;
  end;
end;
Man muss halt nur darauf achten, im Delete, Clear, Destroy usw. des TStrings-Objektes die enthaltenen TEntry-Objekte wieder freizugeben.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat