Moin!
Ich habe eine Tabelle "tbl_Projekte", die unteranderem ein True/False Feld enthält.
Ein Formular zeigt mir eine Liste aller Projekte, bei jedem Projekt kann ich einen Haken setzen/entfernen. (Checkbox)
Ich möchte nun einzelne Berichte für die Projekte erstellen, die in der Liste angehakt sind. Jeweils ein einzelner Bericht soll dann an eine E-Mail angehängt werden. Der Bericht ist soweit vorbereitet, dass durch die Übergabe der Projektnummer an den Bericht auch nur ein Bericht zu dem Projekt erstellt wird.
Nur die Projekte auszuwählen, die einen Haken haben, habe ich auch shcon geschafft. Leider habe ich aber Probleme mit der Übergabe der einzelnen Projektnummern von den angehakten Projekten.
Im Code könnt Ihr bei "Hilfe" sehen, wo ich leider nicht weiter weiss.
Vielen Dank für Eure Hilfe!
---
Private Sub Befehl29_Click()
Dim tbl_Projekte As Recordset
Dim stDocName As String
Dim rs As DAO.Recordset
Dim db As DAO.Database
Dim Kriterium As String
Set db = CurrentDb
Set rs = CurrentDb.OpenRecordset("Select Projektnummer From tbl_Projekte Where aktiv = True", dbOpenDynaset)
rs.MoveFirst
Do Until rs.EOF
stDocName = "rpt_Cockpit"
Kriterium = "[Projektnummer]=" HILFE
DoCmd.OpenReport stDocName, acViewPreview, , Kriterium
DoCmd.SendObject acReport, stDocName, acFormatPDF, _
"Empfängeradresse", "", "", "MeinBetreff", _
"Meine Standartnachricht.", True, ""
DoCmd.Close acReport, stDocName
rs.MoveNext
Loop
End Sub
---
Hallo, guten Morgen,
ZitatKriterium = "[Projektnummer]=" HILFE
...versuch mal mit
Kriterium = rs!ProjektnummerUm ein Feld aus einem Recordset auszulesen musst du auf dessen Auflistung (rs!) zugreifen und den namen des auszulesenden Feldes bekanntgeben. ;)
HTH
Peter
Hi Peter,
danke für Deine Antwort.
Wenn ich Deinen Vorschlag umsetze passiert folgendes:
(2 Projekte in der Liste sind anghakt)
Es werden 2 E-Mails geöffnet (Anzahl der E-Mails stimmt), an die E-Mails wird jedoch der komplette Bericht (über alle Projekte angehängt).
Es fehlt also noch die Übergabe von nur einer spezifischen Projektnummer.
Hallo,
so:
Kriterium = "[Projektnummer]=" & rs!Projektnummer 'falls Projektnummer den Datentyp Zahl,long in der Tabelle hat
Kriterium = "[Projektnummer]='" & rs!Projektnummer & "'" 'falls Projektnummer den Datentyp Text in der Tabelle hat
Mit Deinem Code ginge auch:
Kriterium = "[Projektnummer]=" & rs(0)
bzw.:
Kriterium = "[Projektnummer]='" & rs(0) & "'"
weiterhin:
.
.
Dim tbl_Projekte As Recordset 'überflüssig/falsch
.
Set rs = db.OpenRecordset("Select Projektnummer From tbl_Projekte Where aktiv = True", dbOpenSnapShot)
If rs.Recordcount > 0 Then 'hinzu
.
.
.
Loop
End If 'hinzu
rs.Close
set rs =Nothing
End Sub
Zusätzliches Errorhandling wäre auch nicht verkehrt.
Hallo Franz,
Vielen Dank! Es funktioniert :)
---
Kriterium = "[Projektnummer]='" & rs!Projektnummer & "'"
---
Hat die Lösung gebracht.
Habe auch diese Zeilen eingefügt/verändert:
---
Set rs = db.OpenRecordset("Select Projektnummer From tbl_Projekte Where aktiv = True", dbOpenSnapShot)
If rs.Recordcount > 0 Then 'hinzu
.
Loop
End If 'hinzu
rs.Close
set rs =Nothing
---
Ich habe dadurhc bei der Ausführung keine Veränderung bemerkt. Könnt Ihr mir kurz beschreiben, was die Zeilen bezwecken?
Danke für Eure Hilfe!
Hallo,
If rs.Recordcount > 0 Then
bewirkt, dass der ganze Vorgang nur dann gestartet wird, wenn dein Recordset auch Daten enthält.
Andernfalls würde die Routine in einem Fehler münden.
rs.Close
set rs =Nothing
1. Schließt das geöffnete Recordset
2. 'Zerstört' das erstellte Objekt, verwift es und gibt den dadurch belegten Speicher wieder frei.
Super! Danke für die Erklärung.
Habt Ihr noch eine Idee für folgende Fragen:
1. Wie kann ich als E-Mailadresse automatisch die E-Mailadresse des dem Projekt zugeordenten Projektleiters eintragen?
(E-Mailadresse ist in der tbl_PL)
2. Wie ich in den Dateinamen des PDFs automatisch die Projektnummer des jeweilgen Projektes aufnehmen kann?
Vielen Dank!
Malte
Hallo,
1) mittels Dlookup unter Angabe eines geeigneten Kriteriums die Email auslesen.
2) die Projektnummer als Openargs-Parameter bei OpenReport übergeben und im Bericht-Open-Ereignis der Berichts-Eigenschaft "Beschriftung" ("Caption") zuweisen.
Hi,
wo finde ich das Bericht-Open-Ereignis?
Irgendwie seh ich grad den Wald...
thx
Hallo,
bei: Berichtsentwurf, markierter Bericht, Eigenschaften-Fenster Ereignisse
Hi,
ich habe bei beiden Themen noch Probleme:
1. Berichtsbezeichnung - Könnt Ihr mir bei dem Code für das Bericht-Open-Ereignis helfen?
2. DLOOKUP:
Hier komme ich mit folgendem Code auch nicht zum Erfolg:
(qry_frm_Erstellung_Cockpit_PL_E-Mail: Abfrage, die das Feld "Projektnummer" und "E-Mailadresse" enthält)
---
Set db = CurrentDb
Set rs = db.OpenRecordset("Select Projektnummer From tbl_Projekte Where aktiv = True", dbOpenSnapshot)
If rs.RecordCount > 0 Then
rs.MoveFirst
Do Until rs.EOF
stDocName = "rpt_Cockpit"
EMAIL = DLookup("E-mailadresse", "qry_frm_Erstellung_Cockpit_PL_E-Mail", "[[Projektnummer]='" & rs!Projektnummer & "')"
Kriterium = "[Projektnummer]='" & rs!Projektnummer & "'"
DoCmd.OpenReport stDocName, acViewPreview, , Kriterium, , Kriterium
DoCmd.SendObject acReport, stDocName, acFormatPDF, _
"EMAIL", "", "", "Projekt-Cockpit", _
"Meine Standartnachricht.", True, ""
DoCmd.Close acReport, stDocName
rs.MoveNext
---
Danke
Hallo,
1) mit WAS kommst Du nicht zurecht?
Sub Report_Open(Cancel as Integer)
If not isNull(Me.Openargs) Then Me.Caption=Me.Openargs
End Sub
2)
Die Doppeleckklammer ist falsch....
Leider geht es so auch noch nicht :(
---
EMAIL = DLookup("E-mailadresse", "qry_frm_Erstellung_Cockpit_PL_E-Mail", "[Projektnummer]='" & rs!Projektnummer & "')"
---
Hallo,
schon 100000 mal geraten (zugegebenermaßen nicht in diesem Thread ;) ):
Auf Sonder- Und Leerzeichen in (Objekt-)Namen DRINGEND VERZICHTEN!!
Mindestens aber, wenn oben Genanntes schwerfällt, Eckklammern um den Namen verwenden:
EMAIL = DLookup("[E-mailadresse]", ...
sonst interpretiert das Access (eigentlich die Funktion) als : Subtrahiere vom Wert aus Feld "E" den Wert aus Feld "mailadresse"
Aber Vorsicht:
nicht zu verwechseln bei dem Namen der Abfrage als Literalstring als Parameter in der Sendobjekt-Methode:
DoCmd.SendObject acReport, stDocName, acFormatPDF, _
"EMAIL", "", "", "Projekt-Cockpit", _
"Meine Standartnachricht.", True, ""
Hey,
vielen Dank! Jetzt funktioniert alles!