Universeller Kalender - geht nicht

04/08/2009 - 14:24 von Volker Neurath | Report spam
Hallo zusammen,

mangels anderer sinnvoller Tàtigkeiten feile ich gerade wieder an meiner
Datenbank.
Ziel ist diesmal, ein universelles kalenderformular zur Datumseingabe zu
entwickeln.
Ich weiss, dass es den Date-Picker gibt, aber das "alte"
Calendar-control" gefàllt mir besser ;)

Ich habe also zunàchst ein leeres ungebundenes Formular erstellt, und
ein CalendarControl darauf
gepackt.

Danach habe ich in das Modul ein Wenig Code geschrieben:
Public Event Change()

Public Property Get Datum() As Date
Datum = Me!Kalender.Value
End Property

Public Property Let Datum(aDate As Date)
Me!Kalender.Value = aDate
End Property

Private Sub cmdClose_Click()
DoCmd.Close ObjectType:=acForm, objectname:=Me.Name
End Sub

Private Sub Form_Dirty(Cancel As Integer)
'ereignis auslösen
RaiseEvent Change
End Sub

In das aufrufende Formular kamen folgende zeilen:

1. in den Deklarationsbereich
Private WithEvents objKalender As Form_frmKalenderNeu

2. In das "Bei doppelklick" Ereignis einer Textbox:

Set objKalender = New Form_frmKalenderNeu

With objKalender
.Datum = Me!txtErfassungsDatum
.Visible = True
End With

Jedoch:

es funktioniert nur teilweise.
Der kalender wird wie gewünscht geöffnet und übernimmt auch das in der
TextBox enthaltene Datum.
Umgekehrt jedoch tut sich - nichts. ich kann auf dem Control klicken wie
ich will, das neue Datum
wird nicht übernommen.
Auch eine Verlagerung von "RaiseEvent..." in das "Nach Aktualisierung"
Ereignis des Formulares
àndert nichts.

Was mache ich falsch?

Volker

Wenn es vom Himmel Zitronen regnet -- lerne, Limonade zu machen.
 

Lesen sie die antworten

#1 Josef Poetzl
04/08/2009 - 15:50 | Warnen spam
Hallo!

Volker Neurath schrieb:
[...]
Ich habe also zunàchst ein leeres ungebundenes Formular erstellt, und
ein CalendarControl darauf
gepackt.

Danach habe ich in das Modul ein Wenig Code geschrieben:
Public Event Change()

Public Property Get Datum() As Date
Datum = Me!Kalender.Value
End Property

Public Property Let Datum(aDate As Date)
Me!Kalender.Value = aDate
End Property

Private Sub cmdClose_Click()
DoCmd.Close ObjectType:=acForm, objectname:=Me.Name
End Sub

Private Sub Form_Dirty(Cancel As Integer)
'ereignis auslösen
RaiseEvent Change
End Sub

In das aufrufende Formular kamen folgende zeilen:

1. in den Deklarationsbereich
Private WithEvents objKalender As Form_frmKalenderNeu

2. In das "Bei doppelklick" Ereignis einer Textbox:

Set objKalender = New Form_frmKalenderNeu

With objKalender
.Datum = Me!txtErfassungsDatum
.Visible = True
End With

Jedoch:

es funktioniert nur teilweise.
Der kalender wird wie gewünscht geöffnet und übernimmt auch das in der
TextBox enthaltene Datum.
Umgekehrt jedoch tut sich - nichts. ich kann auf dem Control klicken wie
ich will, das neue Datum
wird nicht übernommen.



Wo ist der Code, der das Datum übernehmen soll?

Auch eine Verlagerung von "RaiseEvent..." in das "Nach Aktualisierung"
Ereignis des Formulares
àndert nichts.



Wo reagierst du auf das Change-Ereignis?

Tipp: Du kannst mit einem Ereignis auch einen Wert weitergeben.

Prinzip (Luftcode):

im Kalender-Formular:
Public Event DateChanged(byval DatWert as date)

private sub cmdOK_Click()
raiseevent DateChanged(Me!Kalender.Value)
docmd.close ...
end sub

Im aufrufenden Formular:
Private WithEvents objKalender As Form_frmKalenderNeu

'Auf Ereignis reagieren:
private sub objKalender_DateChanged(byval DatWert as date)
me.DeinDatumsfeld = DatWert
end sub


mfg
Josef

EPT: (Access Error Prevention Table) http://access.joposol.com/
FAQ: (Access-FAQ von Karl Donaubauer) http://www.donkarl.com/

Ähnliche fragen