Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   DataSource-Einstellung im OI funktioniert nicht (https://www.delphipraxis.net/202338-datasource-einstellung-im-oi-funktioniert-nicht.html)

Jasocul 23. Okt 2019 07:20

DataSource-Einstellung im OI funktioniert nicht
 
Situation:
  • Aus einem Projekt habe ich 2 Forms und 1 DataModule kopiert um, diese in einem neuen Projekt zu nutzen. Es gab geringfügige Anpassungen im Uses-Bereich, um selbst definierte Typen und Konstanten aus einer anderen Unit zu nehmen. Die Anpassungen können keine Auswirkung auf mein Problem haben.
  • In einem TCRDBGrid (mit eigenen Erweiterungen und seit Jahren so verwendet) wird im OI eine DataSource aus dem kopierten DataModule zugewiesen.
  • Das DataModule wird zur Laufzeit erzeugt.
  • Das DataModule wird nicht zusätzlich automatisch erzeugt.
  • Das zugehörige DataSet (Query) hat Ergebnisse.
  • Im Grid wird nichts angezeigt. Die Darstellung ist so, als wäre das DataSet nicht aktiv.

Was ich bisher geprüft oder gemacht habe:
  • Alle Sourcen durchsucht, ob es noch eine Instanz des DataModules existiert. Ist nicht der Fall.
  • Alle DCUs gelöscht
  • DPR-Datei geprüft. Alles korrekt.
  • Debugging ergibt, dass DataSource aus dem OI eine andere Adresse hat, als die im DataModule.

Wenn ich die DataSource im Code neu zuweise, wird alles korrekt angezeigt. Aber das will ich so nicht akzeptieren. Hat jemand eine Idee, woran das liegen kann oder was ich nochmal prüfen kann?
Ich hatte so einen Fall noch nie. Auch ein Kollege von mir hat schon einen Blick darauf geworfen und konnte nichts falsches entdecken.

Ergänzung:
Wenn ich das DataModule automatisch erzeugen lasse, funktioniert alles. Das ist bei mir aber nicht üblich, da ich alle Forms und DataModule nur dann erzeuge, wenn es im Programm benötigt wird.

jobo 23. Okt 2019 08:11

AW: DataSource-Einstellung im OI funktioniert nicht
 
Einfach die die Zuweisung wiederholen und mal in der Textvariante des DFM(spätestens nach dem Speichern) nachschauen, ob der Datasource Eintrag wirklich da ist.
Zur Kontrolle ein Label auf die Form bringen, das beim scroll o.ä. einen (wechselnden) Feldwert aus dem Dataset anzeigen soll, irgendeine Spalte, die sich häufig ändert. Das wird wahrscheinlich funktionieren, da es jenseits (vor) der Datasource Bindung geschieht.

Uwe Raabe 23. Okt 2019 08:13

AW: DataSource-Einstellung im OI funktioniert nicht
 
Zitat:

Zitat von Jasocul (Beitrag 1450097)
Auch ein Kollege von mir hat schon einen Blick darauf geworfen und konnte nichts falsches entdecken.

Und der konnte dazu sogar den Source-Code sehen! Wenn das hier nicht geht, dann erstelle ein minimales Testprojekt, mit dem du das Problem reproduzieren kannst. In den meisten Fällen findest du dabei den Fehler selbst.

Jasocul 23. Okt 2019 08:23

AW: DataSource-Einstellung im OI funktioniert nicht
 
Zitat:

Zitat von jobo (Beitrag 1450101)
Einfach die die Zuweisung wiederholen und mal in der Textvariante des DFM(spätestens nach dem Speichern) nachschauen, ob der Datasource Eintrag wirklich da ist.

Das habe ich natürlich schon längst gemacht. Fehlt nur in der Aufstellung. Sorry.
Zitat:

Zitat von jobo (Beitrag 1450101)
Zur Kontrolle ein Label auf die Form bringen, das beim scroll o.ä. einen (wechselnden) Feldwert aus dem Dataset anzeigen soll, irgendeine Spalte, die sich häufig ändert. Das wird wahrscheinlich funktionieren, da es jenseits (vor) der Datasource Bindung geschieht.

Da die Steuerung nur über das Grid erfolgt, habe ich dazu keine Möglichkeit.
Ich habe auch mal einen TDBNavigator dazu gelegt. Auch der hat keine Verbindung zur DataSource.

Was funktioniert:
Wenn ich in der Entwicklungsumgebung das Query aktiv schalte, zeigt er auch Daten im Grid an.
INTERESSANT DABEI:
Lasse ich die Query aktiv und starte das Programm, werden die Daten aus der Entwicklungs-Umgebung angezeigt.

Jasocul 23. Okt 2019 08:26

AW: DataSource-Einstellung im OI funktioniert nicht
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1450102)
Zitat:

