Datenmodul wie richtig anwenden ?

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
lazEdgar
Beiträge: 17
Registriert: Do 27. Mär 2014, 14:46

Datenmodul wie richtig anwenden ?

Beitrag von lazEdgar »

Hallo und frohe Ostern,

kann mir jemand sagen/schreiben, wie werden die Datenmodule eingesetzt.
Im Lazarusbuch steht: "Klare Trennung der Logik von der von grafischen Oberfläche..."....
"....einfach in die Uses aufnehmen...."

Getrennt wurden aber bisher nur meine Nerven :|

Wenn im projekt ein Datenmodul aktiv ist, verstecken sich die graphischen Steuerelemente,
ich kann dann zB. kein TDBGRID auf meine Gui platzieren.
Schliesse ich im Projekt das Datenmodul , kann ich aber zB. nicht mehr TDBGRID mit TDATASOURCE verknüpfen.

???? Konnte bisher ein Datenmodul nicht richtig anwenden ?????

Beste Grüssle
SG.Edgar

LAZ Debütant

wp_xyz
Beiträge: 5134
Registriert: Fr 8. Apr 2011, 09:01

Re: Datenmodul wie richtig anwenden ?

Beitrag von wp_xyz »

Ein Datenmodul ist für nicht-visuelle Komponenten gedacht, häufig für Datenbank-Komponenten. Dann kann jedes Formular, in dessen uses-Anweisung das Datenmodul steht, auf diese zentralen Komponenten zugreifen, ohne sie sich neu anlegen zu müssen.

Hier ein Text über Datenmodule in Delphi, aber Lazarus dürfte (bis auf die verwendeten ADO.Komponenten) ähnlich sein:
http://delphi.about.com/od/database/l/aa101601a.htm

lazEdgar
Beiträge: 17
Registriert: Do 27. Mär 2014, 14:46

Re: Datenmodul wie richtig anwenden ?

Beitrag von lazEdgar »

wp_xyz hat geschrieben:Ein Datenmodul ist für nicht-visuelle Komponenten gedacht, häufig für Datenbank-Komponenten. Dann kann jedes Formular, in dessen uses-Anweisung das Datenmodul steht, auf diese zentralen Komponenten zugreifen, ohne sie sich neu anlegen zu müssen.
Ich komme da ber nicht weiter, wie ich oben bereits geschrieben habe, gibt es ein Problem, die Eigenschaft DATASOURCE von DBGRID ist leer, ich kann dort nichts auswählen, wenn ich die DBkomponenten direkt auf das Formular lege, kann ich dort die DATASOURCE auswählen.
(TDBGRID mit TDATASOURCE verknüpfen)
Auch habe ich dieses Tutorial abgearbeitet:
http://wiki.freepascal.org/SQLdb_Tutorial4
Aber bei den Datenmodulen ist Endstation !
MfG
SG.Edgar

LAZ Debütant

wp_xyz
Beiträge: 5134
Registriert: Fr 8. Apr 2011, 09:01

Re: Datenmodul wie richtig anwenden ?

Beitrag von wp_xyz »

Ist die Datasource auf dem Datenmodul? Dann musst du die Datenmodul-Unit in dem Formular, auf dem das Grid liegt, in die Uses-Liste aufnehmen. Bin nicht ganz sicher, es kann auf jeden Fall auch nicht schaden, die Datenmodul-Unit in Lazarus geöffnet zu haben, wenn die Verknüpfung hergestellt wird, damit Lazarus weiß, was sich alles auf dem Datenmodul befindet.

lazEdgar
Beiträge: 17
Registriert: Do 27. Mär 2014, 14:46

Re: Datenmodul wie richtig anwenden ?

Beitrag von lazEdgar »

Guten Abend nochmal,
OkiDoki, hier liegt aber genau das Problem, Datenmodul-Unit ist in den Uses eingebunden, ist das Datenmodul geschlossen, tritt das im ersten Beitrag angesprochene Problem auf, ist das Datenmodul geöffnet, kann aus der TDBGRID-Eigenschaft mit TDATASOURCE verbunden werden aber ich kann keine weiteren visuellen Komponenten auf das Formular platzieren, weil wenn das Datenmodul geöffnet ist, sind nur die nichtvisuellen Komponenten in der IDE aktiv.
MfG
SG.Edgar

LAZ Debütant

Soner
Beiträge: 726
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: Datenmodul wie richtig anwenden ?

Beitrag von Soner »

Wenn du zum normalen Form gewechselt hast, musst du irgend ein Komponent wählen, dann erscheinen die anderen auch.
Oder zum Quelltext(Unit) des Formular klicken dann F12 drücken.

Datenmodule sind sehr praktisch ich verwende sie in Programmen mit mehr als ein Formular oder in Programmmen die erweiterungsfähig sein können. Du kannst dort Dialoge (Open/Save ..), ImageList, DB-Connnections usw. plazieren und von allen Formularen verwenden, so vermeidet man auch, dass ein Bild für ein Button mehrfach in Resourcen vorhanden ist (Siehe Binarygröße).
Wenn man nur mit ObjektInspektor arbeitet braucht sie nicht mal in uses einzubinden nur um DBConnection mit SQLQuery zu verbinden oder ImageLists mit Toolbars.
Du kannst ein Datenmodul als Hauptdatenmodul verwenden und es geöffnet lassen. So ist es einfacher in anderen Formularen mit Objektinspektor zu verwenden ( z.B. in ProjektInspektor: Toolbar1.ImageList := DataModuleMain.ImageList).

Es ist auch besser DatenModul nicht automatisch sondern in Form's OnCreate/OnDestroy-Ereignis manuell zu erstellen/löschen, weil das Hauptformular als erste erstellt wird, kann es Fehler geben wenn du es im Hauptformular verwenden, bevor ein Datenmodul erstellt wird.
Noch ein Tip:
Wenn du in dein Programm DBConnections, SQLQueries verwendest setze sie nach dem Design Connected:=false, Active:=false und
setze sie selber im Programm manuell nach der Reihenfolge der Benutzung selber true, weil einiger DB-Verbindungen/Queries hängen von anderen ab. So vermeidest du bei komplexen Programmen wo viele Tabellen miteinander verknüpft werden (Master/Detail, Lookup) Fehler.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Datenmodul wie richtig anwenden ?

Beitrag von Christian »

Ich glaub hier liest niemand richtig.
Wenn man ein Datenmodul nicht OFFEN hat, kann man in anderen Formularen die Komponentend darauf nicht finden.
Das wurde von mir schon vor 2 Jahren bemängelt hat aber bisher scheinbar noch niemand korrigiert.
Ich halte deshalb meine Units mit 2 Datenmodulen in meinen Projekten immer offen.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

lazEdgar
Beiträge: 17
Registriert: Do 27. Mär 2014, 14:46

Re: Datenmodul wie richtig anwenden ?

Beitrag von lazEdgar »

Hallo,
Mein Rechner ist pünktlich in über die Ostertage kaputt gegangen, deshalb die späte Rückmeldung.

Test
!!!!---> Das Umschalten in der IDE, zwischenden visuellen und nichtvisuellen Komponenten bei geöffneten Datenmodulen funktioniert bei mir unter Lazarus 1.2 / WIN7 etwas anders, als unter der Linuxversion !!!!
In der WIN-Version muss für die Umschaltung F12 benutzt werden, bei Linux reicht ein Klick auf die Gui oder das jeweilige Datenmodul.

MfG
SG.Edgar

LAZ Debütant

Antworten