Avatar billede -anders- Juniormester
08. marts 2007 - 14:55 Der er 13 kommentarer og
1 løsning

Opret ny mail for personer i en valgt gruppe

Hej Eksperter

Jeg har et adressekartotek med en masse personer disse personer er registreret i tabellen tblpersoner

Jeg har så en masse grupper som er registreret i tabellen tblgrupper. Via en mange til mange tabel tblgruppedata kan jeg således styre hvilke personer der er medlem af en gruppe eller omvendt via korrekte relationer,alt dette virker perfekt.

Jeg har så oprettet en form frmredigergruppe, på denne form har jeg feltet GruppeID som er nøglen. Jeg viser så alle de personer der er medlem af den valgte gruppe i en subform, dette virker også perfekt.

jeg har så oprettet en forspørgsel hvor jeg joiner alle relevante felter fra tabellerne incl, feltet GruppeID, altså en mange til mange forspørgsel, dette virker også perfekt, men nu kommer det...

Jeg ville gerne kunne oprette en ny email ved klik på min knap cmdopretmail, Til-feltet i den nye mail skal så udfyldes med emialadresser på alle de personer i min forspørgsel hvor GruppeID feltet svare til GruppeID feltet på min form frmredigergruppe.

Mailfeltet er navngivet Personmail, jeg har i mange til mange forspørgslen under dette felt indsat kriteriet Is Not Null, på denne måde er det kun personer med en mailadresse der trækkes på.

Er dette muligt via noget kode, det skulle helst køre med brugeres standadmail-program feks. via DoCmd.SendObjekt metoden, men det er ikke et must

Hilsen Anders.
Avatar billede mugs Novice
08. marts 2007 - 15:12 #1
Jeg mener jeg har noget derhjemme med lister. Hvis du lægger din e-mail skal jeg lige se efter når jeg er hjemme.
Avatar billede -anders- Juniormester
08. marts 2007 - 15:16 #2
Hej mugs, tak for indlægget, jeg har allerede nærstuderet din artikel vedrørende mailhåndtering, men jeg vil da gerne se dit eks. min mailadresse er anj@bryggemail.dk
Avatar billede -anders- Juniormester
08. marts 2007 - 15:25 #3
Jeg har leget lidt med nedenstående, det virker, dog med den hage at værdien af GruppeID feltet også overføres feks. anj@bryggemail.dk1, og det går jo ikke, men omvendt skal GruppeID feltet jo være i forspørgslen for at kunne spørge på det:

Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim varOutput As Variant
Dim strQuery As String
Dim strEmail As String

Set cnn = CurrentProject.Connection
Set rst = New ADODB.Recordset

    strQuery = "SELECT * From Qopretgruppemail WHERE [GruppeID]=" & Me!GruppeID
    rst.Open strQuery, cnn, adOpenStatic, adLockReadOnly, adCmdText
    varOutput = rst.GetString(, , , ";")
    strEmail = "mailto:" & varOutput
    Application.FollowHyperlink strEmail

rst.Close
cnn.Close
Avatar billede -anders- Juniormester
08. marts 2007 - 15:32 #4
hmm, klart rst.GetString returnere jo værdierne af alle felter i min forspørgsel, gad vide om man kan komme ud over dette
Avatar billede terry Ekspert
08. marts 2007 - 16:05 #5
Anders, why not just have a mailing group which has the same name as th egroup in Access, that wa you only need to send a mail to the group.

Using rst.Getsting is the best idea, just change
SELECT * ...
to
SELECT eamailAddress from ...
Avatar billede -anders- Juniormester
08. marts 2007 - 16:12 #6
hej terry, ja så enkelt var det, jeg kunne ikke se skoven for de berønte træer, denne select virker: strQuery = "SELECT [Personmail]From Qopretgruppemail WHERE [GruppeID]=" & Me!GruppeID

så terry, gider du poste et et svar så er der point til dig, og tak for hjælpen :o)

mht. til dit første forslag, det lyder smart, men kærver dette at gruppen feks. er oprettet i outlook først, eller et andet mailprogram feks. outlook express ?
Avatar billede -anders- Juniormester
08. marts 2007 - 16:18 #7
Så hele koden kom til at se sådan ud:

Private Sub cmdopretemails_Click()
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim varOutput As Variant
Dim strQuery As String
Dim strEmail As String

Set cnn = CurrentProject.Connection
Set rst = New ADODB.Recordset

    strQuery = "SELECT [Personmail]From Qopretgruppemail WHERE [GruppeID]=" &