Zitat von Jasocul (Beitrag 1450097)
Auch ein Kollege von mir hat schon einen Blick darauf geworfen und konnte nichts falsches entdecken.

Und der konnte dazu sogar den Source-Code sehen! Wenn das hier nicht geht, dann erstelle ein minimales Testprojekt, mit dem du das Problem reproduzieren kannst. In den meisten Fällen findest du dabei den Fehler selbst.

Das habe ich schon in Betracht gezogen, aber noch nicht umgesetzt. Meine Hoffnung war bisher, dass ich einfach irgendwas übersehen habe und von euch mit der Nase drauf gestoßen werde. :wink:

haentschman 23. Okt 2019 09:04

AW: DataSource-Einstellung im OI funktioniert nicht
 
Moin...8-)
Zitat:

Das DataModule wird zur Laufzeit erzeugt.
...aus Versehen nach dem Grid? :gruebel:

jobo 23. Okt 2019 09:09

AW: DataSource-Einstellung im OI funktioniert nicht
 
Ohne Code geraten:
Erst Datasource aus Datenmodul zugewiesen, dann Datenmodul erzeugt. Würde wahrscheinlich nur unauffällig laufen, wenn irgendwo ein catch all exception handling ohne allgemeine Fehlerausgabe liegt.

Wenn Du schon ein Kontrollabel spendieren würdest, um Datasetinhalte zu zeigen, könntest Du ja auch noch einen Button dazu spendieren, der ein dataset.next macht oder sowas.

Ist denn das ganze bei durchlaufendem Delphi? Oder hast Du schon mal neu gestartet?

@haentschan: Das ist gut, die datasource wird ja gar nicht per code hinzugefügt, sondern im OI.

haentschman 23. Okt 2019 09:41

AW: DataSource-Einstellung im OI funktioniert nicht
 
Zitat:

Das ist gut,
:gruebel: Meinst du das ironisch? :wink: Die DataSource liegt auf dem DataModule. Wenn es (DataSource) zwar im Grid im OI eingetragen wird, aber das Datamodule nicht da ist wird es beim Erzeugen des Grids imho ignoriert...oder :gruebel:

Jasocul 23. Okt 2019 10:48

AW: DataSource-Einstellung im OI funktioniert nicht
 
Uwe hat natürlich wieder mal Recht.
Neues Projekt angelegt, die Forms und das Datamodule eingebunden.
Danach Stück für Stück den Source minimiert, bis die Ursache erkennbar war.

Das DataModule wurde zwei mal erzeugt.
Das Schlimme dabei: Zwischen den Zeilen steht nur ein "Try".:oops:

Mit zwei Programmierern angesehen und beide haben es überlesen.:lol:

Jetzt erstmal sehen, warum das andere Projekt an der Stelle überhaupt funktioniert.

Danke für die Unterstützung.

Jasocul 24. Okt 2019 09:36

AW: DataSource-Einstellung im OI funktioniert nicht
 
Abgesehen von diesem dämlichen Fehler, habe ich noch ein Verständnisproblem.
Auch beim zweimaligen Erzeugen der Instanz, wird ja die selbe Instanz-Variable verwendet. Warum wird dann trotzdem die erste Instanz bei der DataSource-Verbindung verwendet?

Nochmal zur Übersicht:
Die erste Form wird erzeugt.
Diese erzeugt die Instanz für das DataModule zwei mal, aber mit der selben Variablen.
Später wird dann die zweite Form mit dem Grid erzeugt. Die DataSource für das Grid ist schon im OI eingetragen worden.

Ich verstehe nicht, warum hier die "alte" Instanz genutzt wird. Ich würde gerne verstehen, warum das so ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:09 Uhr.
Seite 1 von 2  1 2      

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