Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: T417 am Juni 30, 2010, 14:29:09

Titel: Filter erstellen für Datum-Kombifeld
Beitrag von: T417 am Juni 30, 2010, 14:29:09
Ich habe ein Datum-Kombifeld das seine Daten aus dem Datumsfeld der Haupttabelle erhällt.
Das Datumsfeld ist natürlich in seiner Standartversion: TT,MM,JJJJ
Die Anzeige in den Kombifeld soll aber (wegen besserer Übersicht) nur noch den Monat und Jahr (zB Sep 2010) angezeigt werden, und logischerweise auch gefiltert sein.

Soweitsogut. Alle Vorschläge die ich hier nachgelesen habe, erwiesen sich aber als Sackgassen, liegt wahrscheinlich an meinen unnötig komplexen Code. Da ich nur wenig Lust habe mit diesen Code weiterzuarbeiten, wäre ich für neuen Code dankbar.

Gruß
T.
Titel: Re: Filter erstellen für Datum-Kombifeld
Beitrag von: database am Juni 30, 2010, 15:02:54
Servus,

ich nehme an, du beziehst die Daten für das Kombifeld aus einer Abfrage bzw. aus einer SQL in den Steuerelementeigenschaften.

Um das Datum in der von dir gewünschten Form darzustellen kannst du folgende Formatierung im Abfrageentwurf anwenden:

neuesFormat: Format([DeinDatumsfeld];"mmm jjjj")
Titel: Re: Filter erstellen für Datum-Kombifeld
Beitrag von: T417 am Juni 30, 2010, 15:13:27
Ich arbeite direkt mit SQL im VBA.
Mein mometanes Codefragment sieht so aus:& " AND Datum = " & Format(Me!KombiDatum, "\#yyyy-mm-dd\#")

Problem bisher: Jede Änderung wurde entweder Ignoriert, oder ergab Fehlermeldungen ohne Ende.
Titel: Re: Filter erstellen für Datum-Kombifeld
Beitrag von: database am Juni 30, 2010, 15:24:34
HI,

das ist ein Teil der WHERE-Klausel - hier brauchst du für die Darstellung ja nichts umstellen.

In der Spaltenliste, also im SELECT-Teil nimmst du dann Format([Datum],"mmm yyyy") AS XYZDatum um die Darstellung auf Jun 2010 zu ändern.
Titel: Re: Filter erstellen für Datum-Kombifeld
Beitrag von: T417 am Juni 30, 2010, 15:41:30
Autsch, kein Wunder das nichst klappt wenn ich in der Where-Klausel herumfusche.
Das wird jetzt nur noch ne Arbeit die Filter an den richtigen Stellen umzuschreiben und das beste hoffen.
Titel: Re: Filter erstellen für Datum-Kombifeld
Beitrag von: T417 am Juni 30, 2010, 16:23:45
Hmm, jetzt wirds interessant. Jetzt zeigt er mir nur die Daten an, die am Monatsersten sind.Er soll mir aber die Daten des ganzen Monats zeigen.MSQL = "SELECT DISTINCT Format([Datum],'mmmm yyyy') AS MJDatum FROM Haupttabelle "
Titel: Re: Filter erstellen für Datum-Kombifeld
Beitrag von: DF6GL am Juni 30, 2010, 16:42:01
Hallo,

als Datensatzherkunft für das Kombifeld:

Select distinct Format([Datum],"mmm yyyy") AS XYZDatum from Haupttabelle


SQL-String für das Formular/den Bericht oder was auch immer:

... & " AND  Format([Datum],'mmm yyyy')  = '" & Me!KombiDatum & "'"  ...
Titel: Re: Filter erstellen für Datum-Kombifeld
Beitrag von: T417 am Juni 30, 2010, 17:12:25
Ich weiß nicht. Nachdem ich die Suchabfrage angepasst hatte, zeigte er nach einer Datumseingabe gar keine Ergebnisse mehr an.
Vieleicht sollte ich an das Problem später nochmal angehen.
Titel: Re: Filter erstellen für Datum-Kombifeld
Beitrag von: database am Juni 30, 2010, 19:46:29
Hallo,

ZitatJetzt zeigt er mir nur die Daten an, die am Monatsersten sind

Naja, m.E. hast du folgende Möglichkeiten:

