Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Bericht aus Formular erstellen

Begonnen von trkiller, November 15, 2011, 13:50:22

⏪ vorheriges - nächstes ⏩

trkiller

Hallo
ich bräuchte mal dringend Hilfe in Sachen Berichte.
Ich habe ein Datenbanksystem zusammengestellt mit Access 2003 das ein Ticketsystem sein soll. Diese funktioniert wunderbar, bis ins kleinste Deteil. Alles was ich haben will habe ich per VBA programmiert und erstellt.
Ich dachte mir ich mache noch eine Auswertung, wieviele Aufträge in einem Monat bearbeitet wurden, das funktioniert auch wunderbar jedoch will ich genau jetzt ein Bericht erstellen aus den gefillterten Daten.
Wie kann ich das machen, sitze schon seit paar Stunden dran und komme einfach nicht darauf.
Kurze Erläuterung:
Ich habe eine Abfrage mit qrytickets in dem alle meine Aufträge stehen.
Im Formular ist ein Unterformular, das die ganzen Tickets beinhaltet, diese Ändern sich sobald ich Monat und Jahr auswähle.
Jetzt wurde gefiltert, anschließend will ich ein Button drücken, das mir ein Bericht anzeigt mit den ganzen Daten, damit ich es archivieren kann.

Hoffe ich konnte mich gut ausdrücken, wenn nicht sorry

MzKlMu

Hallo,
Du musst dem Bericht die gleichen Kriterien mitgeben wie für das Formular.
Wie filterst Du das Formular?

Zitatdas mir ein Bericht anzeigt mit den ganzen Daten, damit ich es archivieren kann.
Mit einem Bericht archivieren, wie soll das gehen?
Und warum archivieren?
Archivieren ist im Regelfall in einer DB nicht notwendig, da man die Daten jederzeit neu zusammenstellen kann.
Gruß Klaus

trkiller

Bis jetzt habe ich so gefiltert:

    Dim sql As String
    Dim rs As New ADODB.Recordset
    If (DatMonat.ListIndex = -1) Then
        MsgBox ("Bitte Monat auswählen")
    ElseIf (DatJahr.ListIndex = -1) Then
        MsgBox ("Bitte Jahr auswählen")
    Else
        sql = "SELECT * FROM qryfiltern Where Format(Datum, 'mm') = " & Me.DatMonat & " and Format(Datum,'yyyy') = " & Me.DatJahr
        Set rs = CurrentProject.Connection.Execute(sql)
        Me.FrmDatum.Form.RecordSource = sql
    End If

Gut das mit mit der Archivierung könnte natürlich unnötig sein, da hast du recht

MzKlMu

Hallo,
und wie rufst Du den Bericht auf?
Gruß Klaus

trkiller

Sorry konnte leider nicht früher antworten.
Also wenn ich auf meinem Button Drücke dann macht er das hier:(die Abfrage für ueber ist nur für testzwecke gewesen)

    ueber = "SELECT t1.ID, t2.Nachname, t2.Vorname, t2.USERID, t2.Abteilung, t1.Datum, t1.Problem, t4.Nachname, t4.Vorname, t3.Status, t1.Änderungsdatum FROM ((tblAuftraege AS t1 INNER JOIN tblMitarbeiter AS t2 ON t1.Mitarbeiter=t2.ID) INNER JOIN tblStatus AS t3 ON t1.Status=t3.ID) INNER JOIN tblBearbeiter AS t4 ON t1.Bearbeiter=t4.ID;"
    DoCmd.OpenReport "Auswertung", , , , , ueber

In meinem Bericht dann beim öffnen:

    strSQL = OpenArgs
    Me.RecordSource = strSQL

Ich mache ja in meinem Formular im Grunde genommen schon die Abfrage, sozusagen meine Filterung der Daten. Kann ich diese SQL Abfrage nicht direkt an meinem Bericht übergeben

Beaker s.a.

Hallo trkiller,
ZitatIch mache ja in meinem Formular im Grunde genommen schon die Abfrage, sozusagen meine Filterung der Daten. Kann ich diese SQL Abfrage nicht direkt an meinem Bericht übergeben
Schau Dir mal DoCmd.OpenReport in der OH an, und beachte besonders den vierten Parameter (WhereCondition).
hth
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

trkiller

Danke für deine Hilfe

ich habe es jetzt anders gelöst, aber ähnlich, man ist morgends doch klüger als Abends :)
ich poste mal den Code, villeicht hat einer auch mal das selbe Problem

Meine eigentliche Abfrage:
Public Function filtern()
    Dim rs As New ADODB.Recordset
    Dim ueber As String
    If (DatMonat.ListIndex = -1) Then
        MsgBox ("Bitte Monat auswählen")
    ElseIf (DatJahr.ListIndex = -1) Then
        MsgBox ("Bitte Jahr auswählen")
    Else
        sql55 = "SELECT * FROM qryfiltern Where Format(Datum, 'mm') = " & Me.DatMonat & " and Format(Datum,'yyyy') = " & Me.DatJahr
        CurrentProject.Connection.Execute (sql55)
        Me.FrmDatum.Form.RecordSource = sql55
    End If
End Function

Übergabe an das Bericht
Private Sub Befehl14_Click()

    Dim ueber As String
   
    ueber = sql55
    DoCmd.OpenReport "Auswertung", acViewPreview, , , , ueber
    RunCommand acCmdPrint

End Sub

Das im Bericht
Private Sub Report_Open(Cancel As Integer)
Me.RecordSource = OpenArgs
   
End Sub

Beaker s.a.

Hallo trkiller,
ZitatMe.FrmDatum.Form.RecordSource = sql55
Wenn Du hier schon das Formular filterst, kannst Du diese RecordSource doch direkt im Bericht verwenden:
Private Sub Report_Open(Cancel As Integer)
Me.RecordSource = Forms!DeinFormular.RecordSource
End Sub

Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

trkiller

Hi Beaker
so habe ich es auch versucht zu machen, jedoch hat das nicht geklappt oder ich habe es nicht hinbekommen deswegen habe ich das so gelöst