Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: ricog am Mai 03, 2013, 23:53:55

Titel: Datensätze im Formular anzeigen über Auswahl mit 2 Kombifeldern
Beitrag von: ricog am Mai 03, 2013, 23:53:55
Hallo zusammen!
Ich bin gerade am basteln eines Kassenbuches für unseren eigenen Haushalt. Da sollen also Einnahmen und Ausgaben monatl. bzw. jährlich dargestellt werden. So ähnlich wie das "Kassenbuch V7" was hier zum Download bereitsteht...

Ich habe schon bissel rumexperimentiert, aber da ich mit Codes usw. nicht sehr bewandert bin brauche ich eure Hilfe.

So, nun mal zum Thema:

ich habe eine tab_Ein_Aus mit den Feldern Datum, Buchungsart, Kategorie, Verwendung, Bezeichnung und Betrag. Dort sollen alle Eingänge und Ausgänge gespeichert werden.

In einem Endlosformular sollen jetzt Dätensätze angezeigt werden, ausgewählt nach Jahr und Monat.
Ich möchte also ein Kombifeld zur Auswahl Jahr und ein Kombifeld zur Auswahl Monat erstellen. Kombifeld erstellen ist ja kein Problem, aber die Auswahl der Daten über 2 Kombifelder (so wie im "Kassenbuch V7")... Würde mich über eure Hilfe sehr freuen...

Ach ja, zur Auswahl Kombifeld Jahr habe ich eine tab_Jahreszahlen und zur Auswahl Kombifeld Monat eine tab_Monate...

Vielen Dank...
Titel: Re: Datensätze im Formular anzeigen über Auswahl mit 2 Kombifeldern
Beitrag von: daolix am Mai 04, 2013, 01:08:02
Hallo
evtl so:

Select *, Month([Datum]) as fld_Monat,  Year([Datum]) as fld_Jahr from  tab_Ein_Aus where   Month([Datum]) = " & MonatsKombifeld & " And  Year([Datum]) =" & JahrKombifeld & ";"
Hierbei sollten deine Kombifelder die entsprechenden Nummern zurückliefern, also 3 statt März oder Mrz. Diesen SQL-String übergibst du dann deinem Urfm/Frm oder Listen - Rowsource, beim laden des Formulars, sowie bei der Aktualisierung der Kombifelder.
Titel: Re: Datensätze im Formular anzeigen über Auswahl mit 2 Kombifeldern
Beitrag von: ricog am Mai 04, 2013, 11:57:07
Ich hab das jetzt in einem Endlosformular untergebracht, die kombifelder im Formularkopf...

Bringt mir ne Fehlermeldung (Fehler beim Kompilieren -> Syntaxfehler), also geht nicht... Woran kann das liegen?
Titel: Re: Datensätze im Formular anzeigen über Auswahl mit 2 Kombifeldern
Beitrag von: daolix am Mai 04, 2013, 13:57:57
Anbei ein simples Bsp


[Anhang gelöscht durch Administrator]
Titel: Re: Datensätze im Formular anzeigen über Auswahl mit 2 Kombifeldern
Beitrag von: ricog am Mai 04, 2013, 17:50:56
Vielen Dank...
Habs hingekriegt und es funktioniert... :)

Hatte in der Abfrage fürs Formular eine Sortierung vorgenommen (Datum, Buchungsart, Kategorie, V-Zweck).
Das ist jetzt leider weg. Muss dass in den Code mit rein?
Titel: Re: Datensätze im Formular anzeigen über Auswahl mit 2 Kombifeldern
Beitrag von: daolix am Mai 05, 2013, 16:23:58
Ja, einfach dem String hinten dranhängen
GetSQLString = cSQL  & ... & " Order By Datum {Asc|Desc}, Buchungsart {Asc|Desc}, Kategorie {Asc|Desc} ,  V-Zweck {Asc|Desc}"
wobei {Asc|Desc} durch deine gewollte Sortierung zu ersetzen ist.


Titel: Re: Datensätze im Formular anzeigen über Auswahl mit 2 Kombifeldern
Beitrag von: ricog am Mai 05, 2013, 18:23:26
sieht jetzt so aus... (hab das Datum nach hinten verschoben)

Private Function GetSQLString()
    Const cSQL As String = "Select * from tab_Ein_Aus Where "
    Select Case Me.kf_monat
        Case 0
            GetSQLString = cSQL & "Month([Datum])>0 and year([Datum])=" & Me.kf_Jahr
        Case Else
            GetSQLString = cSQL & "Month([Datum])=" & Me.kf_monat & " and year([Datum])=" & Me.kf_Jahr
            GetSQLString = cSQL  & ... & " Order By Buchungsart {Asc}, Kategorie {Asc} ,  V_Zweck {Asc}, Datum {Asc} "
    End Select
End Function

Bringt mir aber ne Fehlermeldung bei & ... & (Erwartet Bezeichner oder geklammerter Ausdruck)
Titel: Re: Datensätze im Formular anzeigen über Auswahl mit 2 Kombifeldern
Beitrag von: database am Mai 05, 2013, 18:34:46
Hallo,

