Hallo Leute,
ich versuche nun seit Tagen Infos aus dem Netz zu meinem Problem zukriegen! - Vergeblich!
Also, wo fange ich an? Ich arbeite mit MS-Access 2007!
Jetzt möchte ich darin einen Bericht integrieren, um Assistenleistungen mit dem jeweiligen Kostenträger abzurechnen.
Der 1. Bericht funktioniert! Datei: 111210_Bild_01.png
Der braucht aber auch ein anschreiben.
Das soll so aussehen... Datei: 111210_Bild_02.png
Dazu habe ich eine Abfrage erstellt und den Bericht:
Die Abfrage
PARAMETERS [Erster Tag] DateTime, [Letzter Tag] DateTime, Vorschuss Currency;
SELECT NewHelferAbrech_Q.HELFERNAME, Sum([Stunden]*[ABRECH_SATZ]) AS Ausdr1, NewHelferAbrech_Q.WAEHRUNG, ADRESSEN.PLZ, ADRESSEN.ORT, ADRESSEN.FIRMA, ADRESSEN.NACHNAME, ADRESSEN.ANREDE, ADRESSEN.TITEL, IIf([ADRESSEN].[VORNAME],[ADRESSEN].[VORNAME] & " ","") & [ADRESSEN].[NACHNAME] AS K_Name, ADRESSEN.STRASSE, DienstStellen.ADRNR, [Vorschuss_1] AS Vorschuss
FROM (NewHelferAbrech_Q INNER JOIN DienstStellen ON NewHelferAbrech_Q.HELST = DienstStellen.DIENST_STELLE) INNER JOIN ADRESSEN ON DienstStellen.ADRNR = ADRESSEN.Nr
WHERE (((NewHelferAbrech_Q.D_Tag)>=[Erster Tag] And (NewHelferAbrech_Q.D_Tag)<=[Letzter Tag]) AND ((NewHelferAbrech_Q.HELST)="P"))
GROUP BY NewHelferAbrech_Q.HELFERNAME, NewHelferAbrech_Q.WAEHRUNG, ADRESSEN.PLZ, ADRESSEN.ORT, ADRESSEN.FIRMA, ADRESSEN.NACHNAME, ADRESSEN.ANREDE, ADRESSEN.TITEL, IIf([ADRESSEN].[VORNAME],[ADRESSEN].[VORNAME] & " ","") & [ADRESSEN].[NACHNAME], ADRESSEN.STRASSE, DienstStellen.ADRNR
ORDER BY NewHelferAbrech_Q.HELFERNAME;
enthält 3 Parameter, die ich gern ohne diese normale Parametereingabe über ein Formular an Abfrage/Bericht übergeben möchte:
1. [Erste Tag] - erste Tag, an dem die Abrechnung beginnt.
2. [Letzter Tag] - Letzter Tag der Abrechung
3. [Vorschuss] - evtl. erhaltenen Vorschuss
Alle drei Parameter sind nicht in der DB gespeichert, sollen in einen Formular eingegeben (und geprüft) werden, und im Bericht (Brief) erscheinen.
[Erster Tag] und [Letzter Tag] um die Datenätze einzugrenzen, und um den Abrechnungszeitraum im Bericht zu dokumentieren. [Vorschuss] soll lediglich ausgewiesen werden und zur Berechnung des Restbetrages dienen.
Kann mir jemand helfen?
[Anhang gelöscht durch Administrator]
Hallo,
Entferne aus der Abfrage die Parameters-Sektion und die Where-Bedingungen, wie auch die Gruppierung und Sortierung. Gruppieren und Sortieren wird im Berciht selber erledigt.
Im Formular öffnest Du den Bericht über eine Schaltfläche und übergibst dort die Filter-Bedingung (Where-Condition) und den Vorschuss(wert) als Openargs-Parameter
Sub btnRechnung_Click()
Docmd.Openform "rptRechnung" ,acPreview,,"D_Tag >=" & Format(Me!txtErsterTag,"\#yyyy-mm-dd\#") & " And D_Tag<=" & Format(Me!txtLetzterTag,"\#yyyy-mm-dd\#") & " AND HELST='P'",,Me!txtVorschuss
End Sub
Im Open-Ereignis des Berichtes wird der Openargs-Wert dem entspr. Berichts-Textfeld zugewiesen:
Sub Report_Open()
If Not Isnull(Me.Openargs) Then Me!txtVorschuss= Me.Openargs
End Sub
So, Problem gelöst.
Im Bericht:
Option Compare Database
Dim Frst_Day As Date
Dim Last_Day As Date
Dim Money As Currency
Private Sub Report_Open(Cancel As Integer)
Dim str1$, str2$, str3$, tmp$
On Error GoTo Report_Open_Err
If Not IsNull(Me.OpenArgs) Then
'* die Argumente splitten
str1$ = Left(Me.OpenArgs, InStr(Me.OpenArgs, ";") - 1)
tmp$ = Mid(Me.OpenArgs, InStr(Me.OpenArgs, ";") + 1)
str2$ = Left(tmp$, InStr(tmp$, ";") - 1)
str3$ = Mid(tmp$, InStr(tmp$, ";") + 1)
Money = CCur(str1$)
Frst_Day = CDate(str2$)
Last_Day = CDate(str3$)
End If
Exit Sub
Report_Open_Err:
MsgBox Error
Exit Sub
End Sub
Function Get_Frst_Day() As Date
Get_Frst_Day = Frst_Day
End Function
Function Get_Last_Day() As Date
Get_Last_Day = Last_Day
End Function
Function Get_Money() As Currency
Get_Money = Money
End Function
Im Formular:
Option Compare Database
Private Sub Drucken_Click()
Dim beding$, mldg$, hdr$, argum$
beding$ = "HELST = 'p'"
hdr$ = "Abrechnung mit Kostenträger"
If IsNull(Screen.ActiveForm![Erster Tag]) Then
mldg = "Bitte geben Sie ein gültiges Datum ein!"
MsgBox mldg, 48, hdr
End If
If IsNull(Screen.ActiveForm![Letzter Tag]) Then
mldg = "Bitte geben Sie ein gültiges Datum ein!"
MsgBox mldg, 48, hdr
End If
If Screen.ActiveForm![Letzter Tag] < Screen.ActiveForm![Erster Tag] Then
mldg = "Letzter Tag kann nicht vor Erster Tag liegen!"
MsgBox mldg, 48, hdr
End If
beding$ = beding$ & " AND "
beding$ = beding$ & "D_Tag >=" & Format(Me![Erster Tag], "\#yyyy-mm-dd\#")
beding$ = beding$ & " AND "
beding$ = beding$ & "D_Tag <=" & Format(Me![Letzter Tag], "\#yyyy-mm-dd\#")
If IsNull(Screen.ActiveForm![Vorschuss]) Then
argum$ = "0,00"
Else
argum$ = Str(Me!Vorschuss) & ";"
argum$ = argum & Format(Me![Erster Tag], "dd.mm.yyyy") & ";"
argum$ = argum$ & Format(Me![Letzter Tag], "dd.mm.yyyy")
End If
DoCmd.Close
dummy = SelPrintMode("Abrech_mit_Kostenträger_R", Null, Null, beding$, Null, argum$)
End Sub
-------------
Leider funktionierte die Zuweisung über Me!... nicht. Was soll's! Hab's über die Variablen gelöst.