Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Bericht(e) senden, Empfänger kommen aus einer Tabelle

Begonnen von Lalikowski, September 22, 2018, 13:43:12

⏪ vorheriges - nächstes ⏩

Beaker s.a.

Zitatb) gehst Du im Recordset nicht zum nächsten Datensatz
Genau, da fehlt ein
.MoveNext
vor dem
Loop
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)

Lalikowski

Hallo Lachtaube,

sorry, dass ich ständig nerve.

Offensichtlich tue "ich" die Sachen nicht.... :-\.

Ich als Laie konnte nur abschreiben.....

Kannst Du mir das bitte fertig machen?

Liebe Grüße

Andreas

Lalikowski

...ups, der Rest Deiner Antwort ist auf die zweite Seite gerutscht..

Mit dem .MoveNext gibt es aber leider keine Änderung. Immer noch der gesamte Report an den selben Mailempfänger....

Lachtaube

Du musst den versteckt geöffneten Bericht in jeder Runde schließen, was in Deinem Code (in meinem nicht) fehlt.
Grüße von der (⌒▽⌒)

Lalikowski

...sorry, hatte ich übersehen. Habe ich geändert, doch leider hat sich am Ergebnis nichts geändert.... :(

..noch immer wird ein kompletter Bericht (über alle Partner) generiert und immer nur an Partner_1 verschickt....

Beaker s.a.

@Lalikowski
Zitat..noch immer wird ein kompletter Bericht (über alle Partner) generiert und immer nur an Partner_1 verschickt....
Nein, das stimmt nicht.
Ich habe gerade Lachtaubes DB runtergeladen, und mal im Einzelschritt-Modus
geprüft. Da wird der Bericht (gefiltert!) so oft an den gleichen Empfänger verschickt,
wie es DS mit diesem Empfänger in der Abfrage "spPartnerIdMailByDate" gibt.
I.Ü. denke ich, dass das Datenmodell nicht stimmt. Schon der Name "tbl_Ergebnis"
lässt mich eher an eine gruppierte Abfrage denken. Und wenn schon berechenbare
Werte (Anzxxx) gespeichert werden, würde ich diese Tabelle eher als eine n:m
zwischen Partnern und Touren anlegen. Dann bräuchte es auch keinen Mehrfelder-PK
(den verstehe ich hier eh nicht) sondern höchstens einen eindeutigen FK über diese
Felder. Wobei dann auch gleich der PK/FK der Partner auf LongInteger umgestellt
werden sollte; - Text ist da doch eher nicht so geläufig.

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)

Lachtaube

Ändere die Abfrage wie folgt:
SELECT DISTINCT p.TD_Leister, p.Mail
FROM   tbl_Partner AS p
       INNER JOIN tbl_Ergebnis AS d
               ON p.TD_Leister = d.Partner
WHERE  (((d.Datum)=[@Datum]));
und verwende wie in meiner ersten Antwort den Aufruf von DoCmd.OpenReport "rpt_QR", acViewPreview, , ReportFilter, acHidden
Grüße von der (⌒▽⌒)

Beaker s.a.

Sorry, das ist natürlich nicht richtig
ZitatUnd wenn schon berechenbare Werte (Anzxxx) gespeichert werden,
Die werden ja pro Tour erfasst. Da würde ich dann doch eher nur den Tabellennamen ändern; - tbl_Touren.
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)

Lalikowski

Hallo an Alle,

möchte mich bei Allen aufrichtig für die Hilfe und Anregungen bedanken.

Ganz besonders bedanke ich mich bei Lachtaube, die sich durch mein Generve nicht klein kriegen lassen hat..... :)

Es funktioniert, wie ich es mir vorgestellt habe...


Danke, Danke, Danke und ein entspanntes Wochenende

Andreas

Lalikowski

Hallo Lachtaube,

habe ein kleines weiteres Problem.

