Avatar billede dane022 Seniormester
16. februar 2005 - 09:10 Der er 21 kommentarer og
3 løsninger

Automatisk mail fra access ved ændring i felt

Jeg kunne godt tænke mig at få det sådan at når der sker ændring i feltet [jubilar til borgmester] i formularen "jubilæumsliste alle", så skal der sendes en mail til 2 forudbestemte mailadresser.
Jeg ved ikke om access kan skrive teksten i mailen, eller om der skal vedhæftes en tekstfil. Men en tekst noget lignende:
[initialer] & " har ændret i " & [jubilæumsdato]
Så kan jeg selv rette resten til.

Hvis ovenstående er en dårlig ide, så vil jeg gerne have lavet et system der exporterer en tekstfil til en bestemt placering.
Dette skal ske ved ændring af samme felt og skal indeholde samme tekst.
Avatar billede mugs Novice
16. februar 2005 - 09:23 #1
Jeg kan henvise til min artikel om emnet.
Læg din e-mail hvis du vil have den tilhørernde db.
16. februar 2005 - 09:23 #2
I feltet [jubilar til borgmester]'s efteropdatering-hændelse kan du lægge denne kode:

docmd.SendObject acSendNoObject,,,"to",,,"Ændringer til [jubilar til borgmester]",Me!Initialer & " har ændret i " & Me![jubilæumsdato], false
Avatar billede dane022 Seniormester
16. februar 2005 - 09:40 #3
nospambrm@hvidovre.dknospam
nospam skal selvfølgelig udelades. Thomasjepsen, hvor skal e-mailadresserne stå i dit eksempel ?
Avatar billede madschristensen Nybegynder
16. februar 2005 - 09:41 #4
Er det meningen, at brugeren skal være opmærksom på den mail? Eller skal det være "hemmeligt" ?
16. februar 2005 - 09:41 #5
nå ja, det skal stå der, hvor der står "to"

Det kunne se således ud:
docmd.SendObject acSendNoObject,,,"din@mail.dk",,,"Ændringer til [jubilar til borgmester]",Me!Initialer & " har ændret i " & Me![jubilæumsdato], false

Hvis du erstatter False med True i slutningen, så får du vist mailen på skærmen inden den afsendes.
Avatar billede madschristensen Nybegynder
16. februar 2005 - 09:43 #6
Man vil vel uanset hvad få en advarsel fra outlook "Et program prøver at sende..." ??
Avatar billede mugs Novice
16. februar 2005 - 09:45 #7
Sendt.
16. februar 2005 - 09:48 #8
Mads-> ja det vil du i de nyeste versioner af Outlook. Men ikke hvis du har Outlook 2000, sp1 eller lavere. Eller hvis du sidder på en Exchange Server, som er sat op til at undlade disse advarsler. Eller hvis du bruger et helt andet mailprogram (f.eks. Outlook Express)
Avatar billede madschristensen Nybegynder
16. februar 2005 - 09:51 #9
Det er rigtigt. Det hele handler jo om hvilket miljø man sidder på. Jeg er ved at flytte vores løsninger fra Access til .Net / SQL server - Der er mulighederne nogle andre.

/Mads
Avatar billede mugs Novice
16. februar 2005 - 09:54 #10
Korrekt hvad thomasjepsen kommenterer vedr. Outlook Expres, her kan man i Funktioner > Indstillinger > Sikkerhed vælge at undlade disse advarsler.
16. februar 2005 - 09:55 #11
Det lyder spændende, Mads :o)
Vb.Net eller noget C#?
Hvor arbejder du egentlig? (svar venligst på mail, så vi ikke fortyrre denne tråd)
Avatar billede dane022 Seniormester
16. februar 2005 - 10:21 #12
Det virker thomasjepsen. Mugs jeg har version 97 på arbejdet, så jeg vil se på dine to databaser når jeg vender snuden hjemad.
Jeg har 2 spørgsmål til:
Den tekst der står i mailen, kan der laves linjeskift ?
Hvordan ville det se ud på følgende tekst:
DoCmd.SendObject acSendNoObject, , , "to brm@hvidovre.dk", , , "Ændringer til jubilæumsdatabasen", Me!Initialer & " har ændret i feltet jubilar til borgmester til: " & Me![Jubilar til borgmester], False

Nu har brugeren jo mulighed for at sige nej til den boks der fremkommer ved afsendelse af e-mail.
Kan der laves en efteropdatering til som smider de samme informationer som der står i mailen, over til en tabel eller lignende ?
Avatar billede mugs Novice
16. februar 2005 - 10:26 #13
Jeg ved ikke om det fungerer i 97, men prøv:

