MS-Office-Forum
Google
   

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > Microsoft Access
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads Der Renner, 11 Entwicklertools für Access, Tipps & Trick und offene Datenbanken zum einzigartigen Preis.
Themen-Optionen Ansicht
Alt 07.12.2017, 10:37   #1
Chris97724
MOF User
MOF User
Standard Acc2007 - Hierarchisch gegliedertes Listenfeld aus Datumspalte (Jahr -> Monat -> Tage)

Sehr geehrtes Forum,

ich habe gerade eine Problemstellung die ich bisher nicht vollends lösen konnte:

Grundlage ist eine Tabelle, welche mit der Zeit mit Datensätzen gefüllt wird (täglich). Diese Tabelle enthält eine Spalte "Datum".

Ich habe ein Formular erstellt, welche die Navigation durch die Datenbank gewährleistet. Hier möchte ich auch über ein Listenfeld anzeigen lassen, welches Datum bereits importiert wurde.

Wie ich das mit einem Listenfeld realisiere, hat schon funktioniert. Habe einfach eine SELECT DISTINCT Abfrage erstellt und diese mit dem Listenfeld verknüpft. Da aber ein Jahr sehr viele Tage hat und mit der Zeit auch mehrere Jahre in der Datenbank enthalten sein warden, würde dieses Listenfeld sehr übersichtlich warden.

Meine Idee: Eine Art "hierarchisches" Listenfeld.

Man klickt z. B. aufs Jahr 2017, dann poppen die importierten Monate eine spalte rechts daneben auf, klickt man dann einen Monat an, so poppen die importierten Tage des Monats auf. Das ware dann quasi ein dreispaltiges Listenfeld.

Ist sowas realisierbar?

Würde mich sehr über eine kurze Hilfestellung freuen.
#

VG Christian
Chris97724 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 07.12.2017, 10:39   #2
gpswanderer
MOF Guru
MOF Guru
Standard

Hallo,
suche mal nach abhängigen Kombinationsfeldern, da findest Du jede Menge.Das gilt sinngemäß auch für Listenfelder.

__________________

Gruß
Klaus
Office2010, Win10
gpswanderer ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 07.12.2017, 12:21   #3
ebs17
MOF Guru
MOF Guru
Standard

Meine Empfehlung wäre: Nutze einfache Datenbanktechnik = einen Filter. Das Programmieren von Abhängigkeiten kannst Du Dir für höhere Aufgaben aufsparen.

Filter über Monate, Jahre usw. sind Zeitraumfilter, sprich Du kannst zu gewünschten und beliebigen Zeiträumen kommen, wenn Du deine Datumswerte in solcher Form filterst:
Code:

SELECT DISTINCT Datumswert
FROM TabelleX
WHERE Datumswert BETWEEN [von] AND [bis]

__________________

Ein freundliches Glück Auf!

Eberhard

Abfrageperformance ist kein Geheimnis
SQL ist leicht: {0}:{1}:{2}:{3}:{4}:{5}:{6}:{7}:{8}:{9}:{10}
Dein Dankeschön: DBWiki=>Spende
ebs17 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 07.12.2017, 12:36   #4
markusxy
MOF Koryphäe
MOF Koryphäe
Standard

du brauchst dazu wohl drei Listenfelder oder Comboboxen, die von einander abhängig sind. Und zum Filtern, dann die Abfragen.

Also die Infos von Eberhard und Klaus zusammennehmen und schon kommst du ans Ziel.

LG M
markusxy ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 07.12.2017, 12:42   #5
Chris97724
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hi zusammen,

danke für die Rückmeldung. Ich muss sagen, die Kombination aus den drei Antworten von euch, hat mich jetzt noch mehr verwirrt. Brauch ich jetzt noch die 3 Kombinationsfelder oder eher nicht? Spalte 1 soll mir halt z. b. aus den ganzen "Datums" aus der Tabelle die Jahre anzeigen (2016, 2017), wenn ich dann auf 2017 klicke z. B. (Januar, Dezember) und wenn ich auf Dezember klicke die einzelnen Tage. das soll quasi nur eine Art Anzeige sein das der Nutzer der Datenbank weis, welche Daten schon im Archiv sind und er somit nicht noch ein zweites mal mehr importieren muss.
Chris97724 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 07.12.2017, 12:49   #6
markusxy
MOF Koryphäe
MOF Koryphäe
Standard

Für Jahr, Monat, Tag brauchst du jeweils entweder eine Combobox oder ein Listenfeld. Was du nimmst ist reine Geschmackssache.


LG M
markusxy ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 07.12.2017, 12:52   #7
el_gomero
MOF Koryphäe
MOF Koryphäe
Standard

Moin,

für die Variante von Eberhard brauchst du nur 2 Felder zur Übergabe von ab und bis Datumswert.

__________________

Gruß
Jürgen
el_gomero ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 07.12.2017, 13:27   #8
Chris97724
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hi zusammen

wenn das richtig sehe ist doch der Teil
Code:

WHERE Datum BETWEEN [von] and [bis]
eine Parameterabfrage die Eingaben von mir erfordert. Aktuell zeigt er mir auch nicht das Jahr an sondern immer das komplette Datum und nicht nur das Jahr. Das zweite Listenfeld müsste ja quasi alle Monate innerhalb eines Jahres anzeigen. Also irgendwie steh ich auf dem Schlauch
Chris97724 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 07.12.2017, 13:36   #9
el_gomero
MOF Koryphäe
MOF Koryphäe
Standard

die von bis Variante verlangt ein komplettes Datum in den beiden Feldern. Der Where-Teil könnte auch für einen Formular-)Filter herangezogen werden.

