Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: gromax am Oktober 11, 2014, 13:33:21

Titel: Schaltfläche nur zu einem bestimmten Datum
Beitrag von: gromax am Oktober 11, 2014, 13:33:21
Hallo, liebe Access-Profis,

auf einem Startformular habe ich eine Schaltfläche (cmd_Steuerung_Archiv) eingepflegt, über die der Anwender Archivdateien anlegen soll. Diese Schaltfläche soll aber ausschließlich zum Ende eines Schuljahres angezeigt (zum Test habe ich das heutige Datum eingetragen) werden.
Ich habe nun eine Prozedur geschrieben, bei der ich nicht weiß, wie ich auf die Schaltfläche zugreifen soll:

Private Sub Form_Load()

  Dim dDatum As Date
  Dim objArchiv As AccessObject
  Dim Y As Integer
   
  Y = Year(Date)
  Set objArchiv = cmd_Steuerung_Archiv
 
  If dDatum >= DateSerial(Y, 10, 11) And dDatum <= DateSerial(Y, 10, 11) Then
    XXXX
  End If

End Sub


Wieder mal bin ich für eine Hilfe sehr dankbar!

Viele Grüße
gromax
Titel: Re: Schaltfläche nur zu einem bestimmten Datum
Beitrag von: DF6GL am Oktober 11, 2014, 14:22:41
Hallo,

soll die Schaltfläche nur an einem(!) bestimmten  Tag angezeigt werden?

Zudem verstehe ich die IF-Logik nicht.

Private Sub Form_Load()
    Me!cmd_Steuerung_Archiv.Visible = DateSerial(Year(Date), 10, 11) = Date
End Sub


Titel: Re: Schaltfläche nur zu einem bestimmten Datum
Beitrag von: gromax am Oktober 11, 2014, 16:57:07
Hallo DF6GL,

das mit der If-Logik ist so eine Sache?! Wenn man mit VBA anfängt, generiert man viel Code mit Intuition und es lässt sich nicht immer alles so zu Gänze logisch erklären - vielleicht wär dann das Programmieren vielleicht auch einfacher!

Ja klar brauche ich die Anzeige der Schaltfläche zu einem bestimmten Zeitpunkt im Jahr, nämlich in den letzten beiden Juli-Wochen eines jeden Schuljahres; zu diesem Zeitpunkt sollten die Anwender die Archiv-Dateien anlegen. So habe ich Deinen Inpuls aufgegriffen und adaptiert:

Private Sub Form_Load()
  Dim Y As Integer

  Y = Year(Date)
 
  If Date >= DateSerial(Y, 7, 15) And Date <= DateSerial(Y, 7, 31) Then
    Me!cmd_Steuerung_Archiv.Visible = Date
  End If

End Sub


Nachdem ich es mit dem aktuellen Datum getestet habe, scheint dies auch zu funktionieren - oder siehst Du darin noch eine fehlerhafte Eingabe? Ich bin mir nie so ganz sicher!!

Vielen Dank für Deine Hilfe am Wochenende! Super!

Viele Grüße
gromax
Titel: Re: Schaltfläche nur zu einem bestimmten Datum
Beitrag von: DF6GL am Oktober 11, 2014, 17:33:11
Hallo,

naja, der Code ist noch ein bisschen fehlerhaft...  ;)



Private Sub Form_Load()
  Dim [color=red]lngAktJahr[/color] As [color=red]LONG[/color]  'vernünftig benennen und deklarieren

  lngAktJahr = Year(Date)
 
  If Date >= DateSerial(lngAktJahr, 7, 15) And Date <= DateSerial(lngAktJahr, 7, 31) Then
    Me!cmd_Steuerung_Archiv.Visible = true    'Die Eigenschaft kann nur Wahr oder falsch werden.
Else
    Me!cmd_Steuerung_Archiv.Visible = false ' natürlich auch wieder unsichbar machen, wenn das Datum nicht in den Zeitbereich fällt.
End If

End Sub


etwas komprimierter sieht das so aus:

Private Sub Form_Load()
    Me!cmd_Steuerung_Archiv.Visible  =       Date >= DateSerial(lngAktJahr, 7, 15) And Date <= DateSerial(lngAktJahr, 7, 31)
End Sub


Titel: Re: Schaltfläche nur zu einem bestimmten Datum
Beitrag von: gromax am Oktober 11, 2014, 18:24:59
Hallo DF6GL,

das ist schon klasse!! Respekt und vielen Dank!

Alles Gute
gromax