Me!GruppeID
    rst.Open strQuery, cnn, adOpenStatic, adLockReadOnly, adCmdText
    varOutput = rst.GetString(, , , ";")
    strEmail = "mailto:" & varOutput
    Application.FollowHyperlink strEmail

rst.Close
cnn.Close
End Sub
Avatar billede terry Ekspert
08. marts 2007 - 16:18 #8
Yes the group obviously needs adding to Outlook but if you rusing Access to make groups then you could also add the group via Access, and at the same time you add a user to a group add the users to the group in Outlook.

But keeping it all in Access is also OK.

No need for many points, you actually were well on the way to finding the solution yourself.
Avatar billede -anders- Juniormester
08. marts 2007 - 16:22 #9
hej terry, skidt med det, her er dine point, hvorfor jeg ikke lige så lyset mht. min select aner jeg ikke :o)

Det med outlook integration lyder smart, men jeg er ikke sikker på at jeg evner det sådan rent programmeringsmæssigt, men det ville da være spændende at se et eks.
Avatar billede -anders- Juniormester
08. marts 2007 - 16:22 #10
>>mugs jeg behøver ikke dit eks. Men tak for tilbudet :o)
Avatar billede -anders- Juniormester
08. marts 2007 - 16:40 #11
Og her med fejlhåndtering, hvis der mod forventning ikke er registreret nogen mailadresser på personerne i den valgte gruppe (rst.RecordCount)

Private Sub cmdopretemails_Click()
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim varOutput As Variant
Dim strQuery As String
Dim strEmail As String

Set cnn = CurrentProject.Connection
Set rst = New ADODB.Recordset

    strQuery = "SELECT [Personmail]From Qopretgruppemail WHERE [GruppeID]=" & Me!GruppeID
    rst.Open strQuery, cnn, adOpenStatic, adLockReadOnly, adCmdText
'Fejlhåndtering'
If rst.RecordCount = 0 Then
MsgBox "Der er ikke registreret emailadresser for personerne i denne gruppe, handlingen annulleres", vbExclamation, "Mailadresse mangler"
Else
    varOutput = rst.GetString(, , , ";")
    strEmail = "mailto:" & varOutput
    Application.FollowHyperlink strEmail
End If
rst.Close
cnn.Close
Avatar billede terry Ekspert
08. marts 2007 - 17:45 #12
Thanks Anders
If I find a bit of time I'll try and put an example together.
Avatar billede terry Ekspert
10. marts 2007 - 10:29 #13
Here is a very simple example of creating a distribution list and then members.
It would be a good idea to check if the list already exists, but you could just assume that if you have created a list in Access then it exists in Outlook. But obviously if the application is to be used on a number of PCs then you must check that it exists and also that each users exists too.

'Creates a distribution list
Function CreateDistributionList(cDistributionList As String) As Boolean
Dim oApp As Outlook.Application
Dim oDlist As Outlook.DistListItem

    On Error GoTo Proc_Err

    Set oApp = CreateObject("Outlook.Application")
    Set oDlist = oApp.CreateItem(olDistributionListItem)
   
    oDlist.DLName = cDistributionList
    oDlist.Save
   
    CreateDistributionList = True
   
Proc_Exit:

    On Error Resume Next

    Set oDlist = Nothing
    Set oApp = Nothing
   
    Exit Function

Proc_Err:
    CreateDistributionList = False
    Resume Proc_Exit
   
End Function

'Add an email address to a distribution list
Function AddNewMemeber2DistList(cDistributionList As String, email As String) As Boolean
Dim oApp As Outlook.Application
Dim objName As Outlook.NameSpace
Dim oDlist As Outlook.DistListItem
Dim objRcpnt As Outlook.Recipient

    On Error GoTo Proc_Err

    Set oApp = New Outlook.Application
    Set objName = oApp.GetNamespace("MAPI")
    Set oDlist = objName.GetDefaultFolder(olFolderContacts).Items(cDistributionList)
   
    Set objRcpnt = oApp.Session.CreateRecipient(email)
    objRcpnt.Resolve
    oDlist.AddMember objRcpnt
   
    oDlist.Save
   
    AddNewMemeber2DistList = True
   
Proc_Exit:

    On Error Resume Next

    Set oDlist = Nothing
    Set oApp = Nothing
   
    Exit Function

Proc_Err:
    AddNewMemeber2DistList = False
    Resume Proc_Exit
   
End Function

And a good weekend
Avatar billede -anders- Juniormester
10. marts 2007 - 13:37 #14
hej terry, tusind tak for det fine eks. Jeg kan godt se det smart hvis man udelukkende anvender Outlook til at håndtere emails og grupper.

Jeg har testet dit eks. og det virker fint, også god weekend herfra :o)
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