Neuigkeiten:

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

Mobiles Hauptmenü

Werte aus der Combobox in Unterformular übertragen

Begonnen von lissi1991, Februar 04, 2018, 13:37:42

⏪ vorheriges - nächstes ⏩

lissi1991

Hallo liebe community,

ich habe folgendes Problem:

Im Hauptformular befindet sich eine Combobox, die über eine Abfrage Werte aus einer Tabelle entnehmen soll. Diese Abfrage ist eine Select Distrinct Abfrage.
Die gefilterten Werte sollen in einem Unterformular angezeigt werden.
Leider funktioniert das mit meinem Code nicht. Es erscheint Syntaxfehler 3075 fehlender Operator. Beim Debuggen bleibt er bei .Filter = String stehen.

Private Sub cboMonat_AfterUpdate()
     Dim strFilter As String
     strFilter = Me!cboMonat
     Debug.Print strFilter
     With Me!UFOgemittelterAbsatz.Form
         .Filter = strFilter
         .FilterOn = True
     End With
End Sub


Vielen Dank für eure Hilfe.
Ich brauche schnellstmöglich eine Antwort. Abgabetermin ist sehr bald.

Liebe Grüße


MzKlMu

#1
Hallo,
der reine Feldname im Formular ist kein gültiger Filterstring.
Bei der Ausgabe über Debug.Print muss Dir das eigentlich klar sein.
Du musst ja mit etwas vergleichen.
Etwa so:
ZitatstrFilter = "FeldnameTabelle = " & Me!cboMonat
Aud welches Feld soll sich also der Monat beziehen ?
Zeige mal den SQL Text der Abfrage.

PS:
Verwende die Codetags des Forums.

Gruß Klaus

lissi1991

Vielen Dank MzKlMu

Das habe ich schon getan leider funktioniert das trotzdem nicht.

Die sql - Abfrage ist
SELECT DISTINCT tblsale.Monat From tblsale
als Ereignis der combobox

Leider bin ich in dem Gebiet nicht sehr bewandert. Wäre trotzdem toll, wenn mir geholfen werden kann.
Liebe Grüße
Lisa

DF6GL

Hallo,

was für Werte enthält tblsale.Monat ?

Und außerdem:  reservierte Wörter vermeiden. ("Monat" ist der (deutsche) Name für die Month()-Funktion)

Zitatals Ereignis der combobox

??

Du meinst damit, der SQL-String steht in der Kombifeld-Eigenschaft "Datensatzherkunft" ?

lissi1991

die Werte in der Tabelle sind als kurzer Text deklariert. Meintest du das?
"01 Januar"z.B.
hab das jetzt umgeändert in xx-Monat in der Tabelle, leider funktioniert es trotzdem nicht.

Zitat:
"Du meinst damit, der SQL-String steht in der Kombifeld-Eigenschaft "Datensatzherkunft" ?"
ja genau dort hab ich es reingeschrieben.



DF6GL

Hallo,

ja, ich meinte den Datentyp des Tabellenfeldes.

Wenn Text , dann muss das Filterkriterium (-string)   so lauten:


strFilter = "[Monat] = '" & Me!cboMonat & "'"


Warum steht aber im Feld "Monat"  eine Tageszahl plus ein Monatsname drin?

Solche Konstruktionen führen in den meisten Fällen in irgendwelche chaotischen/fehlerträchtigen/undefinierte Situationen.

lissi1991

Ich habe eine importierte Exceldatei mit Datum und verschiedenen Bestellungen.
Diese Bestellungen sollen nach Monat chronologisch in der combobox aufgelistet werden.
Januar; Februar; März;...
Das hat nicht funktioniert, deshalb hab ich vor den Monat 01; 02;03;... gesetzt.
Somit funktioniert die Sortierung in der combobox.
Das hat zur Folge, dass es kein Datum sondern ein Text in der importierten exceltabelle  ist.

Ich komme irgendwie überhaupt nicht weiter und ich weiß nicht wie ich das hinbekommen soll.

Ziel ist es die Bestellungen nach Datum von der combobox im Unterformular anzeigen zu lassen.

MzKlMu

#7
Hallo,
wenn Du ein Datumsfeld in der Tabelle hast, ist ein extra Feld für den Monat überflüssig. Der Monat lässt aus dem Datum ableiten. Und wenn Du mit SELECT DISTINCT dann den Monat aus dem Datum ableitest, ist auch die Zahl vor dem Monat nicht notwendig, denn die Sortierung nach dem Datum sortiert auch den Monat richtig.
Ein anderes Problem ist da eher auch das Jahr, denn den Februar gibt es 2017 und die Wahrscheinlichkeit dass es den auch 2019 gibt ist relativ hoch.
Du musst daher auch noch das Jahr in den Filter einfließen lassen.

Weiterhin ermittelt man den Monat immer als Zahl, den Monatsnamen dazu gewint man über die Funktion:
MonatName: Monatsname(Monatszahl)
Ein optionaler Parameter in der Funktion steuert auch ob 3 Buchstaben (Feb) oder voller Name (Februar).

Es ergeben sich also folgende Fragen:
- Wie liegt das Datum in der imortierten Tabelle vor, ist es ein vollständiges Datum oder nur der Monat ?
- Wie ist es mit dem Jahr, denn die Monate wiederholen sich ja. ?

Gruß Klaus

lissi1991

Lieber Klaus,

wie leite ich denn aus dem Datum den Monat ab. Muss ich das in der Abfrage tun?

Das hab ich gestern schon den ganzen Tag versucht, bin aber leider nur auf die Notlösung mit ZahlundMonat gekommen.

Bin wirklich grad am verzweifeln.
Liebe Grüße
Lisa

MzKlMu

Gruß Klaus

lissi1991

in der importierten Tabelle liegt das Datum z.B. 01.01.2017 vor

Versteh nicht ganz wo ich den Code einfügen soll. Ich bin wirklich eine Niete in dem ganzen. Sorry.

MzKlMu

Hallo,
sorry, aber ich hatte 2 Fragen, die Frage wie Du das mit dem Jahr handhaben willst ist nicht beantwortet.
Gruß Klaus

lissi1991

Hallo Klaus,
die Jahre können auch angezeigt werden.
Ist aber eigentlich erstmal egal.

MzKlMu

Hallo,
ZitatIst aber eigentlich erstmal egal.
nein, es ist nicht egal.
Wenn in der Tabelle 2017 und 2018 enthalten ist, erhältst Du ja den Februar von 2017 und 2018 willst Du das wirklich haben ?
Gruß Klaus

lissi1991

So sieht meine importierte Tabelle aus natürlcih kurz gefasst. Sind nur Daten aus dem Jahr 2017 drin.