Problem beim Schließen einer Formularinstanz

27/02/2008 - 11:22 von Michael Schörner | Report spam
Moin allerseits,

derzeit arbeite ich an einem Access-Projekt, in dem ich ein bestimmtes
Formular mehrfach instanziere. Die einzelnen Instanzen werden innerhalb
einer Collection verwaltet, die in einer Klasse gekapselt ist, die wiederum
von einer Klasse, in der ich alle verwendeten Formulare kapsele, als
Eigenschaft geführt wird. Das klappt eigentlich wunderbar, wenn sich nicht
unter bestimten Bedingungen Instanzen weigerten zu schließen.

Dabei ist auffàllig, dass zwar die Formularinstanz aus der Collection
gelöscht wird, dass Formular sich aber nicht schließt. Ein weiterer Klick
auf die Schließen-Schaltflàche im Formular löst nur einen Fehler aus, weil
die angeforderte Instanz bereits nicht mehr existiert. Das Formular làsst
sich dann nur noch über die Standard-Schließen-Schlatflàche (weißes Kreuz
auf rotem Grund) schließen.

Hier die entsprechenden Code-Schnippsel:

In der cmdClose_Click-Prozedur des Formulars
...
myForms.Termine.CloseFormTermin m_objTermin.T_ID ' Bei bestehendem
Datensatz bzw.
myForms.Termine.CloseFormTermin 0 ' Bei
Neuanlange, denn m_objTermin.T_ID àndert sich nach dem Speichern, wenn dem
Datensatz eine ID zugewiesen wird
...

In der CloseFormTermin-Prozedur der Kapselklasse der Collection
...
Dim strKey As String ' Hàlt den Key

strKey = "Termin" & CStr(lTermin) ' Key zusammenbauen, lTermin ist die
ID des Datensatzes, die als Parameter übergeben wird
m_colFormTermine.Remove strKey ' Instanz aus der Collection entfernen
...

Das Formular ist ungebunden. Daten werden mittels eines Geschàftsobjekts
angezeigt und können nur über die Geschàftslogikschicht persistent geàndert
werden. Wenn ich nun einen neuen Datensatz anlege, d.h. eine Formularinstanz
mit einem darin enthaltenen noch weitgehend leeren Geschàftsobjekt erstelle,
Daten eingebe, speichere und dann das Formular per Schaltflàche schließen
will, wird zwar die Formularinstanz aus der Collection entfernt, das
Formular aber nicht geschlossen.

Hat jemand irgendeine Idee, woran das liegen kann? Ich bin derzeit ziemlich
ratlos.

Vielen Dank im Voraus.

Viele Grüße
Michael Schörner
 

Lesen sie die antworten

#1 Mark Doerbandt
27/02/2008 - 11:44 | Warnen spam
Hallo, Michael,

Michael Schörner:

derzeit arbeite ich an einem Access-Projekt, in dem ich ein bestimmtes
Formular mehrfach instanziere. Die einzelnen Instanzen werden innerhalb
einer Collection verwaltet, die in einer Klasse gekapselt ist, die wiederum
von einer Klasse, in der ich alle verwendeten Formulare kapsele, als
Eigenschaft geführt wird. Das klappt eigentlich wunderbar, wenn sich nicht
unter bestimten Bedingungen Instanzen weigerten zu schließen.

Dabei ist auffàllig, dass zwar die Formularinstanz aus der Collection
gelöscht wird, dass Formular sich aber nicht schließt. Ein weiterer Klick
auf die Schließen-Schaltflàche im Formular löst nur einen Fehler aus, weil
die angeforderte Instanz bereits nicht mehr existiert. Das Formular làsst
sich dann nur noch über die Standard-Schließen-Schlatflàche (weißes Kreuz
auf rotem Grund) schließen.

Hier die entsprechenden Code-Schnippsel:

In der cmdClose_Click-Prozedur des Formulars
...
myForms.Termine.CloseFormTermin m_objTermin.T_ID ' Bei bestehendem
Datensatz bzw.
myForms.Termine.CloseFormTermin 0 ' Bei
Neuanlange, denn m_objTermin.T_ID àndert sich nach dem Speichern, wenn dem
Datensatz eine ID zugewiesen wird
...

In der CloseFormTermin-Prozedur der Kapselklasse der Collection
...
Dim strKey As String ' Hàlt den Key

strKey = "Termin" & CStr(lTermin) ' Key zusammenbauen, lTermin ist die
ID des Datensatzes, die als Parameter übergeben wird
m_colFormTermine.Remove strKey ' Instanz aus der Collection entfernen
...

Das Formular ist ungebunden. Daten werden mittels eines Geschàftsobjekts
angezeigt und können nur über die Geschàftslogikschicht persistent geàndert
werden. Wenn ich nun einen neuen Datensatz anlege, d.h. eine Formularinstanz
mit einem darin enthaltenen noch weitgehend leeren Geschàftsobjekt erstelle,
Daten eingebe, speichere und dann das Formular per Schaltflàche schließen
will, wird zwar die Formularinstanz aus der Collection entfernt, das
Formular aber nicht geschlossen.



verstehe ich Dich richtig, dass das Problem nur beim Anlegen neuer
Datensaetze entsteht. Wenn ja, wie erzeugst Du die IDs - denn diese
benutzt Du ja im Key?

Zweitens: wie genau schliesst Du die Formulare? Das ist aus dem
geposteten Code nicht ersichtlich.

Gruss - Mark

2. SEK (SQL Server-Entwickler-Konferenz) in Nürnberg:
12./13.4 und 19./20.4.2008 http://www.donkarl.com/SEK

Bitte keine eMails auf Newsgroup-Beitràge senden.

Ähnliche fragen