13. januar 2005 - 23:29Der er
28 kommentarer og 1 løsning
mailrundsending fra access
Kære experter (det er I!)
Jeg har en access2002 database med bl.a. tabel over kunder. Jeg har et JA/NEJ felt i kundetabellen. Det jeg er på udkig efter er funktion, der kan hjælpe med at afsende mail til alle JA-markerede kunder. Mailen skal være personlig ved at tage navnet fra felt i tabellen, og skrive eks. "Kære Dorthe". Emne og tekst og evt. vedhæftede filer er ens for alle mails.
Public Sub SendMails(Qry As String, Emne As String, Brødtekst As String, Optional Vedhæftet As String) Dim OutL As Outlook.Application Dim Item As MailItem Dim Receiver As Recipient Dim cn As ADODB.Connection Dim rs As New ADODB.Recordset
Set cn = CurrentProject.Connection rs.Open Qry, cn, adOpenStatic, , adCmdTable
Set OutL = New Outlook.Application
Do Until rs.EOF Set Item = OutL.CreateItem(olMailItem)
With Item .Subject = Emne .Body = "Kære " & rs!Fornavn & vbnewline & vbnewline & Brødtekst .FlagStatus = olFlagMarked If Len(Vedhæftet) > 0 Then .Attachments.Add Vedhæftet End If .Recipients.Add rs!EMail .Send End With Set Item = Nothing rs.MoveNext Loop End Sub
Herefter kræves en forespørgsel, som kun indeholder de relevante poster og som har et felt, som hedder "Email" og et felt, som hedder "Fornavn"
Når du skal køre funktionen, skal du kalde den således: SendMails "Din forespørgsel","Dit emne", "din brødtekst", "C:\DinFil.txt"
et simpelt spørgsmål: jeg vil gerne køre funktionen (jeeg har lagt koden ind i et nyt modil "Modul1"), hvordan kan jeg få en knap til at aktivire koden? Tak
Hej Jeg har prøvet at lave den sendmails function men programmet kommer med en fejl ved .send commandoen Run-time error 287 "Application-defined or object-defined error"
Hej thomasjeppesen Jeg har ændret lidt i min database: Mailfunktionen skal køres fra en formular, der er åben (formularen hedder: "x_breve"). I formularen er der: Et felt til emnefeltet i mailen (feltet i formularen hedder "Vedr"). Et felt til tekst i mailen (feltet i formularen hedder "Brødtekst"). Et felt til afsender i mailen, skal fremgå efter brødtekst (feltet i formularen hedder "oprettet af"). Et felt, der angiver sti på fil der skal vedhæftes (feltet i formularen hedder "Stiforvedhæftetfil"). Hvis dette felt er tomt, skal der ikke vedhæftes fil.
Modtagerne findes i en forespørgsel, der hedder "x_email-query". I denne forespørgsel er der 2 felter: "Kontaktperson", der bruges i mailens tekstfelt (før Brødtekst, skal der står "Kære " & kontaktperson). "e-mail" er den adresse, mailen skal sendes til.
MEN: I stedet for at der sendes en masse mails, kan de så oprettes i Kladder i Outlook, så man kan redigere/tjekke og derefter selv sende manuelt fra Outlook?
Du kan ikke gemme mails'ne direkte som kladde. Men du kan åbne dem på skærmen i stedet for at sende dem ud med det samme.
Jeg har rettet funktionen til:
Public Sub SendMails(Qry As String, Emne As String, Brødtekst As String, Afsender as string, Optional Vedhæftet As String) Dim OutL As Outlook.Application Dim Item As MailItem Dim Receiver As Recipient Dim cn As ADODB.Connection Dim rs As New ADODB.Recordset
Set cn = CurrentProject.Connection rs.Open Qry, cn, adOpenStatic, , adCmdTable
Set OutL = New Outlook.Application
Do Until rs.EOF Set Item = OutL.CreateItem(olMailItem)
With Item .Subject = Emne .Body = "Kære " & rs!Kontaktperson & vbnewline & vbnewline & Brødtekst & vbnewline & vbnewline & "Med venlig hilsen" & vbnewline & Afsender .FlagStatus = olFlagMarked If Len(Vedhæftet) > 0 Then .Attachments.Add Vedhæftet End If .Recipients.Add rs![e-mail] .Display End With Set Item = Nothing rs.MoveNext Loop End Sub
Fra din formular kalder du den således (f.eks. fra en knap): SendMails "x_email-query", Me!Vedr, Me!Brødtekst, Me![Oprettet af], nz(Me!Stiforvedhæftetfil, "")
NB: Koden er kun rettet ud fra hovedet, så jeg håber ikke, at der er nogle "dumme-fejl"
Function SendMails() Dim OutL As Outlook.Application Dim Item As MailItem Dim Receiver As Recipient Dim cn As ADODB.Connection Dim rs As New ADODB.Recordset
Set cn = CurrentProject.Connection rs.Open "x_email-query", cn, adOpenStatic, , adCmdTable
Set OutL = New Outlook.Application
Do Until rs.EOF Set Item = OutL.CreateItem(olMailItem)
With Item .Subject = Forms![breve]![Emne] .Body = "Kære " & rs!Kontaktperson & vbNewLine & vbNewLine & Forms![breve]![Brødtekst] & vbNewLine & vbNewLine & "Med venlig hilsen" & vbNewLine & Forms![breve]![Afsender] .FlagStatus = olFlagMarked If Len(Forms![breve]![Stiforvedhæftetfil]) > 0 Then .Attachments.Add Forms![breve]![Stiforvedhæftetfil] End If .Recipients.Add rs![e-mail] .Display End With Set Item = Nothing rs.MoveNext Loop End Function
but it says: Compile error: User defines type not defined. and it highlights the line: Dim cn As ADODB.Connection
PS. I changed the kode above to functio, because I couldnt run the public Sub.
Nu skriver den dog Run-time error '-2147217900 (80040e14)': Der er en syntaksfejl i FROM-delsætningen og så highlighter den: rs.Open "x_email-query", cn, adOpenStatic, , adCmdTable
Det kan ikke være forespørgslen, for det er en helt almindelig forespørgsel uden nogen finesser...
Jeg er ikke vant til at skrive kode, så måske har jeg skrevet forkert, der hvor jeg har rettet i dit. Håber du kan hjælpe, for jeg har været det igennem 15 gange og kan ikke finde fejlen...
I’ve made the SQL directly in code. I thing the problem is that ADO is unable to convert the parameters which are in the query so doing it in code gets around this.
I’ve also altered a couple of the field names on the form because they were not the same as in the code.
Det plejer bare, at være god skik, at man giver point til alle som har bidraget til løsningen. Men jeg så, at Omello er ny på Eksperten, så han/hun skal selvfølgelig lige lære de uskrevne regler :o)
Så behold du bare dine point, Terry. Du får brug for dem, hehe ;o)
sorry, thomas det var jeg ikke klar over. Terry skrev en del kode for mig uden om denne side. Så snart jeg har fået flere points overfører jeg dem til dig. Det var ikke min mening at bryde etiketten.
Som jeg skrev, så er det helt ok. Du skal ikke give flere point (man må også kun give maks 200 point for et spørgsmål, så der ville bare komme 33 "politifolk" rendende, hvis du gav mig ekstra point ;o)
Og det er heller ikke fordi, at jeg "behøver" flere point (i hvert fald ikke, hvis du spørger Terry ;)
Så tænk ikke mere på det :o)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.