Nimm das Datumsfeld mit in die Abfrage rein

Du darfst eines nicht übersehen - mit DISTINCT erhältst du eine Auswahl OHNE Duplikate.
Sieh dir mal dein Ergebnis an - Jan 2010 ...  Feb 2010 ... Mar 2010  oder?
Du wolltest ja nur den Monatsnamen und das Jahr sehen - und genau das liefert deine Abfrage - und durch DISTINCT genau einmal.
Lässt du DISTINCT weg, dann kommen meinetwegen 30 x Jan 2010 wenn es 30 Einträge in der DB gibt - mit genau NULL Aussagekraft, da das Datum (Tag) nicht sichtbar ist.
Nimm mal das Datumsfeld mit in die Abfrage und stelle im Kombifeld die Spaltenbreite auf 0, dann bekommst du (wahrscheinlich weil nicht getestet) mehrere Einträge für jedes Monat angezeigt DISTINCT würde nun lediglich alle Einträge unterdrücken die gleiches Datum aufweisen.

Leider weiß ich ja nicht was du mit der Auswahlmöglichkeit im Kombifeld bezweckst ... 
Klassisch wäre es dadurch eine Vorauswahl zu erhalten - man sieht dass es im Jänner Daten gegeben hat - man wählt den Jan 2010 aus und bekommt dann meinetwegen in einem Unterformular oder Listenfeld ALLE Einträge angezeigt, die im Jänner 2010 eingetragen wurden.... Nur für den Zweck brauchts dann noch die eine oder andere Zeile VBA
Titel: Re: Filter erstellen für Datum-Kombifeld
Beitrag von: DF6GL am Juni 30, 2010, 20:27:09
Hallo,

ich durchblicke jetzt nicht (mehr) was überhaupt gemacht werden soll.

Beschreib also bitte ncohmal genau und ausführlich, was die ganze Geschichte als Ergebnis liefern soll.

Meine Interpretation (geanu wie die von database):


In einer Kombifeldliste alle "Datums"werte im Format  Jan 2010 aus der Tabelle "Haupttabelle" (Feld "Datum")
zur Auswahl anbieten und nach erfolgter Auswahl alle Datensätze in einem Listenfeld ( oder als Endlos-Formular) anzeigen, die dem ausgewählten Monat entsprechen.


Wenn so, dann (wiederholter) Vorschlag:


Kombifeld "KombiDatum":

Datensatzherkunft: Select distinct Format([Datum],"mmm yyyy") AS XYZDatum from Haupttabelle
Gebundene Spalte: 1
Spaltenanzahl: 1
Spaltenbreiten: 3 cm
Steuerelementinhalt:  leer, nichts


Anzeige mit Endlosform, in dem sich auch das Kombi (im Formularkopf) befindet:

Sub KombiDatum_Afterupdate()
Me.Recordsource=" select * from Haupttabelle where  Format([Datum],'mmm yyyy')  = '" & Me!KombiDatum & "'"  
End Sub

oder Anzeige in einem Listenfeld ("lstListe1" mit passend eingestellten restlichen Eigenschaften):


Sub KombiDatum_Afterupdate()
Me!lstListe1.Rowsource=" select * from Haupttabelle where  Format([Datum],'mmm yyyy')  = '" & Me!KombiDatum & "'"  
End Sub




So, damit hoffe ich, genügend vorgekaut zu haben..  ;D
Titel: Re: Filter erstellen für Datum-Kombifeld
Beitrag von: T417 am Juli 08, 2010, 13:37:13

Also auf ein Neues:
Ich habe meine Auswahl mittels Kombifeld genau wie Franz,DF6GL, gesagt hat. Mit der einzigen Ausnahme, das die Daten des Kombifeld mittels eines GotFokus-Ereignis ünergeben werden, im Endeffekt aber das Gleiche.

Das Problem liegt nur daran, das ich immer nur die Daten des Monatsersten bekomme. Es liegt auch nicht an den DISTICT bei den Kombifeldern, sondern daran, das ich zwar die Filter richtig eingestell habe, aber die Suchfunktion noch nicht.

