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 08.12.2017, 13:44   #16
Nouba
MOF Guru
MOF Guru
Standard

Für das 1. Listenfeld
Code:

SELECT DISTINT Year(Datumsfeld) AS J
FROM   T;
Für das 2. Listenfeld
Code:

SELECT DISTINCT Month(Datumsdeld) AS M
FROM   T
WHERE  Datumsfeld BETWEEN DateSerial([DeinAusgewaehltesJahr], 1, 1) AND
                          DateSerial([DeinAusgewaehltesJahr], 12, 31)
Für das 3. Listenfeld
Code:

SELECT DISTINCT Day(Datumsdeld) AS D
FROM   T
WHERE  Datumsfeld BETWEEN DateSerial([DeinAusgewaehltesJahr], [DeinAusgewaehlterMonat], 1) AND
                          DateSerial([DeinAusgewaehltesJahr], [DeinAusgewaehlterMonat] + 1, 0)
Die Parameter können sowohl als Formularparameter ausgelegt werden, so dass nur ein Requery auf das/die nachfolgenden Listenfelder nötig ist, als auch im VBA-Code in den Abfragetext eingesetzt und der RowSource des Nachfolgers zugewiesen werden, oder auch als echte Parameter in den Abfragen verwendet werden, wobei dann jedoch Recordsets geöffnet werden müssen, die an die beiden letzten Listenfelder in der Kaskade zuzuweisen wären. Das auslösende Ereignis sollte Nach Aktualisierung der Listenfelder sein.
Nouba ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.12.2017, 14:13   #17
el_gomero
MOF Koryphäe
MOF Koryphäe
Standard

Hallo,

ich hab dir mal ein kleines Beispiel erstellt. Schau dir das Formular und den Code dahinter an. Sollte auch als Anfänger zu verstehen sein, sonst fragen.
Angehängte Dateien
Dateityp: zip Zeitfilter.zip (19,1 KB, 4x aufgerufen)

__________________

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, 16:29   #18
Chris97724
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hi nouba,

das war genau das, wonach ich gesucht hatte. Vielen Dank :-)

Komischerweise hat es zu Beginn folgende Fehlermeldung angezeigt, welche aber mittlerweile nicht mehr erscheint:

Dieser Ausdruck wurde falsch eingegeben, oder er ist zu komplex, um ausgewertet zu werden. Beispielsweise kann ein numerischer Ausdruck zu viele komplizierte Elemente enthalten. Vereinfachen Sie den Ausdruck, indem Sie Teile des Ausdrucks Variablen zuweisen. (Fehler 3071).

Wovon kann das kommen?
Chris97724 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.12.2017, 16:33   #19
Chris97724
Threadstarter Threadstarter
MOF User
MOF User
Standard

Zitat: von el_gomero Beitrag anzeigen

Hallo,

ich hab dir mal ein kleines Beispiel erstellt. Schau dir das Formular und den Code dahinter an. Sollte auch als Anfänger zu verstehen sein, sonst fragen.

Hi Jürgen,

