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...
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.
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?
Anbei ein simples Bsp
[Anhang gelöscht durch Administrator]
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?
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.
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)
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]
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
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
...
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...)
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
Hab ich doch gemacht...
Hat aber nicht funktioniert... Warum? keine Ahnung... :(
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.
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