Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi afterscoll wie in datenmodul anwenden?? (https://www.delphipraxis.net/150222-afterscoll-wie-datenmodul-anwenden.html)

LingNeu 10. Apr 2010 14:50

Datenbank: dataweb TurboDB • Zugriff über: über Datasource

afterscoll wie in datenmodul anwenden??
 
Hallo delphifreunde,

habe ein Datenmodul (dm), indem sich meine Datenbanken und die Tabellen, sowie andere Komponenten befinden.

Im Hauptprogramm kann ich sehr einfach darauf zurückgreifen.
z.B.
dm.Tabelle.Edit;
dm.Tabelle.Post; usw..

Nun benötige ich unbedingt ein Ereignis auf eine Tabelle und zwar Tabelle.AfterScroll()
Diese kann ich zwar jetzt im Datenmodul (dm.) erstellen aber die notwendigen Aktionen müssen im Hauptprogramm stattfinden
z.B. aktualisieren einer Änderung in Feldern. Ich kann nicht auf eine Aktion in der Datenbank reagieren, außer die üblichen Dinge, wie Append, Insert, Delete usw über einen DBNavigator

Wie schaffe ich das jetzt, das ich auf ein DB-Ereignis reagieren kann, oder muss ich doch wieder alle Hundert Komponenten aus dem Datenmodul in das Hauptprogramm verfrachten
Vielleicht kann mir jemand helfen.
Ich kann mir auch nicht vorstellen, das ich nur dieses Problem habe. Leider konnte ich aber über die Suche keine passenden Infos bekommen.
Danke für JEDEN Hinweis!
ciao
LingNeu

mkinzler 10. Apr 2010 14:57

Re: afterscoll wie in datenmodul anwenden??
 
Unsauber: Über Kreuzverbindung und Methode der Form nehmen
Sauber: Über DataSource auf der Form:

DataSource.DataSet.on...

LingNeu 10. Apr 2010 15:24

Re: afterscoll wie in datenmodul anwenden??
 
hallo mkinzler,
danke für Deine Info. Du hast sicherlich in gewisser Weise Recht.
Ich frage mich nur, warum gibt es dann das Datamodul. Man kann die Sache nur dann verwenden, wenn man keine Ereignisse von Komponenten verwenden will und der Nutzen einer Modulisierung ist futsch.
Wahrscheinlich ist diese Sache auch deshalb so unbeliebt - oder täusche ich mich da.
Schade, nun kann ich doch wieder die vielen Compos auf die Hauptform legen - das wars wohl - oder?

Schöne Grüsse
LingNeu

mkinzler 10. Apr 2010 15:25

Re: afterscoll wie in datenmodul anwenden??
 
Die DataSource gehört auch auf das Formular und nicht auf das Datenmodul. Und damit kannst du es ja machen!

LingNeu 10. Apr 2010 15:44

Re: afterscoll wie in datenmodul anwenden??
 
Danke nochmals. Das mache ich jetzt auch so. Andere Lösungen scheint es nicht zu geben um Code und Componenten leicht auszulagern. Die Funktionen habe ich alle schon in einer eigenen Unit.
Leider habe ich allerdings insgesamt über 100 solcher Datasources und Tabellen - uff
ciao
LingNeu

mkinzler 10. Apr 2010 15:51

Re: afterscoll wie in datenmodul anwenden??
 
Aber wohl nicht auf einer Form, oder?

omata 10. Apr 2010 15:54

Re: afterscoll wie in datenmodul anwenden??
 
Zitat:

Zitat von LingNeu
...Leider habe ich allerdings insgesamt über 100 solcher Datasources und Tabellen...

Und da willst du uns was von Übersichtlichkeit erzählen, wunderbar.

Was bringt es, wenn man alles schön in einem Datamodul zusammenfasst, dieses aber aus allen Nähten platzt?

Eine andere Möglichkeit wäre das Modularisieren von Formularinhalten über Frames. Dann sind zwar die Datenbankkomponenten wieder mit auf dem Formular bzw. Frame aber jedes Frame enthält nur das, was es benötigt. So kann dann eine wirkliche Übersichtlichkeit entstehen. Will man das jetzt noch datenbankunabhängig machen, muss man eben noch eine Zwischenschicht mehr einführen. Aber ich halte nichts von diesem "ich lagere alles in ein Datenmodul aus".

LingNeu 10. Apr 2010 18:18

Re: afterscoll wie in datenmodul anwenden??
 
@omata,
du hast mir das "Leben" gerettet!!
Eine superidee. Da sieht man halt die Profis. Ich bin noch immer am Delphi-Lernen. Aber das mit dem Frame - da wäre ich nicht draufgekommen.
DANKE !!!
ciao
LingNeu

sx2008 10. Apr 2010 18:20

Re: afterscoll wie in datenmodul anwenden??
 
Zitat:

Zitat von LingNeu
Leider habe ich allerdings insgesamt über 100 solcher Datasources und Tabellen - uff

Das ist natürlich ganz schlecht.
Du kannst aber die Tabellen (hoffentlich hast du auch Queries) nach Themen geordnet auf mehrere Datenmodule verteilen.
Man sollte auch Programmcode vom Formular in die Datenmodule verlagern.
Beispiel, im Formular steht häufig Code wie dieser:
Delphi-Quellcode:
dm.TabelleAuftrag.Open;
dm.QueryAktiveBestellungen.Open;
dm.QueryBestelltyp.Open;
...
Man verlagert diesen Code jetzt in das Datenmodul:
Delphi-Quellcode:
procedure TMeinDatenModul.OpenAllDatasets;
begin
  TabelleAuftrag.Open;
  QueryAktiveBestellungen.Open;
  QueryBestelltyp.Open;
  ...
end;
Im Formular braucht man dann nur noch dm.OpenAllDatasets aufrufen.
Beim Schliesen gilt natürlich das Gleiche.
Das ist aber erst der Anfang.
Man sollte versuchen einen grossen Teil der "Bussiness-Logik" in die Datenbankmodule zu verschieben.

LingNeu 10. Apr 2010 18:31

Re: afterscoll wie in datenmodul anwenden??
 
@sx2008
danke für deine Hinweise.
Genauso habe ich das auch mit dem Datenmodul gemacht und dort die grundsätzlichen DB-Sachen durchgeführt. Leider schaffte ich aber keinen Event (z.B. AfterScroll) abzufragen und diesen Event dann im Hauptprogramm zu benutzen
Nun habe ich eine Lösung mit den Frames. Der Hammer ist die Möglichkeit, im Frame und in der Hauptform Ereignisse abzufragen
ciao
LingNeu


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:27 Uhr.
Seite 1 von 3  1 23      

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