vielen Dank für die Rückmeldung und das Beispiel :-) Das ist natürlich auch eine super Lösung! Ich werde mir kommende Woche den Code mal genauer anschauen weil ich jetzt am Wochenende nicht mehr dazu kommen werde :-(. Jetzt weiß ich auch was genau mit einem Filter gemeint ist.

Gruß Christian
Chris97724 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.12.2017, 17:24   #20
Chris97724
Threadstarter Threadstarter
MOF User
MOF User
Standard

Update:

Zitat: von Nouba Beitrag anzeigen

Für das 1. Listenfeld

Code:

SELECT DISTINT Year(Datumsfeld) AS J
FROM   T;
Für das 2. Listenfeld
Code:

SELECT DISTINCT Month(Datumsdeld) AS M
FROM   T
WHERE  Datumsfeld BETWEEN DateSerial([DeinAusgewaehltesJahr], 1, 1) AND
                          DateSerial([DeinAusgewaehltesJahr], 12, 31)
Für das 3. Listenfeld
Code:

SELECT DISTINCT Day(Datumsdeld) AS D
FROM   T
WHERE  Datumsfeld BETWEEN DateSerial([DeinAusgewaehltesJahr], [DeinAusgewaehlterMonat], 1) AND
                          DateSerial([DeinAusgewaehltesJahr], [DeinAusgewaehlterMonat] + 1, 0)
Die Parameter können sowohl als Formularparameter ausgelegt werden, so dass nur ein Requery auf das/die nachfolgenden Listenfelder nötig ist, als auch im VBA-Code in den Abfragetext eingesetzt und der RowSource des Nachfolgers zugewiesen werden, oder auch als echte Parameter in den Abfragen verwendet werden, wobei dann jedoch Recordsets geöffnet werden müssen, die an die beiden letzten Listenfelder in der Kaskade zuzuweisen wären. Das auslösende Ereignis sollte Nach Aktualisierung der Listenfelder sein.

Die 3 Listenfelder scheinen zwar zu funktionieren und zeigen nun die korrekten Werte an, nur leider muss ich zuvor wie oben schon erwähnt, 2x eine Fehler/Hinweismeldung bestätigen. Diese poppt nun jedesmal auf wenn ich das Formular öffne:

"Dieser Ausdruck
wurde falsch eingegeben oder ist zu komplex, um ausgewertet zu werden. ...
Vereinfachen Sie den Ausdruck, indem Sie Teile des Ausdrucks Variablen
zuweisen."

Ich habe die 3 Abfragen einzeln ausgeführt. Die funktionieren fehlerlos. Ich habe in den ersten beiden Listenfeldern jeweils noch einen ReQuery auf die nachfolgende Liste nach Aktualisierung gesetzt.

Mir sagt die Fehlermeldung so gesehen überhaupt gar nix. Ebenso zeigt er mir nicht an, wo sich der Fehler jetzt überhaupt befinden soll.
Chris97724 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.12.2017, 18:16   #21
Nouba
MOF Guru
MOF Guru
Standard

Im Anhang findest Du ein funktionierendes Beispiel.

PS: ... und bitte keine kompletten Beiträge zitieren.
Angehängte Dateien
Dateityp: zip mof_347938.zip (25,3 KB, 6x aufgerufen)
Nouba ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.12.2017, 18:55   #22
Chris97724
Threadstarter Threadstarter
MOF User
MOF User
Standard

Zitat: von Nouba Beitrag anzeigen

Im Anhang findest Du ein funktionierendes Beispiel.

PS: ... und bitte keine kompletten Beiträge zitieren.

Hi nouba,

danke für die Zusendung des Beispiels. Ich konnte mich noch nicht so richtig zurechtfinden. Ich hab im Anhang mal meine Beispieldatei hochgeladen. Sie enthält nichts außer das eigentliche Problem.

Vielleicht kommt dann jemand drauf. Ich bin echt überfragt da meine Listenfelder auch die Ergebnisse korrekt darstellen.
Angehängte Dateien
Dateityp: rar Testdatenbank.rar (50,1 KB, 6x aufgerufen)
Chris97724 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.12.2017, 20:02   #23
Nouba
MOF Guru
MOF Guru
Standard

Chris, das Problem entsteht wohl dadurch, dass bei nicht ausgewähltem Wert (also Null) in einer oder beiden Lstenfeldern Jahr bzw. Monat die Funktion DateSerial versagt und eine Fehlermeldung hervorruft. Abhilfe kannst Du erzielen, wenn Du die RowSource für den Monat erst dann setzt, wenn auch garantiert ein Jahr ausgewählt wurde. Mit dem Tag wäre ebenso zu verfahren.

PS: die Angabe der Sortierung in den Abfragen ist überflüssig, weil Access von Hause aus eindeutige Werte in Abfragen aufsteigend entsprechend der Feldliste von links nach rechts sortiert.
Nouba ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.12.2017, 20:57   #24
Chris97724
Threadstarter Threadstarter
MOF User
MOF User
Standard

Zitat: von Nouba Beitrag anzeigen

Abhilfe kannst Du erzielen, wenn Du die RowSource für den Monat erst dann setzt, wenn auch garantiert ein Jahr ausgewählt wurde. Mit dem Tag wäre ebenso zu verfahren.

Hallo nouba,

also das Problem hab ich soweit verstanden. Was ein RowSource ist und was ich da setzen muss, ist mir vollkommen unklar. Ich habe davon leider noch nie was gehört. Wahrscheinlich meinst Du damit, das der Cursor zu Beginn immer irgendwo gesetzt sein muss sodass bereits zu Beginn etwas ausgewählt ist und daher keine Fehler auftreten, richtig?
Chris97724 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.12.2017, 21:07   #25
Nouba
MOF Guru
MOF Guru
Standard

RowSource = Datensatzherkunft.
Nouba ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.12.2017, 21:44   #26
Chris97724
Threadstarter Threadstarter
MOF User
MOF User
Standard

Zitat: von Nouba Beitrag anzeigen

RowSource = Datensatzherkunft.

Ah okay, verstehe.

Das wäre dann in meinem Fall bei Datensatzherkunft "Listbox Jahr" folgender Code, oder?

Code:

Me.list10 = Me.list10.itemdata(0)
Die Listbox heißt list10 und die erste Zeile soll er vorauswählen.

Bei der Datensatzherkunft steht aber schonwas drin

Code:

SELECT Jahr.Expr1000
FROM Jahr
ORDER BY Jahr.[Expr1000];
Soll ich den Code da jetzt einfach dazwischenbauen? SQL scheint das ja nicht zu sein, eher VBA wahrscheinlich?
Chris97724 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.12.2017, 22:06   #27
Nouba
MOF Guru
MOF Guru
Standard

Trage bei liste10 Jahr als Datensatzherkunft ein und lösche in den anderen beiden Listenfeldern die Datensatzherkunft. Der Code wäre dann so anzupassen.
Code:

Private Sub Liste10_AfterUpdate()
   With Me.Liste12
      If .RowSource = vbNullString Then
         .RowSource = "Monat"
      Else
         .Requery
      End If
   End With
End Sub

Private Sub Liste12_AfterUpdate()
   With Me.Liste14
      If .RowSource = vbNullString Then
         .RowSource = "Tag"
      Else
         .Requery
      End If
   End With
End Sub
Nouba ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.12.2017, 16:01   #28
Beaker s.a.
MOF Koryphäe
MOF Koryphäe
Standard

Hallo Chris,

Zitat:

Die 3 Listenfelder scheinen zwar zu funktionieren und zeigen nun die korrekten Werte an, nur leider muss ich zuvor wie oben schon erwähnt, 2x eine Fehler/Hinweismeldung bestätigen. Diese poppt nun jedesmal auf wenn ich das Formular öffne:

Dieses kannst du durch deine gedachte Vorauswahl verhindern (Luftcode)
Code:

Private Sub Form_Open()
    Me.lstJahr = Me.lstJahr.ItemData(0)
    Me.lstMonat.Requery
    Me.lstMonat = Me.lstMonat.ItemData(0)
    Me.lstTag.Requery
End Sub
gruss ekkehard

__________________

--
S.M.I.²L.E.
Beaker s.a. ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.12.2017, 20:04   #29
Chris97724
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hi zusammen,

vielen Dank für Eure Hilfe allesamt. Habt mir sehr weitergeholfen.

Es funktioniert jetzt alles einwandfrei.
Viele Grüße und noch einen schönen Rest-Samstag
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 10:08 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.