Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: jecklan1 am November 25, 2017, 18:45:53

Titel: LKW Disposition / Planungstafel
Beitrag von: jecklan1 am November 25, 2017, 18:45:53
Hallo Liebe Community

Ich bin derzeit an einer LKW Disposition. Alles funktioniert soweit ganz gut Fahrzeuge Planen, Übersichten, Faktura etc...

Nun möchte ich gerne die disponierten/geplanten LKW's auf einer Übersichtstafel/Form anzeigen. (So eine Art Übersicht ... welcher LKW ist frei/gebucht.)

Das ganze sollte in etwa so aussehen (siehe Bild im Anhang)

Hat hier jemand eine Idee wie ich das grafisch darstellen kann? Habe ein bissel mit DCOUNT rumgespielt aber ich denke für jedes Feld eine eigene DCOUNT Abfrage zu erstellen ist die "unschönste" Art. Ich habe leider keine Ahnung wie ich das bewerkstelligen soll?

Es existiert bereits eine Query in der ein VON und BIS Datum abgefragt werden.

Hat hier jemand eine Idee?
Vielen Dank im Voraus
Liebe Grüsse
Andy
Titel: Re: LKW Disposition / Planungstafel
Beitrag von: DF6GL am November 26, 2017, 10:30:30
Hallo,

eine Kreuztabellenabfrage mit fixierten Spaltenüberschriften könnte helfen.

Erstellen/Abfrageassistent/Kreuztabellen-Assistent
Titel: Re: LKW Disposition / Planungstafel
Beitrag von: Lachtaube am November 26, 2017, 11:20:38
Du kannst auch eine nichtpropertionale Schriftart verwenden, die Rechtecke oder Quadrate im Idealfall lückenlos aneinanderreihen kann. Die Zeitabschnitte werden dann jeweils in einem Text mit maximal 48 Zeichen abgebildet.Mit einer einfachen Funktion kannst Du dann den Zeitstrahl erstellen.
Public Function TimeToBeam(StartsAt As Date, EndsAt As Date, Optional CombineWith As String)
   Const Offset = 24 'Viertelstunden von 0:00 - 6:00
   
   Dim Result As String * 48
   Dim FirstQuarter As Long
   Dim BeamLength As Long
     
   FirstQuarter = CLng(StartsAt * 96) - Offset + 1 '1 für das erste Zeichen
   BeamLength = ((EndsAt - StartsAt) * 96)
   
   If Len(CombineWith) = 48 Then Result = CombineWith
   
   Mid$(Result, FirstQuarter) = String$(BeamLength, "•")
   TimeToBeam = Result
End Function