eher so:


Private Function GetSQLString() As String
    Const cSQL As String = "Select * from tab_Ein_Aus Where "
    Select Case Me.kf_monat
        Case 0
            GetSQLString = cSQL & "Month([Datum])>0 and year([Datum])=" & Me.kf_Jahr
        Case Else
            cSQL = cSQL & "Month([Datum])=" & Me.kf_monat & " and year([Datum])=" & Me.kf_Jahr
            GetSQLString = cSQL  & " Order By Buchungsart ASC, Kategorie ASC,  V_Zweck ASC, Datum ASC"
    End Select
End Function


code]
Titel: Re: Datensätze im Formular anzeigen über Auswahl mit 2 Kombifeldern
Beitrag von: ricog am Mai 05, 2013, 20:42:56
Nee, da haut auch irgendwas nicht hin..?
Bringt mir "Laufzeitfehler 3145" und Syntaxfehler in where-Klausel...

beim Öffnen des frm wird jetzt letzte Auswahl angezeigt, ohne meine bedingte Formatierung, bei neuer Auswahl o.g. Fehlermeldung...

Hier mal der komplette Code...



Option Compare Database
Option Explicit

Private Sub Form_Load()
    Me.kf_monat = 0
    Me.kf_Jahr = Year(Date)
    Me.RecordSource = GetSQLString
End Sub

Private Sub kf_Jahr_AfterUpdate()
    Me.RecordSource = GetSQLString
End Sub

Private Sub kf_monat_AfterUpdate()
    Me.RecordSource = GetSQLString
End Sub

Private Function GetSQLString() As String
    Const cSQL As String = "Select * from tab_Ein_Aus Where "
    Select Case Me.kf_monat
        Case 0
            GetSQLString = cSQL & "Month([Datum])>0 and year([Datum])=" & Me.kf_Jahr
        Case Else
            GetSQLString = cSQL & "Month([Datum])=" & Me.kf_monat & " and year([Datum])=" & Me.kf_Jahr
            GetSQLString = cSQL & " Order By Buchungsart {Asc}, Kategorie {Asc} ,  V_Zweck {Asc}, Datum {Asc} "
    End Select
End Function



Titel: Re: Datensätze im Formular anzeigen über Auswahl mit 2 Kombifeldern
Beitrag von: daolix am Mai 05, 2013, 21:00:34
Hallo

hmm und ich ich dachte mit den ... und den {} würde es man verstehen, du solltest keine Zeile anfügen sondern die entsprechende Zeile erweitern
so isses gemeint

...
Case Else
            GetSQLString = cSQL & "Month([Datum])=" & Me.kf_monat & " and year([Datum])=" & Me.kf_Jahr & " Order By Buchungsart Asc, Kategorie Asc ,  V_Zweck Asc, Datum Asc "
End Select
...
Titel: Re: Datensätze im Formular anzeigen über Auswahl mit 2 Kombifeldern
Beitrag von: ricog am Mai 05, 2013, 21:25:18
Jetzt hab ich es... und es funktioniert :)
Hab es sogar bei case 0 noch hingekriegt :) :)

Vielen, vielen Dank..


Sorry, aber wie schon erwähnt, mit Codes hab ich es nicht so... (noch nicht...)
Titel: Re: Datensätze im Formular anzeigen über Auswahl mit 2 Kombifeldern
Beitrag von: database am Mai 05, 2013, 22:12:22
Hi,

noch als Nachtrag...

ZitatNee, da haut auch irgendwas nicht hin

Ich habe in meinem Beitrag die passende Form der Zusammensetzung deines SQL-Strings stehen

Zitataber wie schon erwähnt, mit Codes hab ich es nicht so
Ist es zu schwierig eine fertige Lösung zu kopieren?  ;) ;D
Titel: Re: Datensätze im Formular anzeigen über Auswahl mit 2 Kombifeldern
Beitrag von: ricog am Mai 05, 2013, 22:20:08
Hab ich doch gemacht...
Hat aber nicht funktioniert... Warum? keine Ahnung... :(
Titel: Re: Datensätze im Formular anzeigen über Auswahl mit 2 Kombifeldern
Beitrag von: daolix am Mai 05, 2013, 22:21:40
Hallo Peter,

aber ich glaube deine Lösung löst auch nen Fehler aus, da cSQL kein String sondern eine Konstante ist und der kannst du keinen Neuen Wert zuweisen.
Titel: Re: Datensätze im Formular anzeigen über Auswahl mit 2 Kombifeldern
Beitrag von: database am Mai 06, 2013, 10:50:31
Hallo,

Const ...  habe ich überlesen - As String aber registriert ... sorry - mein Fehler.
Allerdings sehe ich in der Codeabfolge eigentlich keinen rechten Bedarf an einer Konstante  :-\

Aber egal, es funktioniert und das ist OK

LG