Neuigkeiten:

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

Mobiles Hauptmenü

E-Mail ausschließlich an gefilterte Datensätze via Button schicken...

Begonnen von Peace Ð, Dezember 03, 2013, 08:50:39

⏪ vorheriges - nächstes ⏩

Peace Ð

Guten Morgen,

zunächst sei gesagt, dass ich mir nicht sicher war, ob das hierher gehört oder doch eher in den Formular-Bereich des Forums ;D


Hier mein Problem bzw. meine Frage: Ich habe bereits auf meinem Formular einen Button, der es mir ermöglicht eine E-Mail an alle Datensätze der DB zu senden. Hierzu wird nach den Einträgen im E-Mail-Feld geschaut usw. . Weiterhin habe ich bereits via VBA einen Filter einbauen können, mit dem ich auch die E-Mail-Adressen filtern kann. Nun möchte ich einen Button hinzufügen, der sich dann irgendwie NUR die aktuell gefilterten E-Mail-Adressen aus dem Formular schnappt und eben nicht einfach alle aus der Tabelle.

Wie gehe ich vor, um die Selektion auf den Filter zu beschränken?

Viele Grüße und einen entspannten Tag :)

DF6GL

Hallo,


1)  verwende den Formular-Filter (das Kriterium)  für eine Auswahlabfrage auf die Tabelle und nutze diese Abfrage für die Selektion der  Email-Adressen.

2) Durchlaufe den RecordsetClone des Formulares und nutze jeweils die EMail-Adresse des akt. DS für den Mil-Versand.

Peace Ð

Danke für die schnelle Antwort :)

Das Durchlaufen des RecordsetClone hat für mich spontan leichter und einfacher ausgesehen, allerdings bekomme ich dann nur die E-Mail-Adresse des aktuell ausgewählten Datensatzes.
Andererseits weiß ich nicht wirklich, wie ich das Kriterium des Filters umformulieren muss, damit es in einer Abfrage anerkannt wird :(

Meinen Filtercode habe ich mir von hier stibitzt: http://www.access-im-unternehmen.de/index1.php?id=300&BeitragID=749
Der Artikel befasst sich mit Filterung per Kontextmenü, da die Access Runtime kein Kontextmenü enthält und es erst selbst programmiert werden muss... Wie gesagt funktioniert das auch bereits, komischerweise zwar nur in der Runtime und nicht in Access selbst, aber das ist kein Problem, jedoch ist der Filter via Kontextmenü doch etwas komplexer aufgebaut und ich weiß, wie gesagt, nicht, wie ich die Kriterien in die Abfrage einbauen muss...

Dies sollten die 2 Prozeduren sein, die für die letztendliche Anwendung des Filters zuständig sind:

Private Sub m_Filterbox_Change()
    Dim strControlSource As String
    On Error Resume Next
    colFilter.Remove m_FilterSource
    On Error GoTo 0
    colFilter.Add m_FilterSource & " LIKE '" & m_Filterbox.Text & "'|" & m_Filterbox.Text, m_FilterSource                                   
    SetFilter
End Sub

Private Sub SetFilter()
    Dim strFilter As String
    Dim var As Variant
    For Each var In colFilter
        strFilter = strFilter & " AND " & Split(var, "|")(0)
    Next var
    strFilter = Mid(strFilter, 6)
    m_Form.Filter = strFilter
    m_Form.FilterOn = True
End Sub

Peace Ð

//Uuuups, der Doppelpost war nicht geplant :(


Danke für die schnelle Antwort :)

Das Durchlaufen des RecordsetClone hat für mich spontan leichter und einfacher ausgesehen, allerdings bekomme ich dann nur die E-Mail-Adresse des aktuell ausgewählten Datensatzes.
Andererseits weiß ich nicht wirklich, wie ich das Kriterium des Filters umformulieren muss, damit es in einer Abfrage anerkannt wird :(

Meinen Filtercode habe ich mir von hier stiebitzt: http://www.access-im-unternehmen.de/index1.php?id=300&BeitragID=749
Der Artikel befasst sich mit Filterung per Kontextmenü, da die Access Runtime kein Kontextmenü enthält und es erst selbst programmiert werden muss... Wie gesagt funktioniert das auch bereits, komischerweise zwar nur in der Runtime und nicht in Access selbst, aber das ist kein Problem, jedoch ist der Filter via Kontextmenü doch etwas komplexer aufgebaut und ich weiß, wie gesagt, nicht, wie ich die Kriterien in die Abfrage einbauen muss...

Dies sollten die 2 Prozeduren sein, die für die letztendliche Anwendung des Filters zuständig sind:

Private Sub m_Filterbox_Change()
   Dim strControlSource As String
   On Error Resume Next
   colFilter.Remove m_FilterSource
   On Error GoTo 0
   colFilter.Add m_FilterSource & " LIKE '" & m_Filterbox.Text & "'|" & m_Filterbox.Text, m_FilterSource       <--- Diese Zeile in die Abfrage?                          
   SetFilter
End Sub

Private Sub SetFilter()
   Dim strFilter As String
   Dim var As Variant
   For Each var In colFilter
       strFilter = strFilter & " AND " & Split(var, "|")(0)                    <--- Oder diese Zeile?
   Next var
   strFilter = Mid(strFilter, 6)
   m_Form.Filter = strFilter
   m_Form.FilterOn = True
End Sub



Wäre echt top, wenn Du da mal drüberschaun könntest, oder mir fix erläutern könntest, wie ich korrekt auf den RecordsetClone zugreife :)

DF6GL

Hallo,

mit RecordsetClone:


(Luftcode)
.
.
.
Dim rs As Dao.Recordset
Set rs= Me.RecordsetClone
if not (rs.BOF and rs.EOF) Then
rs.Movefirst
Do Until rs.EOF

fktDeineSendMailFunktion rs!DeinMailAdressFeld,"Das ist der Betreff", "Das ist die Message"   

rs.Movenext
Loop

End IF
Set rs=Nothing



Mit "Abfrage":




.
.
    strFilter = Mid(strFilter, 6)
.
.
Dim rs As Dao.Recordset
Set rs= Currentdb.Openrecordset ( "Select DeinMailAdressfeld from tblTabelle1 Where "  & strFilter, dbOpenSnapshot)

If not (rs.BOF and rs.EOF) Then
rs.Movefirst

Do Until rs.EOF

fktDeineSendMailFunktion rs!DeinMailAdressFeld ,"Das ist der Betreff", "Das ist die Message"   

rs.Movenext
Loop

End IF
rs.Close: Set rs=Nothing

Peace Ð