Sub Test()
   Dim r As String

   Debug.Print "|"; TimeToBeam(#7:00:00 AM#, #8:00:00 AM#); "|"
   Debug.Print "|"; TimeToBeam(#7:30:00 AM#, #11:15:00 AM#); "|"
   r = TimeToBeam(#7:30:00 AM#, #11:15:00 AM#)
   Debug.Print "|"; TimeToBeam(#4:45:00 PM#, #6:00:00 PM#, r); "|"
End Sub
Die Test-Prozedur gibt dann folgendes im Direktbereich aus:|    ••••                                        |
|      •••••••••••••••                           |
|      •••••••••••••••                      •••••|
Titel: Re: LKW Disposition / Planungstafel
Beitrag von: jecklan1 am November 26, 2017, 11:50:35
Vielen Dank für die schnellen Antworten

Ich habe bereits gestern etwas herumgespielt mit der OnPaint Event Funktion. Denke jedoch nicht das dies der richtige Lösungsansatz ist.
(Habe mein "gebastel" hier angehängt. Ich hoffe das ist hier erlaubt)

--->> Zeitachse geht nur von 06:00 bis 10:00

Ich werde eure Vorschläge später mal ausprobieren.
Titel: Re: LKW Disposition / Planungstafel
Beitrag von: MzKlMu am November 26, 2017, 12:39:04
Hallo,
so etwas ähnliches hatte ich mal für ein Füllstandsanzeige gemacht.
Ich habe Dir das mal für LKW angepasst. Verwendet wie auch von Lachtaube vorschlagen eine nicht proportionale Schrift und kommt völlig ohne VBA aus.

Meine Zeitachse geht über 24 Stunden.
Wenn da wirklich von 06:00 bis 10:00 (vormittags, also nur 4 Stunden ?) ausreicht, lässt da die Auflösung auf 5 Minuten steigern.
Titel: Re: LKW Disposition / Planungstafel
Beitrag von: jecklan1 am November 26, 2017, 12:59:37
Hallo MzKlMu

Das ist der Hammer! Exakt das was ich benötige gesucht habe. Danke!

Ist es auch möglich die Fahrzeuge auf eine Linie zu beschränken auch wenn das Fahrzeug am selben Tag mehrere Einträge hat? Sozusagen nur eine Line pro Fahrzeug?

Liebe Grüsse aus der Schweiz
Andy
Titel: Re: LKW Disposition / Planungstafel
Beitrag von: Lachtaube am November 26, 2017, 13:16:13
Leider zeigt das Textfeld in meinem Access keinen Balken, wenn die Zeit nicht um 6 Uhr beginnt. Ich habe deshalb eine durchgezogene Linie gewählt. Zum anderen habe ich die Anzahl der Zeichen verdoppelt und Consolas 14 als Schriftgröße angegeben. Kleine Änderungen an der Skala wären aber trptzdem noch nötig, was ich mir allerdings erspare. Die Funktion ist in die Abfrage alsBeam: TimeToBeam([DispoVon];[DispoBis])integriert und schaut nach der Änderung nun so aus.Public Function TimeToBeam(StartsAt, EndsAt, Optional CombineWith)
   'alle Werte mit Faktor 2 skaliert
   Const Offset As Long = 24 * 2 'Viertelstunden von 0:00 - 6:00
   
   Dim Result As String * 96 '(48 * 2)
   Dim FirstQuarter As Long
   Dim BeamLength As Long
   
   On Error GoTo e
     
   FirstQuarter = CLng(StartsAt * 96) * 2 - Offset + 1 '1 für das erste Zeichen
   BeamLength = ((EndsAt - StartsAt) * 96) * 2
   
   If Not IsMissing(CombineWith) Then
      If Len(CombineWith & "") = 48 * 2 Then Result = CombineWith
   Else
      Result = String$(96, ChrW$(&H2500)) 'die Linie
   End If
   
   
   Mid$(Result, FirstQuarter) = String$(BeamLength, ChrW$(&H2588)) 'voller Block
   TimeToBeam = Result
   
e:
End Function
Titel: Re: LKW Disposition / Planungstafel
Beitrag von: jecklan1 am November 26, 2017, 13:40:58
Zitat von: Lachtaube am November 26, 2017, 13:16:13
Leider zeigt das Textfeld in meinem Access keinen Balken, wenn die Zeit nicht um 6 Uhr beginnt. Ich habe deshalb eine durchgezogene Linie gewählt. Zum anderen habe ich die Anzahl der Zeichen verdoppelt und Consolas 14 als Schriftgröße angegeben. Kleine Änderungen an der Skala wären aber trptzdem noch nötig, was ich mir allerdings erspare. Die Funktion ist in die Abfrage alsBeam: TimeToBeam([DispoVon];[DispoBis])integriert und schaut nach der Änderung nun so aus.Public Function TimeToBeam(StartsAt, EndsAt, Optional CombineWith)
   'alle Werte mit Faktor 2 skaliert
   Const Offset As Long = 24 * 2 'Viertelstunden von 0:00 - 6:00
   
   Dim Result As String * 96 '(48 * 2)
   Dim FirstQuarter As Long
   Dim BeamLength As Long
   
   On Error GoTo e
     
   FirstQuarter = CLng(StartsAt * 96) * 2 - Offset + 1 '1 für das erste Zeichen
   BeamLength = ((EndsAt - StartsAt) * 96) * 2
   
   If Not IsMissing(CombineWith) Then
      If Len(CombineWith & "") = 48 * 2 Then Result = CombineWith
   Else
      Result = String$(96, ChrW$(&H2500)) 'die Linie
   End If
   
   
   Mid$(Result, FirstQuarter) = String$(BeamLength, ChrW$(&H2588)) 'voller Block
   TimeToBeam = Result
   
e:
End Function


Hallo Lachtaube
Kannst du mir dein Beispiel mal Anhängen? Ich bin VBA technisch nicht so auf der Höhe. Wäre super nett

Gruss
Andy
Titel: Re: LKW Disposition / Planungstafel
Beitrag von: Lachtaube am November 26, 2017, 14:21:27
Kann ich machen Andy.

PS: Wenn Du Dich auf eine horizontale Linie, 36 kleine vertikale Linien (für die Viertelstunden) und 13 vertikale Linien (für die vollen Stunden) beschränkst, kann man die Zeitskala auch relativ einfach dynamisch im Formular-Ereignis Bei Größenänderung an die erforderliche Breite angleichen.
Titel: Re: LKW Disposition / Planungstafel
Beitrag von: jecklan1 am November 27, 2017, 11:01:03
Moin Lachtaube

Danke nochmals für das Beispiel. Funktioniert Super!

Wenn jedoch meine [VON] [BIS] Felder ein Datum enthalten funktioniert es irgendwie nicht so Richtig. Habe das Feld in der Query angepasst auf "Short Time" bringt jedoch nichts.

Hast du eine Idee?
Danke und einen guten Wochenstart
Andy
Titel: Re: LKW Disposition / Planungstafel
Beitrag von: MzKlMu am November 27, 2017, 11:28:47
Hallo,
Du musst das Datum abschneiden, die Formatierung schönt nur die Anzeige, ändert aber nichts am Feldinhalt.
In der Abfrage einfach so:
VonZeit: Von - Int(Von)
BisZeit: Bis - Int(Bis)

Im weiteren Verlauf dann VonZeit und BisZeit verwenden.

Erläuterung:
Ein Datumsfeld ist im Hintergrund sonst nix wie eine Kommazahl des Typs Double. Nach dem Komma ist der dezimale Teil eines Tages (1) als Zeit.
Heute 06:00 = 43066,25
Heute 12:00 = 43066,50
Du brauchst also nur den Teil nach dem Komma. Und der wird mit obigen Formeln errechnet.
ZeitAnteil: 43066,25 - Int(43066,25) = 0,25
Titel: Re: LKW Disposition / Planungstafel
Beitrag von: jecklan1 am November 27, 2017, 11:53:29
Danke MzKlMu

Funktioniert Bestens!

Noch eine letzte Frage : Wie kann ich die Timeline auf 24h Anpassen? Also von 00:00 bis 24:00 ?

Titel: Re: LKW Disposition / Planungstafel
Beitrag von: Lachtaube am November 27, 2017, 12:40:52
Ein Tag hat 96 Viertelstunden. Um mit Deiner Skala einigermaßen konform zu sein, habe ich jedoch für jede Viertelstunde 2 Zeichen gewählt (mit 2 multipliziert). D.h. 192 Zeichen ergeben eine volle Tagesbreite (Result entsprechnd setzen), wobei der Offset komplett entfällt.
Titel: Re: LKW Disposition / Planungstafel
Beitrag von: trebuh am November 29, 2017, 12:29:21
Hallo Klaus und Lachtaube,

ich hätte zu euerem Beispiel eine Frage:

Ist es in dem Formular möglich in der Kopfzeile (da wo Ihr die Uhrzeit habt) die aktuelle Woche anzuzeigen (z.B. Montag bis Sonntag)

Ich habe mal vor, für meinen Milchbetrieb ein Programm zu schreiben. Da könnte ich jetzt euer Beispiel perfekt dafür verwenden, daß mir die Wartezeiten der Milchabgabe wegen einer Behandlung angezeigt wird.
Anstelle des LKW´s werden die behandelten Milchkühe angezeigt, und der Zeitraum wäre ja durch das Datum des behandelten Tages und der Wartezeit des Medikaments gegeben (z.B. 120 Stunden entspricht 5 Tagen).

Somit bräuchte ich in der Kopfzeile nur eine variable Wochenanzeige (oder eventuell 2-wöchig).

Ist sowas machbar?

Gruß Hubert
Titel: Re: LKW Disposition / Planungstafel
Beitrag von: Lachtaube am November 29, 2017, 13:15:24
Das geht selbstverständlich auch. Im Prinzip kann man alle Zahlenwerte darstellen, solange die Skala linear ist und eine entsprechende nichtproportional Schriftart verwendet wird und ein ganzes Vielfaches von Zeichen in eine Zeile passen (120, 240, 360, ... in Deinem Fall). Hier muss man mit Schriftarten und Schriftgrößen halt etwas sielen, um gute Werte zu erzielen.

Theoretisch sollte es auch möglich sein, Texte im Richtext-Format (also HTM-Fragmente) in einem Memofeld zu verwenden, um verschiedene Farben in einzelnen Balken und/oder in einem Balken zu haben. Dafür muss man vermutlich nur einen guten Schluck Kreativgeist aus der Flasche zu sich nehmen und etwas Zeit haben. :)

Und weil die verwendete Schriftart nichtproportional ist, sollte sich sogar die Mausposition über Zeichen X leicht ermitteln lassen.
Titel: Re: LKW Disposition / Planungstafel
Beitrag von: MyleeFreeman am Juni 14, 2023, 15:29:45
Ich finde es eine tolle Idee, eine Markise in den LKW zu installieren. Ich habe auch schon darüber nachgedacht. Ich habe einen mobilen Laden in einem LKW... Gerade bei Gebrauchtmaschinen( https://exportmaschinen.de ) auf einigen Webseiten habe ich LKWs gesehen, die das schon eingebaut hatten.  Eine Markise hat eigentlich kein Problem mit dem Gewicht. Ebenso hast du kein Problem, wenn es viel regnet. Die Form hilft, das Wasser in die Ecken und nach unten zu leiten. Ich denke, es ist eine gute Investition. Und wenn man den LKW in ein paar Jahren verkauft, ist er auch mehr wert als ohne Markise.
Titel: Re: LKW Disposition / Planungstafel
Beitrag von: MzKlMu am Juni 14, 2023, 15:49:55
Hallo,
mal sehen, ob der nach 6 Jahren noch Interesse hat.