Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Neueste Beiträge

#1
Bericht / Re: Variabler Etikettendruck
Letzter Beitrag von Knobbi38 - Heute um 15:04:11
Das ist doch der Normalfall, wenn man mit variablen Daten arbeitet. Schon mal die Property CanGrow für den Report Detailbereich auf True gesetzt?

#2
Bericht / Variabler Etikettendruck
Letzter Beitrag von MaxP - Heute um 14:04:17
Hallo zusammen.

ich drucke schon sehr lange Etiketten für Aktenordner über meine Projekt-DB aus.
I.d.R. werden immer 2 Projekte (bestehend aus Projekt_Nr., Projekt_Bezeichnung u. Geschäftzeichen)
im Detailbereich ( 7 cm hoch) auf einem Etikett einschl. Logo (Berichtskopf) dargestellt.
Das Etikett hat die Maße 38 x 192 mm. Auf einem A4-Blatt (quer) sind 7 Etiketten.
Über das Endlosformular weise ich den aufgelisteten Projekten ihre Etiketten-Nr. zu.
(2 x Etikett 1, 2 x Etikett 2, ...)

Gelegentlich benötige ich auch ein Etikett mit Angabe von 3 Projekten.
Dieses habe ich bisher über einen separaten Bericht ausgegeben.
In diesem Bericht ist die Höhe des Detailbereichs gegenüber des o.g. Berichts reduziert (4,67 cm),
so dass die Angabe von 3 Projekten untereinander passen.

Nun habe ich einen neuen Laser-Drucker, und der Händler hat mich davor gewarnt,
angebrochene Etikettenblätter zu verwenden, da die Kleberückstände die Trommel u. Walzen schädigen können.

Sofern ich 7 Etiketten voll bekomme, ist das kein Problem. Aber spätetens wenn ich ein 3er-Etikett benötige, müsste ich das restliche Blatt wegwerfen.

Meine Frage also: Gibt es eine Möglichkeit, einen Bericht zu entwerfen, bei dem man die Höhe des Detailbereichs variabel ansteuern kann?
z.B. die ersten 2 Etiketten mit 3 Projekten und die restlichen 5 Etiketten mit 2 Projekten.

Gruß
Max
#3
Tabelle/Abfrage / Re: Differenz Tage ohne Wochen...
Letzter Beitrag von andyfau - Februar 09, 2026, 18:46:12
Der Vollständigkeit halber hier noch das Modul zu Feiertagsberechnung ohne irgendwelche Zusatztabellen:

Option Compare Database
Option Explicit

Public Function Ostersonntag( _
    Optional ByVal Jahr As Integer _
  ) As Variant
  Dim D1 As Integer
  Dim D2 As Integer
  Dim D3 As Integer
  Dim D4 As Integer
 
  'Formel nach C.F.Gauss gilt 1583 - 8202:
  If Jahr = 0 Then Jahr = Year(Now)
  If Jahr < 1583 Or Jahr > 8202 Then _
      Err.Raise 5 'Invalid argument'
 
  'Berechnung der Korrekturwerte:
  D1 = (8 * (Jahr \ 100) + 13) \ 25 - 2
  D2 = (Jahr \ 100) - (Jahr \ 400) - 2
  D1 = (15 + D2 - D1) Mod 30
  D3 = 2 * (Jahr Mod 4) + 4 * (Jahr Mod 7)
  D4 = (D1 + 19 * (Jahr Mod 19)) Mod 30
  If D4 = 29 Then
    D4 = 28
  ElseIf D4 = 28 Then
    If (Jahr Mod 19) > 10 Then D4 = 27
  End If
  D3 = (6 + D2 + D3 + 6 * D4) Mod 7
 
  'Berechnung des Datums (ausgehend vom 22.3.):
  Ostersonntag = DateSerial(Jahr, 3, 22 + D4 + D3)
End Function
Public Function FeiertagV( _
    Optional ByVal Datum As Variant _
  ) As String
  Dim Tage As Integer
 
  If IsMissing(Datum) Then Datum = Now
  Tage = DateDiff("d", Ostersonntag(Year(Datum)), Datum)
  Select Case Tage 'relativ zu Ostersonntag
  Case -2: FeiertagV = "Karfreitag"
  Case 0:  FeiertagV = "Ostersonntag"
  Case 1:  FeiertagV = "Ostermontag"
  Case 39: FeiertagV = "Christi Himmelfahrt"
  Case 49: FeiertagV = "Pfingsonntag"
  Case 50: FeiertagV = "Pfingstmontag"
  Case 60: FeiertagV = "Fronleichnam"
  End Select
End Function
Public Function Feiertag( _
    Optional ByVal Datum As Variant _
  ) As String
  Dim TagMonat As Integer
 
  If IsMissing(Datum) Then Datum = Now
  TagMonat = Day(Datum) * 100 + Month(Datum)
  Select Case TagMonat 'im Format DDMM
   Case 101: Feiertag = "Neujahr"
   Case 601: Feiertag = "Dreikönigstag *"
   Case 105: Feiertag = "Tag der Arbeit"
  Case 1508: Feiertag = "Mariä Himmelfahrt *"
   Case 310: Feiertag = "deutsche Einheit"
   Case 111: Feiertag = "Allerheiligen"
  Case 2412: Feiertag = "Heiligabend *"
  Case 2512: Feiertag = "1. Weihnachtstag"
  Case 2612: Feiertag = "2. Weihnachtstag"
  Case 3112: Feiertag = "Silvester *"
  Case Else: Feiertag = FeiertagV(Datum)
  End Select
End Function
Function IstFeiertag( _
    Optional ByVal Datum As Variant _
  ) As Boolean
  IstFeiertag = Len(Feiertag(Datum)) > 0
End Function
Private Sub Form_Click() 'Gibt alle Feiertage eines Jahres aus
  Dim Jahr As Integer
  Dim Datum As Variant
 
  'Cls
  Jahr = Year(Now)
  Debug.Print "Feiertage im Jahr"; Jahr
  For Datum = DateSerial(Jahr, 1, 1) To DateSerial(Jahr, 12, 31)
    If IstFeiertag(Datum) Then Debug.Print Datum, Feiertag(Datum)
  Next Datum
End Sub


#4
Tabelle/Abfrage / Re: Differenz Tage ohne Wochen...
Letzter Beitrag von Problemkind - Februar 09, 2026, 14:14:07
Hallo an alle,

vielen Dank für die Tipps, funktioniert super.
Habe es umgesetzt, auch wenn Ü61 etwas länger dafür gebraucht hat.

Ich habe erst einmal den Tipp von andyfau umgesetzt, die anderen probiere ich aber auch noch. Brauche halt etwas länger.

Danke und Gruß

Frank
#5
Tabelle/Abfrage / Re: Differenz Tage ohne Wochen...
Letzter Beitrag von MzKlMu - Februar 09, 2026, 11:47:20
Hallo,
ich würde auch unbedingt eine Kalendertabelle anlegen. Dann wird das Vorhaben zu einem Kinderspiel. Auch Feiertage lassen sich damit integrieren.
Ich habe vor einer Zeit dazu mal ein beispiel gemacht. Siehe Anhang.
Die Jahreszahlen in den Erläuterungen stimmen natürlich nicht mehr.
#6
Tabelle/Abfrage / Re: Differenz Tage ohne Wochen...
Letzter Beitrag von Knobbi38 - Februar 09, 2026, 11:03:05
Hallo Frank,

für solche Aufgaben eignen sich Kalendertabellen hervorragend. Dort werden dann nur die Tage mit Wochentag <> (Samstag, Sontag) in der Where-Bedingung gezählt. So können auch sehr einfach Feiertage und andere freie Tage berücksichtigt werden. 

Knobbi38

Siehe auch hier im Forum oder
https://www.tksoft-online.de/ms-access/bsp-db-s/bsp-downloads-datum-und-zeit.html
 
#7
Access Programmierung / Re: Im Unterformular eine Nr e...
Letzter Beitrag von Knobbi38 - Februar 09, 2026, 10:57:33
Hallo Köbi,

Makros setzte ich eher sehr selten sein, nur wenn es nicht anders geht. Der Hauptgrund ist weniger die Funktionalität, sondern schlichtweg lassen sich Anwendungen mit Makros nur schlecht dokumentieren und die Makros nicht einfach wiederverwenden.

Der VBA Code in Access ist auch nicht anders wie in anderen Office Anwendungen und verwandt mit VB6. Also kann man ersatzweise auch diese Dokumentation heranziehen. Unterschiede ergeben sich jedoch im Objektmodell sowie bei der Programmierung der UI. So wird eher selten die MSForms Bibliothek verwendet (Userforms) und die dortigen Beispiele mit Steuerelementen sind damit auch nicht zu gebrauchen, was aber kein Nachteil ist.

Meiner Meinung nach ist es wichtig, ein ,,Gefühl" für das Zusammenspiel von Access mit der GUI zu entwickeln. Dafür sind Kenntnisse über die verschiedenen Ereignisse und speziell deren Reihenfolge sehr wichtig. Um dies besser nachvollziehen zu können, verwende ich in der Regel ein System von Debug-Ausgaben mit verschiedenen Leveln. Für eine umfassende Ablaufverfolgung werden diese einfach über die Windows-Debug-Schnittstelle ausgegeben und können dann mit DebugView zur Laufzeit angezeigt und gespeichert werden.

Gruß Knobbi38

#8
Access-Hilfe / Re: Werkzeugleiste
Letzter Beitrag von Bitsqueezer - Februar 09, 2026, 10:37:55
Hallo,

ich würde mal nach einem Makro namens "AUTOEXEC" suchen und ansonsten in den Access-Optionen unter "Aktuelle Datenbank" nachsehen, ob hier ein Startformular eingestellt ist.

In dessen Form_Open bzw. Form_Load Prozedur sollte dann ein solcher Code stehen.

Gruß

Christian
#9
Tabelle/Abfrage / Re: Differenz Tage ohne Wochen...
Letzter Beitrag von andyfau - Februar 09, 2026, 10:21:11
Moin,
Du benötigst keine Extratabellen, sondern nur Start und Endedatum:

Function ArbeitstageZaehlen(StartDate As Date, EndDate As Date) As Long
    Dim CurrentDate As Date
    Dim WorkingDays As Long
   
    CurrentDate = StartDate
    WorkingDays = 0
   
    Do While CurrentDate <= EndDate
        ' Wochentag prüfen (vbMonday = 2, vbSunday = 1)
        ' 1 = Sonntag, 7 = Samstag
        If Weekday(CurrentDate, vbMonday) <= 5 Then ' Montag bis Freitag (1 bis 5)
            WorkingDays = WorkingDays + 1
        End If
        CurrentDate = CurrentDate + 1 ' Nächster Tag
    Loop
   
    ArbeitstageZaehlen = WorkingDays
End Function

Um Feiertage auszuschließen wird es dann etwas aufwendiger. Der einfache Weg: eine zusätzliche Feiertagstabelle. Der elegante Weg: eine zusätzliche Feietagsfunktion.....
#10
Tabelle/Abfrage / Differenz Tage ohne Wochenende
Letzter Beitrag von Problemkind - Februar 09, 2026, 10:13:12
Hallo, ich mal wieder aus dem hohen Norden..

Ich habe viel gesucht, viel gelesen und leider wenig verstanden.

Ich habe eine Tabelle mit den Feldern [Beginn_Inst] und [Ende_Inst]. Daraus möchte ich die Anzahl der Tage unter der Nutzung einer Abfrage ermitteln. Mit DatDiff[Ende_Inst]-[Beginn_Inst] auch kein Thema.
Jetzt möchte ich aber die Wochenenden "raus rechnen".

Ich habe eine weitere Tabelle [tab_Wochentage] erstellt, mit den 7 Wochentagen (1=Sonntag, 2=Montag usw.) oder brauche ich eine Tabelle mit den 365 Tage und wenn ja wie aufgebaut?

Wie müsste dann die Abfrage lauten, damit die Wochenenden nicht mitgerechnet werden?

Ich bedanke mich schon einmal im Vorwege und hoffe auf leicht verständliche Lösungen (ich bin ja noch am lernen..)

Gruß

Frank