Aber mit den Code klapps nicht:MSQL = "SELECT * FROM Haupttabelle WHERE Format([Datum],'mmm yyyy')  = '" & Me!KombiDatum & "'""
Titel: Re: Filter erstellen für Datum-Kombifeld
Beitrag von: DF6GL am Juli 08, 2010, 17:56:54
Hallo,

warum denn GotFocus???

nimm Afterupdate...


"im Endeffekt aber das Gleiche."     nein...


Wenn Du das Ganze genau so machst wie vorgeschlagen, klappt das auch...
Titel: Re: Filter erstellen für Datum-Kombifeld
Beitrag von: T417 am Juli 13, 2010, 11:40:33
After Update könnte auch klappen, aber GotFocus reicht aus. Soll ja beim aufklappen des Kombifeldes die gefilterte Auswahl anzeigen.
Außerdem ist es derselbe Code, nur hab ich eine zusätzliche Veränderung für die Felder, weshalb ich diese nicht direkt als Herkunftsobjekt eingebe, sondern übers VBA.

MSQL = "SELECT DISTINCT Format([Datum],'mmm yyyy') AS MJDatum FROM Haupttabelle "
KombiDatum.RowSource = MSQL


MSQL = "SELECT * FROM Haupttabelle WHERE Format([Datum],'mmm yyyy')  = '" & Me!KombiDatum & "'""
Me.RecordSource = MSQL


Und du darfs ja nicht übersehen, das es ja mit normalen Datum geklappt hat.

Ich denke der Fehler liegt irgendwo in der SQL ich hab nur keine Ahnung wo.
Achja, du schreibst ],"mmm yyyy", ich kann das nur mit Hochkommas: 'mmm yyyy'. 

Titel: Re: Filter erstellen für Datum-Kombifeld
Beitrag von: DF6GL am Juli 13, 2010, 12:58:40
Hallo,

"After Update könnte auch klappen, aber GotFocus reicht aus. Soll ja beim aufklappen des Kombifeldes die gefilterte Auswahl anzeigen."

naja, wenn Du meinst...


"Und du darfs ja nicht übersehen, das es ja mit normalen Datum geklappt hat."

jetzt ist es aber kein "normales Datum"..





MSQL = "SELECT * FROM Haupttabelle WHERE Format([Datum],'mmm yyyy')  = '" & Me!KombiDatum & "'""

hier ist ein Gänsefuß am Ende zuviel.


"Achja, du schreibst ],"mmm yyyy", ich kann das nur mit Hochkommas: 'mmm yyyy'.  "

OK, da hast Du Recht... Habe in meinem letzten Postings den Code entspr. geändert.
Titel: Re: Filter erstellen für Datum-Kombifeld
Beitrag von: T417 am Juli 13, 2010, 13:28:35
Ich glaub der Fehler liegt hier:
"jetzt ist es aber kein "normales Datum".. "

Ich hatte halt gehofft, das es einen einfachen Weg gibt, wie man aus einen Standart-Datumsfeld-Suche, auf einer Monats-Suche kommt.
Sollte eigendlich die Übersichtlichkeit steigern.

Der Gänsefuß war nur beim kopieren dazwischengeraten. Ist im Code aber nicht.

Ich glaub ich geh an dieses Problem irgendwann demnächst mit frischen Ideen an.
Titel: Re: Filter erstellen für Datum-Kombifeld
Beitrag von: DF6GL am Juli 13, 2010, 15:10:23
Hallo,

also, wir reden immer um den heißen Brei herum...


Die ganze Geschichte funktioniert, wenn sie wie beschrieben gemacht wird.


Poste mal den ganzen damit zusammenhängenden Code einschließlich SQL-String der Kombis und die Namen und Datentypen der beteiligten Tabellenfelder,

oder lad die DB mal abgespeckt und gezippt hier hoch...
Titel: Re: Filter erstellen für Datum-Kombifeld
Beitrag von: T417 am Juli 13, 2010, 15:23:39
Die DB abspecken und zippen klappt nicht.
(Fehlende Software, fehlende Rechte)
Ich denke ich hab irgendwo ein tief vergrabenen Fehler (Vieleicht in den Tabellen oder im Formular). Mein Code ist mit deinen beinahe identisch, und nach meinen Vertändnis liegst daran nicht.

Ich werd (am besten nächste Woche) mit frischen Idéen an das Problem rangehen und dann auch den Code hier hochladen.

Grüße