würde gerne mit Deinem code auch Abfrage als Excel versenden, doch kann ich ihn nicht selber anpassen..... :'( :'(

Private Sub senden_Click()

Const QRY As String = "qry_Abw_Mail"

Dim ReportFilter As String

    'nur wenn ein gültiges Datum vorliegt
If IsDate(Me.Leistungsdatum) Then
With CurrentDb.QueryDefs(QRY)
.Parameters("@Datum") = Me.Leistungsdatum
With .OpenRecordset(dbOpenSnapshot, dbForwardOnly)
Do Until .EOF
ReportFilter = BuildCriteria("Partner", dbText, !TD_Leister)

    'hier muss sicherlich die Abfrage geöffnet werden, doch der Reportfilter hat hier wohl nichts zu suchen
   
'DoCmd.OpenReport "rpt_QR", acViewPreview, , ReportFilter, acHidden

    'Mail versenden

    'hier sollte nun die Abfrage "qry_Abweichung_XLS" nur an die ausgewählten Partner versendet werden
   
'DoCmd.SendObject acSendReport, "rpt_QR", acFormatPDF, !Mail, , , !TD_Leister & "_Qualitätsreport vom " & Format$(Me.Leistungsdatum, "ddmmyyyy"), _
'"Guten Morgen," & vbLf & vbLf & _
'True

'DoCmd.Close acReport, "rpt_QR", acSaveNo
DoCmd.Close acQuery, qry_Abweichung_XLS, acSaveNo

.MoveNext

Loop
.Close
End With
End With
End If

End Sub


Kannst Du dir das bitte einmal anschauen?

Wäre ganz lieb....

Lieben Dank im Voraus

Andreas

Beaker s.a.

@Lalikowski
Das hatten wir doch schon mal
DoCmd.SendObject _
                    ObjectType:=acSendQuery, _
                    ObjectName:="qry_Abweichung_XLS", _
                    OutputFormat:=acFormatXLS, _
                    To:=.Fields(1).Value, _
                    Subject:="Dein Betreff", _
                    MessageText:="Dein Anschreiben", _
                    EditMessage:=False
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)

Lalikowski

Hallo Ekkehard,

das stimmt, allerdings musste ich der Tabelle Partner die Spalte Reporte (JA/NEIN) hinzufügen.
Diese Spalte soll bewirken, dass Mails nur an ausgewählte Partner verschrickt werden.
Bei dem Code von Lachtaube ist mir diese Anpassung selber gelungen, nicht aber dass ich Abfragen verschicken kann.
Bei Deinem Code habe ich diese Anpassung leider nicht hinbekommen....

Nun war meine Überlegung, das die Änderung des Anhangs leichter zu bewerkstelligen ist, als die Anpassung der Prozedur an sich.
Natürlich kann ich falsch liegen....😏😏

Könntest denn auch Du Deinen Code entsprechend anpassen?

Eine Beispiel-DB hängt wieder an....

Liebe Grüße

Andreas

Beaker s.a.

Hallo,
Keine Ahnung, meinst du sowas

SELECT DISTINCT p.TD_Leister, p.Mail
FROM   tbl_Partner AS p
       INNER JOIN tbl_Ergebnis AS d
               ON p.TD_Leister = d.Partner
WHERE  d.Datum=[@Datum] AND Reporte = True


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)

Lalikowski

Hallo Ekkehard,

leider nicht.
Schau Dir mal die Beispiel-DB an, d.h. die Tabelle tbl_Partner.
Ich denke dann weißt Du sicher was ich meine.

Ich hänge sie einfach nochmal dran.

Viele Grüße

Andreas

Beaker s.a.

Hallo Andreas,
So wirklich verstehe ich es immer noch nicht.
Was mir jetzt bei näherem Hinsehen aber aufgefallen ist
ZitatWith .OpenRecordset(dbOpenSnapshot, dbForwardOnly)
Der erste Parameter "dbOpenSnapshot" lässt keine Schleife durch das
RS zu
With .OpenRecordset(dbOpenForwardOnly)
Der zweite Parameter wird dadurch unnötig. Ändere das mal und teste im
Einzelschrittmodus. Die "qry_Abw_Mail" enthält ja nur die ausgewählten
(.Report = True).
Den Rest kann ich nicht nachvollziehen, da der Report nicht in deiner DB
enthalten ist.
Im Moment sieht auch so aus als wolltest du Report und Abfrage
("qry_Abweichung_XLS") versenden, also zwei Anlagen. Das geht dann
allerdings nur über eine Outlook-Automatisierung, -- glaube ich.

gruss ekkehard


P.S. Noch ein Tipp so nebenbei, der dir hilft deinen Code später besser
lesen zu können. Formatiere deinen Code ordentlich (logische Einrückungen).
Bei Methoden, die mehr als drei Parameter anfordern können, habe ich
mir angewöhnt mit benannten Parametern zu arbeiten. Ist zwar deutlich
mehr Schreibarbeit, aber auch deutlich besser zu verstehen, - es ist sofort
ersichtlich welche Parameter übergeben werden ohne die ganzen Kommas
zählen zu müssen oder zu vergessen.
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)