Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Schaltfläche nur zu einem bestimmten Datum

Begonnen von gromax, Oktober 11, 2014, 13:33:21

⏪ vorheriges - nächstes ⏩

gromax

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

DF6GL

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



gromax

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

DF6GL

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



gromax

Hallo DF6GL,

das ist schon klasse!! Respekt und vielen Dank!

Alles Gute
gromax