Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Filter erstellen für Datum-Kombifeld

Begonnen von T417, Juni 30, 2010, 14:29:09

⏪ vorheriges - nächstes ⏩

T417

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.
Arbeite normalerweise mit Access 2000/2003
In letzter Zeit häufiger mit Access 2007

Sowohl auf WinXP als auch auf Win7

database

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")

T417

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.
Arbeite normalerweise mit Access 2000/2003
In letzter Zeit häufiger mit Access 2007

Sowohl auf WinXP als auch auf Win7

database

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.

T417

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.
Arbeite normalerweise mit Access 2000/2003
In letzter Zeit häufiger mit Access 2007

Sowohl auf WinXP als auch auf Win7

T417

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 "
Arbeite normalerweise mit Access 2000/2003
In letzter Zeit häufiger mit Access 2007

Sowohl auf WinXP als auch auf Win7

DF6GL

#6
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 & "'"  ...

T417

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.
Arbeite normalerweise mit Access 2000/2003
In letzter Zeit häufiger mit Access 2007

Sowohl auf WinXP als auch auf Win7

database

#8
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

DF6GL

#9
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

T417


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 & "'""
Arbeite normalerweise mit Access 2000/2003
In letzter Zeit häufiger mit Access 2007

Sowohl auf WinXP als auch auf Win7

DF6GL

Hallo,

warum denn GotFocus???

nimm Afterupdate...


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


Wenn Du das Ganze genau so machst wie vorgeschlagen, klappt das auch...

T417

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'. 

Arbeite normalerweise mit Access 2000/2003
In letzter Zeit häufiger mit Access 2007

Sowohl auf WinXP als auch auf Win7

DF6GL

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.

T417

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.
Arbeite normalerweise mit Access 2000/2003
In letzter Zeit häufiger mit Access 2007

Sowohl auf WinXP als auch auf Win7