AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi Programm-Design, um DB-Abfragen zu minimieren
Thema durchsuchen
Ansicht
Themen-Optionen

Programm-Design, um DB-Abfragen zu minimieren

Ein Thema von scrat1979 · begonnen am 18. Sep 2011 · letzter Beitrag vom 21. Sep 2011
Antwort Antwort
FredlFesl

Registriert seit: 19. Apr 2011
293 Beiträge
 
Delphi 2009 Enterprise
 
#1

AW: Programm-Design, um DB-Abfragen zu minimieren

  Alt 20. Sep 2011, 15:36
Interessieren würde mich allgemein, wo mögliche Auswahllisten ... aus der Datenbank im Programm zu speichern sind
Ich verwende dazu nur zwei Tabellen (=2 Abfragen). Egal wie viele Auswahllisten ich habe, der Abruf ist immer gleich simpel. Im Programm erstelle ich mir dann In-Memory Datasets und verteile die Daten auf diese Lookuplisten. Das ist mit wenigen Handgriffen getan.

Falls Du eine Mehrbenutzerumgebung hast, solltest Du über Reconcile-Strategien nachdenken, bei denen etwaige Konflikte beim Speichern behandelt und gelöst werden(2 Leute ändern das gleiche, der eine löscht, der andere ändert etc.)
Das Bild hängt schief.
  Mit Zitat antworten Zitat
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.029 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Programm-Design, um DB-Abfragen zu minimieren

  Alt 20. Sep 2011, 22:36
Interessieren würde mich allgemein, wo mögliche Auswahllisten ... aus der Datenbank im Programm zu speichern sind
Ich verwende dazu nur zwei Tabellen (=2 Abfragen). Egal wie viele Auswahllisten ich habe, der Abruf ist immer gleich simpel. Im Programm erstelle ich mir dann In-Memory Datasets und verteile die Daten auf diese Lookuplisten. Das ist mit wenigen Handgriffen getan.

Falls Du eine Mehrbenutzerumgebung hast, solltest Du über Reconcile-Strategien nachdenken, bei denen etwaige Konflikte beim Speichern behandelt und gelöst werden(2 Leute ändern das gleiche, der eine löscht, der andere ändert etc.)
Hättest Du mir da ein Beispiel-Source aus einer Deiner Anwendungen, mir ist das Prinzip nicht ganz klar. Und da ich dies wohl öfters noch benötigen werde, möchte ich gerne eine saubere Lösung für die Zukunft haben. Wäre wirklich klasse! Wie z.B. GENAU bekomme ich die Datensätze der (Remote)-Datenbank in ein In-Memory-Dataset am lokalen Rechner? Mir fiel da nur ein, die Felder des Datasets zu erstellen und über eine Schleife die Datensätze von der Datenbank auf den lokalen Rechner zu übertragen. Wie gesagt, über einen Source, der mir das Vorgehen zeigt, wäre ich dankbar.

Das Problem mit dem synchronen bearbeiten der Datensätze exisitert (zumindest in meiner momentanen Anwendung) nicht, da die Datensätze benutzerspezifisch geladen werden und auf die anderen Datensätze gar kein Zugriff besteht.

Michael

P.s.: Ich habe schon viele "Tutorials" über TClientDataset im Internet gesehen, aber irgendwie wird mir aus keinem das Prinzip (v.a. das Übertragen der Daten in das Datenset von der Datenbank) klar
Michael Kübler
  Mit Zitat antworten Zitat
AlBo55

Registriert seit: 17. Jan 2008
Ort: Lieblingshof
30 Beiträge
 
Delphi XE7 Enterprise
 
#3

AW: Programm-Design, um DB-Abfragen zu minimieren

  Alt 21. Sep 2011, 08:34
Ich hab's noch nicht getestet, aber Firebird kann auch events (named messages) an Anwendungen schicken. ist vielleicht eine Möglichkeit

AlBo55
  Mit Zitat antworten Zitat
Neumann

Registriert seit: 6. Feb 2006
Ort: Moers
540 Beiträge
 
Delphi 12 Athens
 
#4

AW: Programm-Design, um DB-Abfragen zu minimieren

  Alt 21. Sep 2011, 10:35
Mit dem Clientdataset ist es eigentlich keine Geheimwissenschaft. Wenn man Daten "readonly" anzeigen will, nimmt man eine Query-Komponente, einen DatsourceProvider, ein Clientdataset, eine DataSource und zuletzt z.B. ein DBGrid und verbindet alle Komponenten. Setzt man jetzt das Clientdatset auf Active, werden die Daten geholt.
Die Query wird dabei automatisch ausgeführt und wieder geschlossen; die Transactionskomponente muss entsprechend eingestellt werden.

Read/Write ist etwas komplizierter; kann man in der Hilfe nachlesen.
Ralf
Gruß vom Niederrhein
  Mit Zitat antworten Zitat
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.029 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Programm-Design, um DB-Abfragen zu minimieren

  Alt 21. Sep 2011, 22:05
Mit dem Clientdataset ist es eigentlich keine Geheimwissenschaft. Wenn man Daten "readonly" anzeigen will, nimmt man eine Query-Komponente, einen DatsourceProvider, ein Clientdataset, eine DataSource und zuletzt z.B. ein DBGrid und verbindet alle Komponenten. Setzt man jetzt das Clientdatset auf Active, werden die Daten geholt.
Die Query wird dabei automatisch ausgeführt und wieder geschlossen; die Transactionskomponente muss entsprechend eingestellt werden.

Read/Write ist etwas komplizierter; kann man in der Hilfe nachlesen.
Habe gerade etwas damit rumexperimentiert. Klappt auch wunderbar . Nun habe ich meine Daten (soll eine ItemListe einer Combobox werden...) in meinem ClientDataSet. Was ist jetzt das nächste vorgehen? Ich würde es so machen, dass ich das DataSet durchlaufe und die Datensätze so in die ItemListe schreibe, als Objekt würde ich die Datensatz-ID mit in die ItemListe nehmen, um bei der Auswertung mittels FindKey(...) zum korrekten Datensatz springen und die dazugehörigen Daten auslesen zu können. Ist das so in Ordnung oder gibt es eine "einfachere" / sauberere Lösung?

Ihr habt mir bisher sehr geholfen, Jungs!!!
Michael Kübler
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:48 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