Alle Abfrage Datensätze ausgeben - Access 2010

Halli Hallo ich schon wieder :wink: ich steh mal wieder vor einem Problem in meiner Access Datenbank. Ich hoffe das wir zusammen schnell eine Lösung für mein Problem ausfindig machen können. :smiley:

Ich habe eine Tabelle welche n Datensätze enthält, und zu jedem einzelnen Datensatz soll jeweils eine Email versendet werden.
Nun ist mein Problem das ich dies mittels Dlookup versucht habe zu realiseren, doch dann funktioniert es ja nur für den ersten Datensatz in der Tabelle.
Wie und mit welchen Methodes is es mir möglich nun alle Datensätze (einer nach dem anderen) mit emails zu füttern also Datensatz 1-> sende mail -> Datensatz 2 -> sende mail…
und am besten wäre es sogar noch wenn soll ein ablauf möglich wäre
Datensatz1 -> sende mail -> lösche Datensatz1 ->Datensatz2 ->sende mail -> lösche Ds 2…

Geht sowas mit der OpenRecordset Funktion?

Vielen dank euch schonmal im vorraus und ein schönen Gruß aus berlin

#Gespannt wann nun der Sturm heute beginnt#

Hallo,

Halli Hallo ich schon wieder :wink: ich steh mal wieder vor einem
Problem in meiner Access Datenbank. Ich hoffe das wir zusammen
schnell eine Lösung für mein Problem ausfindig machen können.

D

Ich habe eine Tabelle welche n Datensätze enthält, und zu
jedem einzelnen Datensatz soll jeweils eine Email versendet
werden.
Nun ist mein Problem das ich dies mittels Dlookup versucht
habe zu realiseren, doch dann funktioniert es ja nur für den
ersten Datensatz in der Tabelle.
Wie und mit welchen Methodes is es mir möglich nun alle
Datensätze (einer nach dem anderen) mit emails zu füttern also
Datensatz 1-> sende mail -> Datensatz 2 -> sende
mail…
und am besten wäre es sogar noch wenn soll ein ablauf möglich
wäre
Datensatz1 -> sende mail -> lösche Datensatz1
->Datensatz2 ->sende mail -> lösche Ds 2…

Geht sowas mit der OpenRecordset Funktion?

genau…

Dim rs as DAO.Recordset

Set rs= Currentdb.Openrecordset("Select EmailAdresse , EmailGesendetAm from tblTabelle1", dbOpenDynaset)

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

 Do until rs.EOF
 If fktSendMail (rs!EmailAdresse,"Betreff der Mail", "Text der Mail") = 0 Then 'Diese Funktion zusammenbasteln! Returncode 0 bedeutet: Mail gesendet 
 rs.Edit
 rs!EmailGesendetAm = Now()
 rs!update
 End If

 rs.Movenext
 Loop



End if
 

rs.Close: Set rs= Nothing

#Gespannt wann nun der Sturm heute beginnt#

Hoffentlich wird es nicht zu schlimm…

Gruß
Franz,DF6GL

Hi Df6gl, danke für deine schneller Unterstützung (Y)
Ich bin noch relativ unerfahren was die sache mit dem Recordset betrifft.
habe jedoch dein vorschlag versucht umzusetzten, doch anschein ohne erfolg, da der mail versandt nicht mehr erfolgt, leider

Dim db As DAO.Database
Dim rst As DAO.Recordset

Set db = CurrentDb
Set rst = db.OpenRecordset(„tbl_zwischenspeicher_email_2“, dbOpenDynaset)

empfaenger = „“
nname = „“
vname = „“
schul1 = „“
schul2 = „“

Do While Not rst.EOF
empfanger = rst!Email
nname = rst!nname
vnname = rst!vname
schul1 = rst!schul1
schul2 = rst!schul2

With objMailItem
.To = empfaenger
.Subject = „Test“
.Body = "Erinnerung an den Kompetenznachweis von Herrn " & nname & ", " & vname & " für die Schulung " & schul1 & „, " & schul2 & " vielen Dank - Testnachricht“
'.Display
End With
olApp.ActiveWindow
SendKeys „%s“
rst.MoveNext
Loop

Kann mir jemand sagen was ich falsch gemacht habe?
Das es evtl umständlich programmiert ist kann gut sein , da wie gesagt ich noch sehr unerfahren in diesem gebiet bin. :wink:

Kann es sein das empfanger = rst!Email das wort Email ein Schlüsselwort in Access 2010 ist? Denn in der Tabelle steht es bei mir eig kleingeschrieben. Aber mittels Debug.Print kam dennoch die richtige email-addy bei heraus, merkwürdig oder?

Vielen dank an euch und ich wünsche noch ein angehmen tag

P.S.: Der Strum rückt immer näher :smiley:

Hallo,

  1. bei Openrecordset sollte eine Select-Statement benutzt werden.
  2. .Display darf nicht auskommentiert sein.
  3. der Code-Auszug läßt nicht erkennen, ob Outlook richtig initialisiert und ausgeführt wird.
  4. zum „Debuggen“ einen Haltepunkt anden Codeanfang setzen und mit Einzelschritt durchfahren.

Außerdem sieht der Recordset-Code nicht so aus, wie ich es gezeigt habe.

Gruß
Franz, DG6GL

Hallo,
Ja da hast du recht das der Quellcode nciht wirklich gut aussah aber ich hab ihn jetzt noch etwas abgeändert und jetzt ist es so das ich nicht mehr das Problem habe das er nur eine Mail versenden, schlimmer noch ich lande in einer Endlosschleife :smiley: Spam bombe auf mein mail-konto :wink:, Hab leider keine Idee woran das liegen könnte, evtl könnt ihr beim code etwas nachhelfen?

Dim olApp As Outlook.Application
Dim olNamespace As Namespace
Dim objMailItem As MailItem
Dim objFolder As MAPIFolder

Set olApp = CreateObject(„Outlook.Application“)
Set olNamespace = olApp.GetNamespace(„MAPI“)
Set objFolder = olNamespace.GetDefaultFolder(olFolderInbox)

Dim rs As DAO.Recordset
betreff = „Test-Mail“
Set rs = CurrentDb.OpenRecordset(„Select email_TL, email_gesendet, vname, nname, schul1, schul2 From tbl_zwischenspeicher_email_2“, dbOpenDynaset)
If Not (rs.BOF And rs.EOF) Then
Do Until rs.EOF
rs.MoveFirst
Set objMailItem = objFolder.Items.Add(olMailItem)
With objMailItem
rs.Edit
.To = rs!email_TL
.Subject = betreff
.Body = "Erinnerung an den Kompetenznachweis von Herrn " & rs!nname & ", " & rs!vname & " für die Schulung " & rs!schul1 & „, " & rs!schul2 & " vielen Dank- Testmail“
.Display
rs!email_gesendet = Now()
rs.Update
End With
olApp.ActiveWindow
SendKeys „%s“
rs.MoveNext
Loop
End If

rs.Close: Set rs = Nothing

Vielen Dank an euch und ich wünsche euch ein schönes Wochenende

Gruß aus Berlin
Fizzo361

hallo, ich habe es nun geschaft, Danke an euch für eure Hilfe und bis zum nächsten mal

Ich lasse mal den fertig code hier:

Dim olApp As Outlook.Application
Dim olNamespace As Namespace
Dim objMailItem As MailItem
Dim objFolder As MAPIFolder
Dim mail1 As Integer
Dim mail2 As Integer

Set olApp = CreateObject(„Outlook.Application“)
Set olNamespace = olApp.GetNamespace(„MAPI“)
Set objFolder = olNamespace.GetDefaultFolder(olFolderInbox)

mail1 = DCount(„LfdNr“, „tbl_zwischenspeicher_email_2“)

Debug.Print mail1
If (mail1) 0 Then
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset(„Select email_TL, email_gesendet, vname, nname, schul1, schul2 From tbl_zwischenspeicher_email_2“, dbOpenDynaset)

If Not (rs.BOF And rs.EOF) Then

Do Until rs.EOF
Set objMailItem = objFolder.Items.Add(olMailItem)
With objMailItem
rs.Edit
.To = rs!email_TL
.Subject = „Test-Mail“
.Body = "Erinnerung an den Kompetenznachweis von Herrn " & rs!nname & ", " & rs!vname & " für die Schulung " & rs!schul1 & „, " & rs!schul2 & " vielen Dank- Testmail“
.Display
rs!email_gesendet = Now()
rs.Update
End With
olApp.ActiveWindow
SendKeys „%s“
rs.MoveNext
Loop
End If
rs.Close: Set rs = Nothing
Else
MsgBox „Keine Daten zum mail versandt vorhanden“
End If