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
Benutzerbild von scrat1979
scrat1979

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

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

  Alt 18. Sep 2011, 11:38
Danke Union,

das habe ich bereits alles berücksichtigt

Interessieren würde mich allgemein, wo mögliche Auswahllisten (z.B. Kollegen (welche Dienste können die überhaupt machen...), Wunscharten, etc.) aus der Datenbank im Programm zu speichern sind (ich habe es ja momentan über Klassen (z.B. TDienstArt, TKollege) mit entsprechenden Eigenschaften gelöst und alles in entsprechende ObjectLists gepackt... Gefüllt werden die Listen in meinem Falle beim Programmstart durch WENIGE Datenbankabfragen... Nun Frage ich mich, ob dieses Vorgehen in Ordnung ist oder ob es bessere Alternativen gibt.
Michael Kübler
  Mit Zitat antworten Zitat
Neumann

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

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

  Alt 18. Sep 2011, 13:53
Ich würde mir nicht die Mühe machen solche Daten in eigenen Klassen zu speichern. Es gibt doch das Clientdataset, welches sich einfach befüllen lässt und mit Queries verbunden werden kann.

Was man noch machen könnte ist eine Webanwendung, auf die die Mitarbeiter per Browser zugreifen. Entweder mit PHP bauen, oder z.B. Raudus nehmen für Delphi, zur Zeit das einzige Webframework für Delphi was einigermaßen funktioniert. Dafür braucht man ev. eine kommerzielle Lizenz für EXTJavaScript, bitte selber prüfen.

Ich habe mal ein Webinfo für unsere Kunden angefangen, bisher gehen 2 Funktionen, die Übersicht aktueller Status und der X-Bericht (Umsatzbericht).
Die Übersicht wird alle 10 s aktualisiert; Zeiträume können geändert werden.
War nicht viel Arbeit.

Zum Ansehen: http://www.kassensystem-picasso.de:88
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
 
#3

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

  Alt 18. Sep 2011, 22:13
Okay, danke! ich schau mit mal TClientDataSet und Randus mal näher an

Grüsse,
Michael
Michael Kübler
  Mit Zitat antworten Zitat
FredlFesl

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

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

  Alt 20. Sep 2011, 14: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
 
#5

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

  Alt 20. Sep 2011, 21: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
 
#6

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

  Alt 21. Sep 2011, 07: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
542 Beiträge
 
Delphi 12 Athens
 
#7

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

  Alt 21. Sep 2011, 09: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
 
#8

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

  Alt 21. Sep 2011, 21: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 17:22 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