collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 116
  • Punkt Versteckte: 1
  • Punkt Mitglieder: 1

Es sind keine Mitglieder online.

* Forenstatistik

  • stats Mitglieder insgesamt: 14472
  • stats Beiträge insgesamt: 72212
  • stats Themen insgesamt: 9746
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: Bedingte Formatierung für Kalenderwoche überschritten  (Gelesen 680 mal)

Offline Petrocelli

  • Newbie
  • Beiträge: 4
Bedingte Formatierung für Kalenderwoche überschritten
« am: Dezember 19, 2018, 15:03:31 »
Hallo,

ich möchte in meinem Bericht das Feld Lieferwoche bei Überschreiten der Lieferwoche rot hinterlegen.

Die Lieferwoche wird aus dem Feld Liefertermin ausgelesen (mit diesem Code: https://codekabinett.com/rdumps.php?Lang=1&targetDoc=vba-kalenderwoche-jahr-datum-ermitteln) und dann mit dem Jahr zusammen so angezeigt:
2018-52, 2019-1, etc.

Wie muß ich die Regel angeben, damit das klappt?

Gruß,
Petro
 

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1483
Re: Bedingte Formatierung für Kalenderwoche überschritten
« Antwort #1 am: Dezember 19, 2018, 15:54:41 »
Die Ausgabe ist mehr fürs Auge gedacht. Zum Vergleichen wäre es besser, ISO-Jahr und ISO-Woche in separaten Zahlenfeldern zu hinterlegen oder ein Zahlenfeld zu bilden, in dem das Jahr mit 100 multipliziert wird und die Wochennummer hinzu addiert wird. Denn beim String-Vergleich wäre z.B. die KW 2019-2 größer als die KW 2019-15.

Im Prinzip muss entweder nur noch eine Funktion für ISOYear() geschrieben werden, die sich leicht aus ISOWeekAndYear() ableiten lässt oder man schreibt ISOWeekAndYear() so um, dass ein Long als Ergebnis heraus kommt. Letzteres könnte so gestaltet werden.
Code: Visual Basic
Function IsoYYYYWW(ByVal weekDate As Date) As Long
   Dim week     As Long
   Dim weekYear As Long

   week = IsoWeek(weekDate)
   weekYear = Year(weekDate)

   If week >= 52 And Month(weekDate) = 1 Then
      weekYear = weekYear - 1
   ElseIf week = 1 And Month(weekDate) = 12 Then
      weekYear = weekYear + 1
   End If

   IsoYYYYWW = weekYear * 100 + week
End Function

Wenn Du nur weekYear zurückgibst, hättest Du eine ISOYear()-Funktion.

PS: weil der Bug nur auf Montage beschränkt ist, könnte man auch immer den Donnerstag der gleichen Woche untersuchen und hat damit sowohl das ISO-Jahr als auch die KW richtig ermittelt.

Damit könnte man die Funktionen kürzer so schreiben.
Code: Visual Basic
Function GetISOWeek(ByVal ADate As Date, _
                    Optional ByRef outISOYear As Integer) As Integer
   Dim ThursdayOfWeek As Date
   
   ThursdayOfWeek = ADate - Weekday(ADate, vbMonday) + 4
   GetISOWeek = DatePart("ww", ThursdayOfWeek, vbMonday)
   outISOYear = Year(ThursdayOfWeek)
End Function

Function GetISOYear(ByVal ADate As Date) As Integer
   Dim ThursdayOfWeek As Date
   
   ThursdayOfWeek = ADate - Weekday(ADate, vbMonday) + 4
   GetISOYear = Year(ThursdayOfWeek)
End Function

Function GetISOYYYYWW(ByVal ADate As Date) As Long
   Dim ThursdayOfWeek As Date
   
   ThursdayOfWeek = ADate - Weekday(ADate, vbMonday) + 4
   GetISOYYYYWW = Year(ThursdayOfWeek) * 100 _
                + DatePart("ww", ThursdayOfWeek, vbMonday)
End Function
« Letzte Änderung: Dezember 19, 2018, 16:30:42 von Lachtaube »
Grüße von der (⌒▽⌒)
 

Offline Petrocelli

  • Newbie
  • Beiträge: 4
Re: Bedingte Formatierung für Kalenderwoche überschritten
« Antwort #2 am: Dezember 20, 2018, 15:57:26 »
Hallo Lachtaube,

danke für den Tipp. Ich habe das mal so ausprobiert und es funktioniert auch. Nur das Format stimmt noch nicht, wenn ich
? GetISOYYYYWW(cdate("20.12.2018")) im Direktfenster eingebe, bekomme ich für heute 201851. Wie muß ich das ändern, damit ich 2018_51 angezeigt bekomme?

Dann wollte ich ja noch die bedingte Formatierung einbringen. Da weiß ich leider auch noch nicht, wie ich das eingeben muß, damit das klappt.

Hast du da noch Tipps?

Gruß,
Petro
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 8084
Re: Bedingte Formatierung für Kalenderwoche überschritten
« Antwort #3 am: Dezember 20, 2018, 19:28:25 »
Hallo,
Zitat
Wie muß ich das ändern, damit ich 2018_51 angezeigt bekomme?
das geht nicht, die Funktion liefert eine Zahl (Long), da kann man keinen Unterstrich einfügen.
Da die bedingte Formatierung mit einem Zahlenwert vergleicht, darf das auch nicht geändert werden.

Was hast Du schon versucht mit der bed. Formatierung ?

Gruß
Klaus
 

Offline Petrocelli

  • Newbie
  • Beiträge: 4
Re: Bedingte Formatierung für Kalenderwoche überschritten
« Antwort #4 am: Dezember 21, 2018, 07:25:35 »
Hallo,

ich habe es jetzt hinbekommen, das es in Formularen und Berichten so formatiert angezeigt wird.

Bei der bedingten Formatierung habe ich versucht, das nicht über das Feld Lieferwoche, sondern über das Datum zu lösen (Wenn "Liefertermin" < "Datum ()" dann "Lieferwoche" = rot.
Klappt aber leider nicht.

Gruß,
Petro
« Letzte Änderung: Dezember 21, 2018, 07:34:45 von Petrocelli »
 

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1483
Re: Bedingte Formatierung für Kalenderwoche überschritten
« Antwort #5 am: Dezember 21, 2018, 08:54:28 »
Hi Petro,

Wie liegen denn die relevanten Daten vor (vielleicht zwei oder drei Musterdatensätze zeigen) und welche Regel soll unter welchem Umstand für jeden dieser Datensätze gelten?

PS: Textfeldsteuerelemente besitzen eine Format-Eigenschaft, mittels derer die Darstellung eines Werts beeinflußt werden kann. 0000-00 würde Dir z.B. zu schönerer Optik verhelfen, ohne den Wert selbst zu verändern.
Grüße von der (⌒▽⌒)
 

Offline Petrocelli

  • Newbie
  • Beiträge: 4
Re: Bedingte Formatierung für Kalenderwoche überschritten
« Antwort #6 am: Dezember 21, 2018, 10:57:30 »
PS: Textfeldsteuerelemente besitzen eine Format-Eigenschaft, mittels derer die Darstellung eines Werts beeinflußt werden kann. 0000-00 würde Dir z.B. zu schönerer Optik verhelfen, ohne den Wert selbst zu verändern.

Das hatte ich jetzt in Berichten und Formularen so gemacht.

Die Daten liegen so vor (abgespeckte Tabellenfelder):
Kunde  AuftragsNr  Auftragsbezeichnung  AngebotsNr  Angebotswert Projekt-Nr  Auftragsstatus  Lieferwoche Liefertermin (Datum,kurz)
Ich trage dann bei der Auftragsanlage den Liefertermin ein. Aus dem wird dann mit obiger Funktion die Lieferwoche ermittelt. In den nachfolgenden Formularen und Berichten steht dann nur die Lieferwoche.Und wenn die überschritten ist, hätte ich gern, daß das Feld Lieferwoche rot dargestellt wird.

Gruß, Petro
 

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1483
Re: Bedingte Formatierung für Kalenderwoche überschritten
« Antwort #7 am: Dezember 21, 2018, 12:45:21 »
Hi Petro,

versuche es mit:

Ausdruck ist: IsoYYYYWW([Liefertermin]) < IsoYYYYWW(Datum())
Dabei kann der Liefertermin trotzdem überschritten sein, wenn eine Lieferung z.B. am Montag erfolgen sollte und heute schon Freitag derselben Woche ist, wird nichts markiert.
Grüße von der (⌒▽⌒)
 

 

Verknüpfung von zwei Formularen / Bedingte Erstellung von neuem Datensatz

Begonnen von micha286Board Formular

Antworten: 9
Aufrufe: 3803
Letzter Beitrag November 16, 2011, 10:20:39
von MzKlMu
bedingte Summe im Formular

Begonnen von JunoBoard Formular

Antworten: 2
Aufrufe: 2484
Letzter Beitrag November 11, 2010, 18:16:08
von oma
Bedingte ComboBox

Begonnen von tobsn121Board Access Programmierung

Antworten: 4
Aufrufe: 1986
Letzter Beitrag August 10, 2015, 16:05:31
von tobsn121
bedingte Auswahl

Begonnen von fred-neumannBoard Tabelle/Abfrage

Antworten: 5
Aufrufe: 2334
Letzter Beitrag Oktober 04, 2016, 15:19:21
von fred-neumann
bedingte formatierungen

Begonnen von tim132Board Access Programmierung

Antworten: 4
Aufrufe: 1274
Letzter Beitrag November 20, 2017, 14:35:11
von PhilS

Advertisment / Werbung - Amazon Affiliate Links