alle Rechnungen in Monatsliste

Tach zusammen!

Ich möchte gerne mit List & Label eine Liste erstellen, die alle Rechnungen eines Monats ausgibt. Vor dem Drucken soll die Abfrage des Monats kommen. Leider habe ich das Prinzip noch nicht so ganz verstanden, wie ich die Auflistung auf alle Kunden beziehen kann. Bisher muss ich halt immer einen bestimmten Kunden vor dem Druck auswählen und genau das soll ja nicht nötig sein, da sich die Auflistung auf alle Kunden bzw. alle geschriebenen Rechnungen bezieht.
Kann mir jemand sagen welche Ansätze ich beachten bzw. benutzen muss?

MfG

der Jan

Hallo “der Jan”,

Ich gehe davon aus, dass Du in Deiner Datenbank eine Tabelle Rechnungen hast.
Weiterhin gehe ich davon aus, dass Du auf Deiner Form eine Textbox zur Eingabe einer Kundennummer hast und eine Schaltfläche “Liste drucken”.

Ich würde dann zuerst eine Funktion estellen die ein Dataset zurück gibt, welches Deine Rechnungsinformationen zu Deiner benötigten Kundennummer enthält:

z.B. (VB/SQLite)

Public Function fct_LL_CreateDataset_RechnungenZuKunde(ByVal _sql As String) As DataSet
        Dim _conDB As SQLiteConnection = New SQLiteConnection(My.Settings._constr)
        Dim _ds As DataSet = New DataSet()
        Dim _da As SQLiteDataAdapter = New SQLiteDataAdapter(_sql, _conDB)

        _da.Fill(_ds, "Rechnungen")

        Return (_ds)

End Function

Dann das Ereignis wenn Du auf Deine Schalfläche “Liste drucken” klickst:

z.B. (VB)

Private Sub btn_Liste_drucken_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Liste_drucken.Click
         dim _sql as String = String.Format("SELECT * FROM TBL_RECHNUNGEN WHERE KDNR='{0}'", texttbox_Kundennummer.Text)        
        ' Datenquelle vorbereiten
        Dim dataSrc As Object = fct_LL_CreateDataset_Kasse_BAR(_sqlStr)

        LL.DataSource = New ObjectDataProvider(dataSrc)
        LL.AutoProjectType = LlProject.List
        ' Designer aufrufen
        'LL.Design()
        ' Drucken 
        LL.Print(LlProject.List, "ReportTemplates\Rechnungsliste.lst", False, LlPrintMode.Preview)

        LL.Dispose()
    End Sub

Ich hoffe, dass hilft Dir schonmal weiter!?

Gruss
Marc

Hallo “der Jan”,

SORRY!!! nur wer RICHTIG lesen kann ist im Vorteil!
Das war ja genau das was Du ja NICHT wolltest!

Vergiss meinen vorherigen Post… zumindest zum Teil. :slight_smile:

Also:
Ich gehe immernoch davon aus, dass Du in Deiner Datenbank eine Tabelle (z.B. TBL_RECHNUNGEN) hast und das Du zur Rechnung das Rechnungsdatum im Format “tt.mm.JJJJ” speicherst.

Ich würde auf die Form nun 2 DateTimePicker plazieren.(hier kannst Du dann den Zeitraum auswählen den Du benötigst.
dtp_Datum_von (Datumsformat: kurz)
dtp_Datum_bis (Datumsformat: kurz)
und eine Schaltfläche “Liste drucken” (btn_PrintList).

Dann kannst Du die Funktion zur Erstellung des Datasets eigentlich so lassen.

Public Function fct_LL_CreateDataset_RECHNUNGEN(ByVal _sql As String) As DataSet

        Dim _conDB As SQLiteConnection = New SQLiteConnection(My.Settings._constr)
        Dim _ds As DataSet = New DataSet()
        Dim _da As SQLiteDataAdapter = New SQLiteDataAdapter(_sql, _conDB)

        _da.Fill(_ds, "Rechnungen_per_Monat")

        Return (_ds)

End Function

Nun das Ereignis wenn Du auf die Schaltfläche “Liste drucken” klickst:
(eigenlich nur den SQL String umbauen)

[code]

Private Sub btn_PrintList_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_PrintList.Click
Dim _sqlStr As String = String.Format(“SELECT * FROM TBL_RECHNUNGEN WHERE RECHDATUM BETWEEN ‘{0}’ AND ‘{1}’ ORDER BY RECHDATUM ASC”, dtp_Datum_von.Value, dtp_Datum_bis.Value)
Dim dataSrc As Object = fct_LL_CreateDataset_RECHNUNGEN(_sqlStr)

    LL.DataSource = New ObjectDataProvider(dataSrc)
    LL.AutoProjectType = LlProject.List
    ' Designer aufrufen
    'LL.Design()
    ' Drucken 
    LL.Print(LlProject.List, "ReportTemplates\Rechnungsliste.lst", False, LlPrintMode.Preview)

    LL.Dispose()

End Sub[/code]

ODER: Du möchtest explizit den Monat und das Jahr, dann kannst Du 2 Textboxen nehmen:

  1. Textbox zur Eingabe des Monats im Format: “tt” also 01 für Januar, 02 für Februar usw. (txt_Monat)
  2. Textbox zur Eingabe der Hahreszahl im Format “JJJJ”. (txt_Jahr)

Dann änderst Du einfach das Ereignis wenn Du auf die Schaltfläche “Liste drucken” klickst.

Private Sub btn_PrintList_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_PrintList.Click
        Dim _m as String = txt_Monat.Text
        Dim _y as String = txt_Jahr.Text
        Dim _sqlStr As String = String.Format("SELECT * FROM TBL_RECHNUNGEN WHERE strftime('%d.%m.%Y', RECHDATUM) LIKE '%{0}.{1}' ORDER BY RECHDATUM ASC", _m,_y)

        Dim dataSrc As Object = fct_LL_CreateDataset_RECHNUNGEN(_sqlStr)

        LL.DataSource = New ObjectDataProvider(dataSrc)
        LL.AutoProjectType = LlProject.List
        ' Designer aufrufen
        'LL.Design()
        ' Drucken 
        LL.Print(LlProject.List, "ReportTemplates\Rechnungsliste.lst", False, LlPrintMode.Preview)

        LL.Dispose()
End Sub

Ich hoffe ich konnte Dir Helfen!?

Gruss
Marc