DoCmd.SendObject acSendNoObject, , , "to brm@hvidovre.dk", , , "Ændringer til jubilæumsdatabasen", Me!Initialer & " har ændret i feltet jubilar til borgmester til: " & vbnewline & Me![Jubilar til borgmester], False
16. februar 2005 - 10:32 #14
Det burde det.

Men du behøver ikke at have "to" foran mailadressen.

Hvis du vil gemme ændringerne i en anden tabel, så er vi ovre i noget historik/log og det er lidt mere omfattende.
Men i dette simple tilfælde burde du kunne gøre det med et par sætninger:

docmd.Setwarnings false
docmd.RunSQL "Insert Into [din log-tabel] ( Initialer, [jubilar til borgmester], Dato ) Select '" & Me!Initialer & "', '" & Me![jubilar til borgmester] & "', Now()"
docmd.Setwarnings true
Avatar billede dane022 Seniormester
16. februar 2005 - 12:57 #15
Det begynder virkelig at ligne noget
Det eneste der mangler er at der ikke skal komme en fejlmeddelse hvis man vælger nej til at sende mail. Er det muligt at få en tekstboks med brugerdefineret tekst til at fremkomme ?
16. februar 2005 - 13:00 #16
Prøv med denne:

On Error Resume next
DoCmd.SendObject acSendNoObject, , , "to brm@hvidovre.dk", , , "Ændringer til jubilæumsdatabasen", Me!Initialer & " har ændret i feltet jubilar til borgmester til: " & vbnewline & Me![Jubilar til borgmester], False
If err = 2501 then
    msgbox "Du valgte at annullere mail'en!" & vbnewline & "Ændringerne er gemt i log-tabellen.",vbexclamation, "Mail annulleret!"
    docmd.Setwarnings false
    docmd.RunSQL "Insert Into [din log-tabel] ( Initialer, [jubilar til borgmester], Dato ) Select '" & Me!Initialer & "', '" & Me![jubilar til borgmester] & "', Now()"
    docmd.Setwarnings true
Endif
Avatar billede mugs Novice
16. februar 2005 - 13:02 #17
Endif > End if
Avatar billede mugs Novice
16. februar 2005 - 13:03 #18
Nå - Ligegyldigt, sikkert kun detaljer ;o)
16. februar 2005 - 13:11 #19
Mugs, den har du kommenteret før ;o)

Når man skriver Endif, så retter Access det selv til End If (og hvorfor så bruge tid på at skrive mellemrummet? ;)
Avatar billede mugs Novice
16. februar 2005 - 13:18 #20
;o)
Avatar billede dane022 Seniormester
16. februar 2005 - 13:29 #21
Tak for hjælpen begge
Avatar billede dane022 Seniormester
24. februar 2005 - 13:15 #22
I den sætning thomas jepsen skriver til sidst, der skal jeg have tilføjet en linie der hedder If Me!Jubilæumsdato < Date + 30 Then, da mailen kun skal sendes hvis der er mindre end 30 dage til jubilæumsdatoen fra dags dato. Hvordan får jeg gjort det ?
Avatar billede 2dbornot2db Nybegynder
24. februar 2005 - 13:56 #23
if me!Jubilæumsdato < date + 30 then
if msgbox ("Der er mere end 30 dage til jubilæet" & vbnewline & "Vil du sende mailen alligevel?",vbyesno,"Send mail?") = vbno then exit sub
end if

DoCmd.SendObject acSendNoObject, , , "to brm@hvidovre.dk", , , "Ændringer til jubilæumsdatabasen", Me!Initialer & " har ændret i feltet jubilar til borgmester til: " & vbnewline & Me![Jubilar til borgmester], False
If err = 2501 then
    msgbox "Du valgte at annullere mail'en!" & vbnewline & "Ændringerne er gemt i log-tabellen.",vbexclamation, "Mail annulleret!"
    docmd.Setwarnings false
    docmd.RunSQL "Insert Into [din log-tabel] ( Initialer, [jubilar til borgmester], Dato ) Select '" & Me!Initialer & "', '" & Me![jubilar til borgmester] & "', Now()"
    docmd.Setwarnings true
Endif
Avatar billede dane022 Seniormester
24. februar 2005 - 15:22 #24
Den skal ikke komme og spørge om jeg er sikker på at sende mailen.
Det skal være sådan at hvis jeg trykker på nej til at den skal sende mailen i den boks der kommer frem med at et andet program prøver at sende mail på ens vegne, så skal den komme med beskeden "du valgte at annullere mailen".
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester