Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Zeitstrahl-Darstellung von Bereichen in Endlos-Formularen
zurück: Klasse für OOP DB Connect weiter: Datenbankeigenschaften - Workaround Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Tutorial Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Nouba
nicht ganz unwissend :)


Verfasst am:
07. Mai 2013, 22:26
Rufname:
Wohnort: Berlin

Zeitstrahl-Darstellung von Bereichen in Endlos-Formularen - Zeitstrahl-Darstellung von Bereichen in Endlos-Formularen

Nach oben
       Version: Office 2003


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ZEITSTRAHL IN ENDLOS-FORMULAREN


Norbert Bous
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━


07.05.2013


Inhaltsverzeichnis
──────────────────

1 Problematik
2 Bedienung
.. 2.1 Auswahl einer Gruppe
.. 2.2 Ereignisse eintragen bzw. pflegen
.. 2.3 Mitarbeiterdaten
.. 2.4 Feiertage generieren und editieren
.. 2.5 Berichtsdarstellung
.. 2.6 Navigation über den Zeitstrahl
3 Wie funktioniert die Geschichte mit dem Zeitstrahl?
4 Tabellen und Abfragen
.. 4.1 Tabelle: /t42/ mit den Werten `0 - 41' in `x'
.. 4.2 Tabelle: /gruppe/
.. 4.3 Tabelle: /mitarbeiter/
.. 4.4 Tabelle: /feiertag/
.. 4.5 Tabelle: /ereignistyp/
.. 4.6 Tabelle: /ereignis/
.. 4.7 Abfrage: /qselMitarbeiterIn42Tagen/
.. 4.8 Abfrage: /qselEreignisIn42Tagen/
.. 4.9 Abfrage: /qsel42TagePeriode/
.. 4.10 Kreuztabellenabfrage: /xtb42TagePeriode/
.. 4.11 Kreuztabellenabfrage: /xtb42TagePeriodeReport/





1 Problematik
═════════════

Oft stellt sich in Access-Datenbanken die Problematik, Daten über
einen Zeitraum von Tagen in Formularen und Berichten tageweise
darzustellen. Eine Lösung für Berichte ist seit längerem unter
[CrossTabReport.mdb] auf Roger's Access Library zu finden. Ähnlich
kann auch bei Formularen vorgegangen werden. Dabei muss man nur die
Kalender-Logik abbilden.

Leichter gesagt als getan. Zuerst hatte ich versucht, ein Raster von
42 Tagen (6 Wochen will ich schon am Stück sehen) in einer temporären
Tabelle abzubilden, in der Hoffnung, mittels Ziehen mit der Maus im
Datumseinträge vornehmen zu können. Im Prinzip funktioniert das auch –
nur wird durch häufige Schreibzugriffe auf die temporäre Tbelle die
Formular-Anwendung unbrauchbar langsam und die Darstellung ruckelig zu
sehr (Ich entwickle unter Windows XP in einer VirtualBox VM), wenn 50
Personen oder mehr verwaltet werden.

Ich habe mich deshalb für einen Kompromiss entschieden. Dabei
verzichte ich auf das Dragging mit der Maus und wähle das Doppelklick
Ereignis auf einen transparenten Knopf aus, um zu einem Eingabedialog
für das errechnete Datum einer Person zu gelangen. Als Beispiel dient
eine fiktive Abwesenheitsverwaltung für Personen, die in Gruppen
aufgeteilt sind. Dabei können verschiedene Arten von Abwesenheiten
geplant bzw. erfasst werden, welche durch ein Symbol gekennzeichnet
werden.


[CrossTabReport.mdb]
http://www.rogersaccesslibrary.com/forum/topic362.html


2 Bedienung
═══════════

2.1 Auswahl einer Gruppe
────────────────────────

Eine Gruppe kann oben links im Kombifeld ausgewählt werden. Die
Anwendung merkt sich die letzte Auswahl und verwendet diese beim
erneuten Aufruf des Formulars wieder. Ebenso wird das zuletzt
verwendete Startdatum beim Öffnen des Formulars wiederverwendet.

[./ep-main.png]


2.2 Ereignisse eintragen bzw. pflegen
─────────────────────────────────────

Zur Datenpflege von Ereignissen wird ein Doppelklick auf die
Datumsmatrix verwendet, der einen Dialog zur Eingabe eines Anfangs-
und Enddatums ermöglicht. /Hier kann noch individuell gefeilt
werden. Ein `On Key Press' Event im Formular könnte ausgewertet
werden, um für bestimmte Tasten ein schnelles Rauf- bzw. Runterzählen
eines Datumswerts zu erreichen. Alternativ wären auch selbstgebastelte
Spin-Buttons denkbar, die dieselbe Arbeit mit der Maus verrichten./
Vor dem Speichern werden die Datumswerte auf Zeitüberschneidungen mit
anderen Ereignissen derselben Person überprüft und im Konfliktfall
verworfen.
[./ep-ereignis.png]


2.3 Mitarbeiterdaten
────────────────────

Um Mitarbeiterdaten zu editieren /(ich habe im Beispiel nur wenige
notwendige Felder verwendet)/, kann man auf den Namen im Formular
einen Doppelklick absetzen. Zur Eingabe neuer Mitarbeiter gelangt man
über eine Schaltfläche unten links im Formular.
[./ep-mitarbeiter.png]


2.4 Feiertage generieren und editieren
──────────────────────────────────────

Weiterhin kann man mittels Schaltfläche einen Dialog zur
Feiertagspflege aufrufen und Feiertage für ein ausgewähltes Jahr in
eine Tabelle eintragen lassen. Die Feiertage sind zur Zeit noch fest
im Code verdrahtet. Eigene (betriebliche) Tage lassen sich natürlich
auch eingeben.
[./ep-feiertage.png]


2.5 Berichtsdarstellung
───────────────────────

Eine weitere Schaltfläche öffnet einen Bericht, der aus Platzgründen
28 Tage abdeckt und jeweils immer mit dem vorherigen Montag des links
dargestellten Tages beginnt, wenn dieser selbst kein Montag ist. Die
Initialisierung der Steuerelemente erfolgt ähnlich wie im Formular.
[./ep-rpt.png]


2.6 Navigation über den Zeitstrahl
──────────────────────────────────

Im Hauptformular kann man mittels diverser Knöpfe durch die
Zeitgeschichte hüpfen. Ebenso sind die Pfeiltasten /rechts/ (`→') und
/links/ (`←') für tageweises Vor- und Zurückscrollen, die Pfeiltasten
/rauf/ (`↑') und /runter/ (`↓') für wochenweises Vor- und
Zurückscrollen, die `Bild↑'- und die `Bild↓'-Taste für monatsweises
Vor- und Zurückscrollen, sowie die `Pos1'-Taste für das aktuelle Datum
belegt.

Anmerkung: das verflixte /Mousewheel/ ließ sich leider nicht dazu
bändigen, die Navigation durch die Tage zu ermöglich - die Datensätze
wurden leider auch gescrollt. :(


3 Wie funktioniert die Geschichte mit dem Zeitstrahl?
═════════════════════════════════════════════════════

Beginnend mit einem Startdatum, welches in einer globalen Variablen
gespeichert ist, wird ein Datenfeld (`Array') bestehend aus 42 Feldern
mit aufeinanderfolgenden Datumswerten befüllt. Für jedes Datum wird im
Kopfbereich des Formulars ein Bezeichnungsfeld /lbl01/ - /lbl42/ sowie
im Detailbereich ein gleichbreites Datenfeld /d01/ - /d42/
entsprechend des Datums formatiert.
• Das Bezeichnungsfeld wird zweizeilig beschriftet. Zu oberst kommt
der Monatstag. Darunter folgt die Abkürzung des Wochentags.
• Liegt ein Feiertag, Wochende (Samstag oder Sonntag) oder ein
normaler Wochentag vor, wird jeweils der Hintergrund des
entsprechenden Steuerelementpärchens, sowie die Schriftfarbe im
Bezeichnungsfeld geändert.
• Das aktuelle Datum wird mit dem Schriftatrribut /fett/
gekennzeichnet. Die Datenfelder werden mit dem Datumswert und bei
Feiertagen zusätzlich mit dem Namen des Feiertags in der Eigenschaft
Marke (`Tag') versorgt, welche beim /MouseMove Event/ in einem
Textfeld zur Info angezeigt werden.
• Anschließend werden drei Bezeichnungsfelder über den
Tagesbezeichnungen so positioniert, dass diese die Monate der
darunterliegenden Bezeichnungsfelder abbilden.

Die eigentliche Arbeit wird von /halbwegs intelligenten/ Abfragen
erledigt. Dazu wird eine Pivot-Tabelle /t42/ mit genau 42
Zahleneinträgen von 0 - 41 verwendet. Weiterhin gibt es zwei globale
VBA-Funktionen, die in Abfragen für Parameterübergaben verewndet
werden. Diese sind: `GetStartDate()', die das Startdatum aus der
globalen Variablen `g_vStartDate' zurück gibt und `GetGroupNumber()',
die analog mit der ausgewählten Gruppen-Id versorgt wird. Mit diesen
Zutaten plus einer Tabelle mit Personendaten kann ein kartesiches
Produkt gebildet werden, das für alle Personen einer Gruppe genau für
jeden der 42 Tage einen Datensatz bildet. Um die Daten für die
Daten-Textfelder gebrauchsfertig zu machen, generiere ich zusätzlich
eine Spalte mit den Werten /d01/ bis /d42/, die später in der
Kreuztabelle die Spaltenüberschriften darstellt. Weil für alle 42 Tage
ein Datensatz existiert, kann später in den Kreuztabellenabfragen auf
/Fixierte Spaltenüberschriften/ verzichtet werden.


4 Tabellen und Abfragen
═══════════════════════

Hier folgen zunächst die Tabellendefinitionen-.


4.1 Tabelle: /t42/ mit den Werten `0 - 41' in `x'
─────────────────────────────────────────────────

╭────
│ CREATE TABLE t42 (
│ x SMALLINT NOT NULL UNIQUE
│ );
╰────

━━━━
x
────
0
1
2
3
4

40
41
━━━━

Table 1: Daten in t42


4.2 Tabelle: /gruppe/
─────────────────────

╭────
│ CREATE TABLE gruppe (
│ g_id CONTER PRIMARY KEY,
│ g_name TEXT(20) NOT NULL UNIQUE
│ );
╰────

━━━━━━━━━━━━━━
g_id g_name
──────────────
1 A
2 B
3 C
4 D
━━━━━━━━━━━━━━

Table 2: Daten in gruppe


4.3 Tabelle: /mitarbeiter/
──────────────────────────

╭────
│ CREATE TABLE mitarbeiter (
│ m_id COUNTER PRIMARY KEY,
│ m_g_id INTEGER,
│ m_nname TEXT(20) NOT NULL,
│ m_vname TEXT(30) NOT NULL,
│ m_aktiv SMALLINT
│ );
╰────

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
m_id m_g_id m_nname m_vname m_aktiv
──────────────────────────────────────────────────
1 1 Meier Klaus -1
2 1 Müller Peter -1
3 1 Leatherbarrow Darin -1
4 2 Gençtürk Ersan -1
5 2 Stiller Wolfgang -1
6 2 Chikowski Christiane -1
7 2 Schuwerak Bruno -1
9 1 Grün Georg -1
10 1 Gelb Gerda -1
11 1 Roth Rosa -1
12 1 Blau Berthold -1
13 1 Schwarz Stefan -1
14 3 Kummer Karl
15 3 Fröhlich Fritz
16 3 Ehrlich Emil
17 4 Dill Doris -1
18 4 Zufall Rainer -1
19 1 Rauhfuß Ralf -1
20 1 Becker Arnulf -1
21 1 Schömen Elisabeth -1
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Table 3: Daten in mitarbeiter


4.4 Tabelle: /feiertag/
───────────────────────

╭────
│ CREATE TABLE (
│ f_tag DATETIME PRIMARY KEY
│ f_name TEXT(30) NOT NULL
│ );
╰────

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
f_tag f_name
───────────────────────────────────────
2013-01-01 Neujahrstag
2013-03-29 Karfreitag
2013-03-31 Ostersonntag
2013-04-01 Ostermontag
2013-05-01 Tag der Arbeit
2013-05-09 Christi Himmelfahrt
2013-05-19 Pfingsonntag
2013-05-20 Pfingstmontag
2013-10-03 Tag der deutschen Einheit
2013-12-24 Heiligabend*
2013-12-25 1. Weihnachtstag
2013-12-26 2. Weihnachtstag
2013-12-31 Silvester*
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Table 4: Daten in feiertag


4.5 Tabelle: /ereignistyp/
──────────────────────────

╭────
│ CREATE TABLE mitarbeiter (
│ et_id COUNTER PRIMARY KEY,
│ et_name TEXT(20) NOT NULL UNIQUE,
│ et_kurz TEXT(2) NOT NULL UNIQUE,
│ et_symbol TEXT(2) NOT NULL UNIQUE,
│ );
╰────

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
et_id et_name et_kurz et_symbol
────────────────────────────────────────
1 Urlaub U █
2 AZV A ♥
3 Fortbildung F ♦
4 Krankheit K ▲
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Table 5: Daten in ereignistyp


4.6 Tabelle: /ereignis/
───────────────────────

╭────
│ CREATE TABLE Ereignis(
│ e_id COUNTER PRIMARY KEY,
│ e_et_id INTEGER NOT NULL,
│ e_m_id INTEGER NOT NULL,
│ e_start DATETIME NOT NULL,
│ e_ende DATETIME NOT NULL,
│ e_bemerkung TEXT(255)
│ );
╰────

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
e_id e_m_id e_et_id e_start e_ende e_bemerkung
────────────────────────────────────────────────────────────
3 4 4 2013-04-24 2013-04-26
4 2 2 2013-05-21 2013-05-21
10 1 1 2013-05-08 2013-05-08 Hurra!
11 1 2 2013-05-15 2013-05-15
12 2 3 2013-04-29 2013-05-17
15 3 3 2013-05-13 2013-05-14
16 3 2 2013-05-17 2013-05-17
17 11 3 2013-06-03 2013-06-07
21 9 3 2013-06-10 2013-06-14
22 3 3 2013-05-10 2013-05-10
23 19 4 2013-05-13 2013-05-17
24 12 2 2013-05-17 2013-05-17
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Table 6: Daten in ereignistyp


4.7 Abfrage: /qselMitarbeiterIn42Tagen/
───────────────────────────────────────

Es werden für alle /mitarbeiter/, die der Gruppe `m_g_id' =
`GetGroupNumber()' entsprechen, 42 Datensätze ausgewählt. Zusätzlich
wird die Datumsspalte /dt/ aus `GetStartDate()' `+' `0..41'
gebildet. /dxx/ wird zu `d01..d42'.
╭────
│ SELECT m.m_id,
│ m.m_nname &amp; ", " &amp; Left$(m.m_vname, 1) &amp; "." AS m_name,
│ CDate(GetStartDate() + t42.x) AS dt,
│ Format$(t42.x + 1, "\d00") AS dxx,
│ FROM t42,
│ mitarbeiter m
│ WHERE m.m_g_id = GetGroupNumber()
│ AND (m.m_aktiv OR m.m_aktiv IS NULL);
╰────


4.8 Abfrage: /qselEreignisIn42Tagen/
────────────────────────────────────

Für die Ereignisse, die in denselben Zeitraum passen, bzw. diesen
streifen, erstellen wir auch wieder eine Abfrage, damit für alle Tage
eines Ereignisses ein Datensatz existiert. Dabei werden nur aktive
Mitarbeiter und solche, bei denen m_aktiv Null ist, berücksichtigt.
╭────
│ SELECT e.e_id,
│ e.e_m_id,
│ e.e_et_id,
│ et.et_kurz,
│ et.et_symbol,
│ e.e_start + t42.x AS dt
│ FROM t42,
│ ereignistyp et
│ INNER JOIN (mitarbeiter m
│ INNER JOIN ereignis e
│ ON m.m_id = e.e_m_id)
│ ON et.et_id = e.e_et_id
│ WHERE ( ( m.m_aktiv
│ OR m.m_aktiv IS NULL )
│ AND t42.x &lt;= e.e_ende - e.e_start
│ AND e.e_start BETWEEN GetStartDate() AND GetStartDate() + 41 )
│ OR ( ( m.m_aktiv
│ OR m.m_aktiv IS NULL )
│ AND t42.x &lt;= [e].[e_ende] - e.e_start
│ AND e.e_ende BETWEEN GetStartDate() AND GetStartDate() + 41 );
╰────


4.9 Abfrage: /qsel42TagePeriode/
────────────────────────────────

Die beiden vorherigen Abfragen führen wir nun mit einem `Left' `Join'
zusammen, um die Ausgangsbasis für unsere Kreuztabellenabfragen (die
eine für das Formular und die andere für den Bericht) zu
erhalten. Feiertage und Wochenendtage erhalten den Wert `\'\== in
/et_kurz/ bzw. /et_symbol/ zur visuellen Unterscheidung.
╭────
│ SELECT m.m_id,
│ m.m_name,
│ m.dt,
│ m.dxx,
│ e.e_id,
│ e.e_et_id,
│ Iif(f.f_tag IS NOT NULL
│ OR Weekday(e.dt, 2) &gt; 5, "==", e.et_kurz) AS et_kurz,
│ Iif(f.f_tag IS NOT NULL
│ OR Weekday(e.dt, 2) &gt; 5, "==", e.et_symbol) AS et_symbol
│ FROM (qselMitarbeiterIn42tagen m
│ LEFT JOIN qselEreignisIn42Tagen e
│ ON ( m.m_id = e.e_m_id )
│ AND ( m.dt = e.dt ))
│ LEFT JOIN feiertag f
│ ON e.dt = f.f_tag;
╰────


4.10 Kreuztabellenabfrage: /xtb42TagePeriode/
─────────────────────────────────────────────

Das ist unsere finale Formularabfrage.
╭────
│ TRANSFORM First(q.et_symbol) AS et_symbol
│ SELECT q.m_id,
│ First(q.m_name) AS m_name
│ FROM qsel42TagePeriode q
│ GROUP BY q.m_id
│ PIVOT q.dxx;
╰────


4.11 Kreuztabellenabfrage: /xtb42TagePeriodeReport/
───────────────────────────────────────────────────

Und diese Abfrage wird in dem Bericht verwendet - statt der Symbole,
werden hier die Zeichen eingesetzt.
╭────
│ TRANSFORM First(q.et_kurz) AS et_symbol
│ SELECT q.m_id,
│ First(q.m_name) AS m_name
│ FROM qsel42TagePeriode q
│ GROUP BY q.m_id
│ PIVOT q.dxx;
╰────

_________________
mit freundlichen Grüssen Nouba

Wenn beim Lesen eines Beitrags der Eindruck entsteht, dass sich der Fragesteller wenig Mühe gegeben hat, so erhöht das nicht unbedingt die Motivation, eine Antwort zu verfassen.



ep-main.png
 Beschreibung:
das zentrale Anwendungsfenster
 Dateigröße:  89.31 KB
 Angeschaut:  1597 mal

ep-main.png



ep-ereignis.png
 Beschreibung:
Ereignisdialog zum Bearbeiten und Löschen von Zeiträumen
 Dateigröße:  12.98 KB
 Angeschaut:  1595 mal

ep-ereignis.png



ep-mitarbeiter.png
 Beschreibung:
Mitarbeiterdialog
 Dateigröße:  18.31 KB
 Angeschaut:  1594 mal

ep-mitarbeiter.png



ep-feiertage.png
 Beschreibung:
Feiertagseditor
 Dateigröße:  18.6 KB
 Angeschaut:  1595 mal

ep-feiertage.png



ep-rpt.png
 Beschreibung:
Ausschnitt aus der Berichtsvorschau
 Dateigröße:  29.54 KB
 Angeschaut:  1595 mal

ep-rpt.png



EreignisPlaner.zip
 Beschreibung:
die Anwendung

Download
 Dateiname:  EreignisPlaner.zip
 Dateigröße:  147.44 KB
 Heruntergeladen:  156 mal

kyron9000
Practitioner :)


Verfasst am:
08. Mai 2013, 19:33
Rufname:
Wohnort: Wien


AW: Zeitstrahl-Darstellung von Bereichen in Endlos-Formulare - AW: Zeitstrahl-Darstellung von Bereichen in Endlos-Formulare

Nach oben
       Version: Office 2003

Hallo Nouba,

erstmals danke für deine BeispielsDB...
Sehr schön, bin erst am Anfang sie zu verstehen...
aber, habe einen kl. Fehler entdeckt...
die 1 sollte auf -1 gesetzt werden.
Code:
Private Sub cmdPrevYear_Click()
    StartDate = DateAdd("yyyy", -1, g_vStartDate)
End Sub
...denn iM werden die Jahre immer in eine Richtung gezählt.
_________________
Gruß Alfred...

Es ist nicht immer alles so einfach wie es sich im Moment darstellt...
Nouba
nicht ganz unwissend :)


Verfasst am:
08. Mai 2013, 20:12
Rufname:
Wohnort: Berlin

AW: Zeitstrahl-Darstellung von Bereichen in Endlos-Formulare - AW: Zeitstrahl-Darstellung von Bereichen in Endlos-Formulare

Nach oben
       Version: Office 2003

Hallo Alfred,

danke für das Feedback. Smile Sollten sich größere Patzer herausstellen, werde ich einen neue Version hochladen.

_________________
mit freundlichen Grüssen Nouba

Wenn beim Lesen eines Beitrags der Eindruck entsteht, dass sich der Fragesteller wenig Mühe gegeben hat, so erhöht das nicht unbedingt die Motivation, eine Antwort zu verfassen.
kyron9000
Practitioner :)


Verfasst am:
09. Mai 2013, 08:16
Rufname:
Wohnort: Wien

AW: Zeitstrahl-Darstellung von Bereichen in Endlos-Formulare - AW: Zeitstrahl-Darstellung von Bereichen in Endlos-Formulare

Nach oben
       Version: Office 2003

Hallo Nouba,

zufällig entdeckt, Mausmove sucht Feld 43 es gibt aber nur 42, da kommt ein Debug.
Ich habe es mal für mich so gelöst...
Code:
Private Sub cmdDays_MouseMove(Button As Integer, Shift As Integer _
                            , X As Single, Y As Single)
    m_lColumn = X \ m_cDayWidth + 1
    If m_lColumn < 1 Then
        m_lColumn = 1
      ElseIf m_lColumn > m_cDayWidth Then
        m_lColumn = m_cDayWidth
      ElseIf m_lColumn > 42 Then
        m_lColumn = 42
    End If
    Me.Parent.txtInfo = Me(Format$(m_lColumn, "\d00")).Tag
End Sub
Das Programm muss ich noch lange durchstudieren um mich einigermaßen zurechtzufinden Smile .
_________________
Gruß Alfred...

Es ist nicht immer alles so einfach wie es sich im Moment darstellt...
Nouba
nicht ganz unwissend :)


Verfasst am:
09. Mai 2013, 09:38
Rufname:
Wohnort: Berlin


AW: Zeitstrahl-Darstellung von Bereichen in Endlos-Formulare - AW: Zeitstrahl-Darstellung von Bereichen in Endlos-Formulare

Nach oben
       Version: Office 2003

Hallo Alfred,

hier noch einige Korrekturen sowie eine Erweiterung für frmEreignis.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ZEITSTRAHL IN ENDLOS-FORMULAREN


Norbert Bous
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━


09.05.2013


Inhaltsverzeichnis
──────────────────

1 Bugs
2 Erweiterungen





1 Bugs
══════

• fehlerhaftes Inkrement – berichtet von `kyron9000'
╭────
│ Private Sub cmdPrevYear_Click()
│ StartDate = DateAdd("yyyy", -1, g_vStartDate)
│ End Sub
╰────
Listing 1: `cmdPrevYear_Click()' in frmPlan

• falsche Konstante – berichtet von `kyron9000'
╭────
│ Private Sub cmdDays_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
│ m_lColumn = X \ m_cDayWidth + 1
│ If m_lColumn < 1 Then
│ m_lColumn = 1
│ ElseIf m_lColumn > m_cDisplayedDays Then
│ m_lColumn = m_cDisplayedDays
│ End If
│ Me.Parent.txtInfo = Me(Format$(m_lColumn, "\d00")).Tag
│ End Sub
╰────
Listing 2: `cmdDays_MouseMove(...)' in frmPlan

• Die Eigenschaft `Cycle' sollte in `frmPlan', `frmMitarbeiter' und
`frmEreignis' auf `Current Record' gesetzt werden, damit man nicht
versehentlich zu anderen Datensätzen mittels Mausrad,
Tabulatur-Taste oder den Vor- und Zurücktasten navigieren kann.


2 Erweiterungen
═══════════════

• Wie schon im ersten Posting angeregt, folgt hier etwas Code für das
Rauf- und Runterzählen der Datumswerte in `frmEreignis' mittels
`Pfeiltaste Links' (←) und `Pfeiltaste Rechts' (→). Dazu ist die
Eigenschaft `Tastenvorschau' auf `Ja' zu setzen. Ohne Umschalttaste
wirken sich die beiden Pfeiltasten auf das Startdatum aus – in
Verbindung mit gedrückter Umschalttaste wird das Enddatum
berücksichtigt.

╭────
│ 'handles date increment/decrement of the date fields with left and right arrow key
│ Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
│ Dim i&amp;, dt As Date, ctl As Access.Control
│ Static initialized As Boolean

│ If Shift = acShiftMask Then
│ 'use e_ende with the Shift key
│ Set ctl = Me.e_ende
│ ElseIf Shift = 0 Then
│ 'and e_start without any modifier key
│ Set ctl = Me.e_start
│ Else
│ Exit Sub
│ End If

│ Select Case KeyCode
│ Case vbKeyLeft 'decrement date by 1
│ i = -1
│ Case vbKeyRight 'increment value by 1
│ i = 1
│ Case Else
│ Exit Sub
│ End Select

│ KeyCode = 0 'supress the keystroke

│ ctl = ctl + i 'sets the new value

│ 'swap values if e_start is greater than e_ende
│ If Me.e_start > Me.e_ende Then
│ dt = Me.e_start
│ Me.e_start = Me.e_ende
│ Me.e_ende = dt
│ End If

│ 'the form doesn't become dirty this way - hence enable update button manually
│ If Not initialized Then
│ Me.cmdUpdate.Enabled = True
│ initialized = True
│ End If
│ End Sub
╰────
Listing 3: `Form_KeyDown(...)' in frmEreignis

_________________
mit freundlichen Grüssen Nouba

Wenn beim Lesen eines Beitrags der Eindruck entsteht, dass sich der Fragesteller wenig Mühe gegeben hat, so erhöht das nicht unbedingt die Motivation, eine Antwort zu verfassen.
TobiasKarge
Im Profil kannst Du frei den Rang ändern


Verfasst am:
15. Mai 2013, 11:04
Rufname:

AW: Zeitstrahl-Darstellung von Bereichen in Endlos-Formulare - AW: Zeitstrahl-Darstellung von Bereichen in Endlos-Formulare

Nach oben
       Version: Office 2003

Erstmal ein Lob an den Autor dieses wirklich hübschen Tools.

Mir ist da noch ein Fehler aufgefallen, den ich nicht genauer identifizieren kann.

Wenn ein Termin vom 01.03.2013 bis 31.12.2013 eingetragen wird verschwinden die Symbole im Zeitstrahl sobalt der 01.03.2013 aus dem sichbaren Bereich verschwindet.

Edit:
Es liegt offensichtlich an der 42 Tage Periode. Ich weiß aber nicht wie man das beheben kann.
Nouba
nicht ganz unwissend :)


Verfasst am:
15. Mai 2013, 11:59
Rufname:
Wohnort: Berlin

AW: Zeitstrahl-Darstellung von Bereichen in Endlos-Formulare - AW: Zeitstrahl-Darstellung von Bereichen in Endlos-Formulare

Nach oben
       Version: Office 2003

Hallo Tobias,

auch Dir vielen Dank für die Rückmeldung. In der Abfrage qselEreignisIn42Tagen kann jeweils beim Kriterium für e_start und für e_ende GetStartDate() + x angepasst werden. Für x (z. Zt. 41) ist dann der größte Wert einzusetzen, der die Distanz vom angezeigten Startdatum bis zum möglichen Enddatum darstellt.

_________________
mit freundlichen Grüssen Nouba

Wenn beim Lesen eines Beitrags der Eindruck entsteht, dass sich der Fragesteller wenig Mühe gegeben hat, so erhöht das nicht unbedingt die Motivation, eine Antwort zu verfassen.
TobiasKarge
Im Profil kannst Du frei den Rang ändern


Verfasst am:
15. Mai 2013, 12:20
Rufname:

AW: Zeitstrahl-Darstellung von Bereichen in Endlos-Formulare - AW: Zeitstrahl-Darstellung von Bereichen in Endlos-Formulare

Nach oben
       Version: Office 2003

Ich habe an der Stelle jetzt 365 eingetragen und es wird genau vom 01.03.2013 bis zum 11.04.2013 angezeigt.

Ich denke es hängt mit der Tabelle t42 zusammen. Denn das Feld dt in der Abfrage qselEreignisIn42Tagen erzeugt nur so viele Datumswerte wie Felder in der Tabelle t42.

Bin mir nicht sicher, aber sieht so aus.
Nouba
nicht ganz unwissend :)


Verfasst am:
15. Mai 2013, 12:30
Rufname:
Wohnort: Berlin

AW: Zeitstrahl-Darstellung von Bereichen in Endlos-Formulare - AW: Zeitstrahl-Darstellung von Bereichen in Endlos-Formulare

Nach oben
       Version: Office 2003

Hallo Tobias,

Du hast Recht. Den Zahlenstrahl in t42 musst Du auch noch erweitern.

_________________
mit freundlichen Grüssen Nouba

Wenn beim Lesen eines Beitrags der Eindruck entsteht, dass sich der Fragesteller wenig Mühe gegeben hat, so erhöht das nicht unbedingt die Motivation, eine Antwort zu verfassen.
TobiasKarge
Im Profil kannst Du frei den Rang ändern


Verfasst am:
15. Mai 2013, 12:55
Rufname:

AW: Zeitstrahl-Darstellung von Bereichen in Endlos-Formulare - AW: Zeitstrahl-Darstellung von Bereichen in Endlos-Formulare

Nach oben
       Version: Office 2003

Wenn ich die Tabelle t42 erweitere, macht die Kreiztabelle xtb42TagePeriode probleme. Denn sie kann nicht mehr als 255 Spaltenüberschriften erzeugen.
Nouba
nicht ganz unwissend :)


Verfasst am:
15. Mai 2013, 13:54
Rufname:
Wohnort: Berlin

AW: Zeitstrahl-Darstellung von Bereichen in Endlos-Formulare - AW: Zeitstrahl-Darstellung von Bereichen in Endlos-Formulare

Nach oben
       Version: Office 2003

Hallo Tobias,

Du kannst die Eigenschaft fixierte Spaltenüberschriften in den Kreuztabellenabfragen mit "d01";"d02";...;"d42" bzw. für den Bericht nur bis ..."d28" ausfüllen.

Anmerkung: mit größeren Zeiträumen wächst naturlich auch die Anzahl der erstellten Datensätze in den Abfragen und die Formularbedienung wird (bei mir zumindest merklich) langsamer.

_________________
mit freundlichen Grüssen Nouba

Wenn beim Lesen eines Beitrags der Eindruck entsteht, dass sich der Fragesteller wenig Mühe gegeben hat, so erhöht das nicht unbedingt die Motivation, eine Antwort zu verfassen.
Julia12
Gast


Verfasst am:
08. Okt 2013, 08:06
Rufname:

AW: Zeitstrahl-Darstellung von Bereichen in Endlos-Formulare - AW: Zeitstrahl-Darstellung von Bereichen in Endlos-Formulare

Nach oben
       Version: Office 2003

Hallo.

Das sieht ja wirklich super aus. Könntest du mir freundlicher weise die Datei nochmals hochladen - hast ja offensichtlich zahlreiche Änderungen zur Ursprungsdatei gemacht und ich tue mir sehr schwer, diese Änderungen einzuarbeiten.

Gruß Julia12
J.Picard
Semi


Verfasst am:
20. Feb 2014, 09:52
Rufname:

AW: Zeitstrahl-Darstellung von Bereichen in Endlos-Formulare - AW: Zeitstrahl-Darstellung von Bereichen in Endlos-Formulare

Nach oben
       Version: Office 2003

Diese Bitte hätte ich auch....
Nouba
nicht ganz unwissend :)


Verfasst am:
20. Feb 2014, 10:07
Rufname:
Wohnort: Berlin


AW: Zeitstrahl-Darstellung von Bereichen in Endlos-Formulare - AW: Zeitstrahl-Darstellung von Bereichen in Endlos-Formulare

Nach oben
       Version: Office 2003

Hallo,

für die richtige Funktionalität sind nur die berichteten Bugs zu korrigieren. Der Rest ist optional. Ich sehe mich deshalb nicht veranlasst, eine neue Binärversion hier hochzuladen.

_________________
mit freundlichen Grüssen Nouba

Wenn beim Lesen eines Beitrags der Eindruck entsteht, dass sich der Fragesteller wenig Mühe gegeben hat, so erhöht das nicht unbedingt die Motivation, eine Antwort zu verfassen.
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Berichte: Spalten nur in Bestimmten Bereichen 1 Markus_89 98 03. Nov 2013, 14:07
MissPh! Spalten nur in Bestimmten Bereichen
Keine neuen Beiträge Access Formulare: Berechnungen in Endlosformularen (Ufo) 0 MatzeDB1 201 19. März 2011, 22:56
MatzeDB1 Berechnungen in Endlosformularen (Ufo)
Keine neuen Beiträge Access Formulare: Noch Ein mini Prob mit Endlosformularen 4 fugitivusmaximus 168 17. März 2011, 14:10
fugitivusmaximus Noch Ein mini Prob mit Endlosformularen
Keine neuen Beiträge Access Programmierung / VBA: Bilder in Endlosformularen 2 frontera66 205 25. Feb 2010, 11:57
frontera66 Bilder in Endlosformularen
Keine neuen Beiträge Access Hilfe: Endlose Aktualisierung von Endlosformularen 6 E-Aibo 300 02. Dez 2009, 18:34
MiLie Endlose Aktualisierung von Endlosformularen
Keine neuen Beiträge Access Programmierung / VBA: Suchkriterien in Bereichen (Me.Filter...) 1 Chris_Carino 263 10. Aug 2009, 22:22
jens05 Suchkriterien in Bereichen (Me.Filter...)
Keine neuen Beiträge Access Programmierung / VBA: Zeichen in Bereichen zählen, Anzahl in Bereich/ schleife 1 zocker 552 16. Aug 2008, 09:49
JörgG Zeichen in Bereichen zählen, Anzahl in Bereich/ schleife
Keine neuen Beiträge Access Formulare: Befehlsschaltflächen in Endlosformularen 6 Stephan.Kraemer 407 04. Aug 2008, 13:07
Stephan.Kraemer Befehlsschaltflächen in Endlosformularen
Keine neuen Beiträge Access Formulare: Suchen- und Filterfrage, Sortierfrage bei Endlosformularen 8 Tamer79 504 06. Apr 2008, 03:48
derArb Suchen- und Filterfrage, Sortierfrage bei Endlosformularen
Keine neuen Beiträge Access Programmierung / VBA: import von bereichen aus Excel an bestehende Tabelle 1 Gast 585 28. Dez 2006, 20:06
steffen0815 import von bereichen aus Excel an bestehende Tabelle
Keine neuen Beiträge Access Formulare: Sprung zum leeren Datensatz bei Endlosformularen 3 nathy84 893 07. Okt 2006, 09:50
JörgG Sprung zum leeren Datensatz bei Endlosformularen
Keine neuen Beiträge Access Programmierung / VBA: Line in Report unabhängig von Bereichen 2 CCAA 694 01. Aug 2006, 17:54
Gast Line in Report unabhängig von Bereichen
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: CSS Forum