Liebes Forum, ;)
leider bin ich mit Access noch nicht so gut vertraut und hoffe deswegen auf Eure Hilfe!
Ich habe ein Formular, in diesem kann ich
-Datum eingeben (z. B. mit dem erscheinenden Kalender rechts)
-Uhrzeit aus einem Kombinationsfeld auswählen (z. B. 06:00, 07:00, 08:00)
--> Mein Ziel ist es
-ein Datum auszuwählen
-im Kombinationsfeld erscheinen dann nur noch die freien Uhrzeiten für diesen Tag
z. B. habe ich für den 18.01.2017 bereits im Kombinationsfeld die Uhrzeit 06:00 ausgewählt
--> dann soll das nächste Mal, wenn ich das Datum 18.01.2017 auswähle, im Kombinationsfeld nur noch 07:00 und 08:00 auswählbar sein (06:00 erscheint gar nicht mehr im Kombinationsfeld).
Ist sowas möglich?
Viele liebe verzweifelte, aber hoffnungsvolle Grüße ;-)
Julia
Hallo,
das ist auf jedenfall moeglich, die Frage ist die Tabellenstruktur.
Kannst du ein Bild des Beziehungsfenster posten, wo und wie moechtest du die Daten speichern?
Ich denke ich wuerde ueber eine Hilfstabelle gehen die alle Uhrzeiten Enthaelt und ueber eine Abfrage die schon belegten ausfiltern.
Gruss
Hallo HB9876 :)
Da ich gerade dabei bin, die Datenbank zu erstellen, sind die vorhandenen Tabellen sehr mau. Ich arbeite momentan mit zwei Tabellen (s. Anhang).
- eine Basistabelle und
- eine Tabelle, die Informationen über das Datum hat (z. B. KW etc).
--> diese Tabellen sollen in einer Abfrage verknüpft werden, dass man zu den zugehörigen Daten auch die KW sieht.
--> Die Abfrage würde dann als Grundlage für das Formular dienen. Allerdings funktioniert das Formular momentan noch nicht, bei Änderungen erscheint die Fehlermeldung "Diese Datensatzgruppe kann nicht aktualisiert werden".
- Ich habe die Tabelle, die ich für die KWs nutze, mit den Uhrzeiten erweitert. D. h. in den Spalten kann ein Datum nun öfter auftauchen, denn es sind ja mehrere Uhrzeiten hinterlegt.
Kannst Du mir erklären, wie ich nun am besten weiter verfahre?
Vielen lieben Dank & einen schönen sonnigen Tag,
Julia
Hey Julia,
erst mal zu etwas Grundsaetzlichen (was du ja eventuell bedenkst), ich wuerde mir immer erst mein komplettes Produkt (Datenbank wie sie am Ende sein sollte) konzipieren.
Das heist alle, zum jetzigen Zeitpunkt, bekannten Funktionen und Merkmale sollten bewusst sein und auf diesen die (normalisierte) Tabellenstruktur erstellt werden.
Dieses erfordert immer einen Aufwand dem man am Anfang evtl. nicht schaetzt, aber spaeter wird man dafuer dankbar sein (zumindest solange man die DABA auch erweitern muss/moechte).
Kannst du uns erlauetern was du am Ende mit der Anwendung vor hast, oder moechtest du nur eine schnelle Loesung fuer deine Frage?
Danke fuer die sonnigen Gruesse (ich lebe zum glueck im Sueden der USA) und dir auch einen schoenen Tag
Hallo,
die Tabelle "Datum_KW" halte ich für ersatzlos überflüssig. Die KW und das Jahr lassen sich über eine Abfrage immer aus dem Datum ermitteln und anzeigen.
Die Uhrzeit ist eine Fließkommazahl und somit für Verknüpfungen zum Ausschluss von Zeiten ungeeignet.
Du benötigtst eine extra Tabelle mit den Uhrzeiten und einer Spalte für einen Primärschlüssel (Integer). In der Uhrzeitspalte wird dieser Primärschlüssel als Fremdschlüssel gespeichert. Erst dann ist es möglich verwendete Uhrzeiten auszuschließen.
Ergänzend erlaube ich mir ein paar Anmerkungen (bitte nicht als böse Kritik verstehen).
* Unter Basis kann man sich Alles und auch Nichts vorstellen. Also Gedanken ordnen und die Tabelle vielleicht in Wareneingang, oder was der Vorgang auch immer darstellt, umtaufen.
* Die Datumstabelle ist unsinnig, denn alle Informationen darin können leicht in Abfragen, Formularen und Berichten errechnet werden.
* Zeitpunkte sollten vorzugsweise in einem (1) Feld festgehalten werden - Datum und Uhrzeit können daraus bei Bedarf leicht extrahiert werden.
* Berechnungen sollten vorzugsweise in Abfragen stattfinden - damit ist man kompatibel zu anderen Datenbanksystemen und kann später die DB auch leicht in ein anderes (größeres) Datenbanksystem migrieren.
* Objekte, wie Mitarbeiter und Lieferanten, sollten in eigenen Tabellen eingetragen werden und über Schlüsselfelder mit der Vorgangstabelle verknüpft werden.
* Leer- und Sonderzeichen (außer dem Unterstrich), sowie Umlaute sollte man in Objektnamen meiden. Für schöne Namen verwendet man die Eigenschaft Beschriftung.
Hallo Zusammen,
ersteinmal finde ich es super, dass mir so viele Leute Tipps geben! :) Ich kenne mich ziemlich gut in Excel aus, da aber Excel auch seine Schwachstellen hat, will ich mich ein bisschen in Access einarbeiten - und da ich auf diesem Gebiet ein Neuling bin, bin ich auf Eure Tipps & Tricks angewiesen.
Zum Hintergrund der ganzen Überlegungen:
Ich würde gerne in Access ein Tool bauen um einen Überblick über den Wareneingang zu gewinnen. Warum das Ganze? Ich habe in der Uni ein bisschen was dazu gelernt und würde das jetzt gerne nachbauen mit Hilfe von Access.
- Das bedeutet zum einen, dass ich eintrage, wann Sendungen ankommen (z. B. am 19.01.2017 um 08:00 Uhr, dann darf keine andere Lieferung in der nächsten Stunde kommen, sondern erst um 09:00 Uhr wieder)
- Zum anderen möchte ich die tatsächliche Ankunftszeit erfassen.
- Außerdem würde ich z. B. heute mir gerne anschauen, was nächste Woche / nächsten 2 Wochen / nächsten Monat etc. ansteht.
Ich freue mich sehr über Anregungen, wie ich das aufbauen kann.
Und z. B. stand in einem der Kommentare, dass ich gar keine Hilfstabelle für die Berechnung der KW benötige - wie mache ich das dann?
Viele Grüße
Julia
Hier mal ein Beispiel, das die folgende Funktion in einem allgemeinen VBA-Modul nutzt (VBA ist fehlerhaft bzgl. der KW nach ISO 8601).Public Function ISO8601WeekNo&(ByVal AnyDate As Date, ByRef Yr&)
Dim Week&, FirstThursday&
FirstThursday = DateSerial(Year(AnyDate - Weekday(AnyDate - 1) + 4), 1, 3)
ISO8601WeekNo = Int((AnyDate - FirstThursday + Weekday(FirstThursday) + 5) / 7)
If Month(AnyDate) = 12 And Week = 1 Then
Yr = Year(AnyDate) + 1
ElseIf Weekday(AnyDate) > vbSunday And Weekday(AnyDate) < vbThursday Then
Yr = Year(AnyDate)
Else
Yr = Year(FirstThursday)
End If
End FunctionHier sind einige Beispiele:'VBA-Direktbereich <Strg-G> im VBA-Editor eingeben
j& = 0 ' nur um eine Variable für das Jahr zu definieren
? ISO8601WeekNo(#2016-12-28#, j)
52
?j
2016
? ISO8601WeekNo(#2017-01-01#, j)
52
?j
2016
? ISO8601WeekNo(Date(), j)
3
?j
2017
?Month(Date())
1
?MonthName(Month(Date()))
Januar
?MonthName(Month(Date()), True)
Jan
?Format$(Date(), "mmmm")
Januar
?Format$(Date(), "mmm")
Jan
Hallo,
ich wollte nicht die KW ueber die Hilfstabelle verwalten, sondern die noch freien Uhrzeiten pro Tag.
Evtl. gibt es hier auch eine andere (elegantere) Loesung, aber so habe ich das in manchen Anwendungen geregelt.
Bin gespannt wie das anderweitig geloest warden kann.
Im generellen hatte ich hier einen guten Post im Forum gelesen, hinsichtlich Wareneingaengen und deren Verwaltung.
Habe den auf die schnelle nicht gefunden, werde spaeter weiter schauen.
Gibt es bestimmte Lieferzeiten von/bis (Uhrzeit) und Liefertage (Mo-Fr)?
Hallo Julia,
bitte gestatte mir folgende Kritik an deinem Plan:
Wenn du WEs nur jede Stunde zulässt, mag das vielleicht dem WE-Personal helfen, aber nicht den Lieferanten.
Stell dir vor, zwei Lieferanten kommen gleichzeitig und einer muss eine Stunde warten, weil er den anderen vorlässt, der ja nur eine kleine Lieferung hat, z. B. nur ein Paket. Der wird dann ganz schön fluchen...
Ich selbst kenne solche Situationen, da ich als Speditionsfahrer gearbeitet habe. Wenn ich dann gesehen habe, dass ein WE-Mitarbeiter nach Empfang einer Mini-Lieferung einfach NICHTS mehr gemacht hat, bis meine Zeit gekommen war, war das sehr mies. Fahrer müssen ja auch noch andere Kunden beliefern, eine Stunde Wartezeit ist da sehr viel, wenn man noch 10 weitere Kunden beliefern muss.
Ich würde die Time-Slots daher deutlich kleiner rastern (z. B. 15 oder 20 Minuten), um Frustration und Ärger zu vermeiden und den Zeitbedarf abhängig von Umfang der Lieferung planen, was ja anhand der Lieferpapiere zu ermitteln wäre. Auch könnte man für kleine Lieferungen eine besondere Behandlung vorsehen; jeder Fahrer wird verstehen, dass ein Lieferant mit einer Handvoll Paketen schneller abgefertigt wird als er selbst, der mit LKW und Hänger vorfährt und daher von längeren Bearbeitungszeiten ausgehen muss.
Auch für das WE-Personal wäre eine andere als die Stunden-Lösung angenehmer, weil es sich dann weniger Flüche und Beschwerden der Fahrer anhören muss.
Nicht jeder WE ist gleich - der eine ist in 5 Minuten bearbeitet, der andere benötigt 3 Stunden. Entsprechend flexibel muss die Bearbeitung gestaltet werden (können).
Bitte berücksichtige dies bei deinem Vorhaben, wobei es letztlich egal wäre, wie fein man das Time-Slot-Raster gestaltet (60, 30, 15, 10 Minuten).
lg
crystal