__________________

Gruß
Jürgen
el_gomero ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 07.12.2017, 14:02   #10
markusxy
MOF Koryphäe
MOF Koryphäe
Standard

Um das Datum richtig anzuzeigen, kannst du mit den Funktionen Format/DatePart arbeiten.

Select DatePart('yyyy', Datum)

Um zu filtern musst du mittels Dateserial z.B. auf ein Jahr filtern
Start = DateSerial(jahr,1,1) bis Dateserial(jahr,12,31)
Für einen Monat DateSerial(jahr,Monat,1) bis DateSerial(jahr,monat + 1,1)-1
Schau dir die Funktionen in der Hilfe an, da finden sicher Erklärungen + Beispiele.
markusxy ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.12.2017, 11:32   #11
Chris97724
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hi nochmal (wenn auch etwas verspätet),

ich habe das jetzt mal probiert, versteh nur leider nicht genau was ich machen soll. Ich hab mich jetzt selbst etwas durchgehangelt, aber auch das funktioniert nicht so ganz. Ich versuch es mal zu beschreiben:

Das erste Listenfeld zeigt mein Jahr an (liste19). Das klappt auch soweit. Das Listenfeld habe ich mit einer Abfrage hinterlegt die folgenden Code enthält:

Code:

SELECT DISTINCT Year(Datum) AS [Year]
FROM Datenarchiv
ORDER BY Year(Datum);
Das zweite Listenfeld (Liste21) habe ich mit einer weiteren Abfrage hinterlegt, die folgenden Code enthält:

Code:

SELECT DISTINCT Month(Datum) AS [Month]
FROM Datenarchiv
WHERE Month = Liste19;
Damit soll jetzt realisiert werden, dass das zweite Listenfeld nur die Monate aus dem Jahr anzeigt, welches zuvor in Liste19 ausgewählt wurde.

Hierzu habe ich im ersten Listenfeld noch das Ereignis "Nach Aktualisierung" ausgewählt und folgenden Code hinterlegt:

Code:

Private Sub Liste19_AfterUpdate()
Liste21.Requery
End Sub
Geht leider auch nicht. Ich komm bei Eurer Lösung gar nicht drauf was ich da machen soll. Leider fehlt mir da hierzu zu detailliertes Access-Wissen. Meine Lösung hab ich mir selbst erarbeitet, funktioniert leider auch nicht so ganz.

Hat jemand noch eine zündende Idee für mich wo ich als Halb-Laie nicht ganz am verzweifeln bin? Soll jetzt nicht negativ rüberkommen, war echt super das ihr euch bemüht habt. Ich bin nur leider zu doof dafür das zu verstehen.
Chris97724 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.12.2017, 12:26   #12
el_gomero
MOF Koryphäe
MOF Koryphäe
Standard

Moinsen,

in #3 hat Eberhard dir eine einfache Möglichkeit aufgezeigt.

Warum willst du jetzt mit Gewalt eine Lösung umsetzen, für die deine bisherigen Kenntnisse nicht ausreichen?

__________________

Gruß
Jürgen
el_gomero ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.12.2017, 12:34   #13
Chris97724
Threadstarter Threadstarter
MOF User
MOF User
Standard

Zitat: von el_gomero Beitrag anzeigen

Moinsen,

in #3 hat Eberhard dir eine einfache Möglichkeit aufgezeigt.

Warum willst du jetzt mit Gewalt eine Lösung umsetzen, für die deine bisherigen Kenntnisse nicht ausreichen?

Ich konnte mit der Lösung aus #3 leider erstmal nichts anfangen. Muss ich den SQL-Code dann quasi in einem Listenfeld hinterlegen?
Chris97724 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.12.2017, 12:53   #14
ebs17
MOF Guru
MOF Guru
Standard

Zitat:

Habe einfach eine SELECT DISTINCT Abfrage erstellt und diese mit dem Listenfeld verknüpft.

Das verursachte irgendwie den Gedanken, Du könntest mit Abfragen / SQL-Anweisungen etwas anfangen und folglich eine zusätzliche Idee integrieren.

__________________

Ein freundliches Glück Auf!

Eberhard

Abfrageperformance ist kein Geheimnis
SQL ist leicht: {0}:{1}:{2}:{3}:{4}:{5}:{6}:{7}:{8}:{9}:{10}
Dein Dankeschön: DBWiki=>Spende
ebs17 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.12.2017, 12:59   #15
Chris97724
Threadstarter Threadstarter
MOF User
MOF User
Standard

Zitat: von ebs17 Beitrag anzeigen

Das verursachte irgendwie den Gedanken, Du könntest mit Abfragen / SQL-Anweisungen etwas anfangen und folglich eine zusätzliche Idee integrieren.

Ich kann damit in begrenztem Umfang schon etwas anfangen. Wo ich aktuell nur die Probleme habe ist das mit den verschiedenen Listenfeldern.

Was ich an Deinem Code aus #3 nicht verstehe ist das mit dem BETWEEN. Da poppen bei mir immer Fenster auf (was ich erwartet habe) und es wird eine Eingabe erforderlich. Das war aber nicht das was ich erreichen wollte, sondern eine Listenfeld-/Kombifeld-Darstellung wo ich schnell sehen kann, was sich bereits in der Tabelle für Zeiträume befinden, ohne der Erforderlichkeit manueller Eingaben.

Eventuell reden wir auch total aneinander vorbei. Wenn ich mich etwas unglücklich ausgedrückt haben sollte ist das natürlich ein Fehler von mir.
Chris97724 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:14 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

Copyright ©2000-2010 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günther Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.
Beachten Sie bitte auch unsere Nutzungsbedingungen.