Neuigkeiten:

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

Mobiles Hauptmenü

Serienmail

Begonnen von pahiti78, August 29, 2014, 20:51:13

⏪ vorheriges - nächstes ⏩

pahiti78

Hallo Zusammen,

ich möchte eine Sammelmail verschicken und greife dehalb auf eine Abfrage zu. Ich lasse durch diese Abfrage eine Loop Schleife laufen und innerhalb der Schleife wird dann die sendObjekt-Funktion aufgerufen.
Die Abfrage ist zu diesem Zeitpunkt durch ein Formular gefiltert. Wenn ich allerdings diese Abfrage als Recordset aufrufe ist diese wieder ungefiltert. Ich könnte jetzt zwar mit "where-Klauseln" rangehen....ich hoffe es geht besser.

Anbei mein Code zum verschicken der Mails.

Private Sub btnSenden_Click()
On Error Resume Next
Dim rcsSammel As Recordset
Set rcsSammel = CurrentDb.OpenRecordset("qry_frm_Stammdaten_Email_UF", dbOpenDynaset)
Do Until rcsSammel.EOF
DoCmd.SendObject , , , rcsSammel("emailadresse"), , , txtBetreff, txtNotiz
rcsSammel.MoveNext
Loop


und der Code welcher das Formular und somit die Abfrage filtert.
Private Sub AuswahlEmaillisteSQL()
krit = "": strSQL = ""
If Not IsNull(Me!txtKdNr) Then krit = krit & " And Kundennummer = " & Me!txtKdNr
If Not IsNull(Me!txtUnternehmen) Then krit = krit & " And Kundenname like '*" & Me!txtUnternehmen & "*'"
If Not IsNull(Me!txtName) Then krit = krit & " And Name like '*" & Me!txtName & "*'"
If Not IsNull(Me!cboFunktion) Then krit = krit & " And FunktionF_ID = " & Me!cboFunktion


strSQL = "SELECT * FROM qry_frm_Stammdaten_Email_UF "
If krit <> "" Then strSQL = strSQL & "WHERE" & Mid(krit, 5)
End Sub


Hat irgendwer ne Idee?
Gruß
Matze

DF6GL

Hallo,

"Ich könnte jetzt zwar mit "where-Klauseln" rangehen....ich hoffe es geht besser."

das IST besser....
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

pahiti78

Hallo,
ich habe nun versucht den recordset mittels where Klausel zu filtern.
Es haut leider so nicht hin. Ich möchte gern mit Hilfe eines Formulars filtern und habe deshalb variablen deklariert, welche die Werte aus dem Formular entgegen nehmen.
Leider haut es so nicht hin. ich bau wahrscheinlich irgendeinen Syntaxfehler ein. Access stürzt ab, sobald ich den button drücke.

Bitte um Hilfe  :) :) :)

Anbei der Code:
Private Sub btnPDF_Click()
On Error Resume Next
Dim rcsSammel As Recordset
Dim intKdNr As Integer
Dim strKdName As String
Dim strMAName As String
Dim intFkt As Integer
Dim intBranche As Integer
Dim intBez As Integer

intKdNr = Forms!frm_stammdaten_kunden!frm_Stammdaten_Email_UF.Form.txtKdNr
strKdName = Forms!frm_stammdaten_kunden!frm_Stammdaten_Email_UF.Form.txtUnternehmen
strMAName = Forms!frm_stammdaten_kunden!frm_Stammdaten_Email_UF.Form.txtName
intFkt = Forms!frm_stammdaten_kunden!frm_Stammdaten_Email_UF.Form.cboFunktion
intBranche = Forms!frm_stammdaten_kunden!frm_Stammdaten_Email_UF.Form.cboBranche
intBez = Forms!frm_stammdaten_kunden!frm_Stammdaten_Email_UF.Form.cboBeziehung

Set rcsSammel = CurrentDb.OpenRecordset("SELECT * FROM [qry_frm_Stammdaten_Email_UF] &" _
& "WHERE [Kundennummer].[Value]=" & intKdNr, dbOpenDynaset)
Do Until rcsSammel.EOF
MsgBox rcsSammel("emailadresse")
rcsSammel.MoveNext
Loop

End Sub
Gruß
Matze

bahasu

Hi,

probiert mal:

Set rcsSammel = CurrentDb.OpenRecordset("SELECT * FROM [qry_frm_Stammdaten_Email_UF]  WHERE [Kundennummer].[Value]=" & intKdNr, dbOpenDynaset)

Statt
Dim intKdNr As Integer
besser
Dim intKdNr As long
Servus

ebs17

On Error Resume Next
Soll das eine Fehlerbehandlung sein?
Auf so etwas sollte man nur in ganz speziellen Fällen zurückgreifen, zum Finden von Fehlern ist das aber gar nicht geeignet, weil es bedeutet ja: Ignoriere Fehler und mache weiter, so lange Du kannst.

ZitatBitte um Hilfe
Ohne Anspruch auf Vollständigkeit:

- In der SQL-Anweisung fehlt ein Leerzeichen vor dem WHERE.
- Dafür ist das & in der Anweisung fehl am Platze.
- WHERE [Kundennummer].[Value]= ...Die Tabelle Kundennummer kommt vom Himmel gefallen? Der Feldname ist zumindest bedenklich.

Hinweise:
Wozu dient die Variableninflation? Verwendet wird nur eine.
Bei "SELECT *" sollte besser eine Auflistung der real verwendeten Felder (wäre hier auch nur eines) verwendet werden, weil anwendungssicherer und schneller.
dbOpenDynaset dient zum Lesen und Schreiben im Recordset. Für das Schreiben sind eine Reihe von zusätzlichen Verwaltungsschritten innerhalb des Recordsets notwendig (=> höherer Aufwand). Für ein einfaches Durchlaufen in einfacher Richtung wäre dbOpenForwardOnly passend (Grundlagen lesen).
Es gibt dann auch Fälle, wo sich das Nichtschließen des Recordsets rächen wird.
Mit freundlichem Glück Auf!

Eberhard