Avatar billede -anders- Juniormester
10. april 2007 - 11:42 Der er 7 kommentarer og
1 løsning

Dynamisk udvælgelse af mailadresser via liste med multiselect

Hej Eksperter

Jeg anvender nedenstående kode for at oprette en ny mail for alle personer i min DB som er registreret med den MedlemstypeID jeg har markeret på min liste "lstselecttype", dette virker perfekt:

'kode start'
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 [Email]From Qopretmail WHERE [MedlemstypeID]=" & Me!lstselecttype
    rst.Open strQuery, cnn, adOpenStatic, adLockReadOnly, adCmdText
    varOutput = rst.GetString(, , , ";")
    strEmail = "mailto:" & varOutput
    Application.FollowHyperlink strEmail

rst.Close
cnn.Close
End Sub
'Kode slut'

Problem:
Jeg ville gerne kunne markere flere MedlemstyperID's på min liste (multiselect), og så ved klik på min knap oprette en email for alle personer der er registrert med den eller de medlemstyperID's der er markeret på min liste, det må være noget med en løkke, men jeg er ikke så skrap til netop dette. Min forspørgsel Qopretmail indeholder felterne "email" (tekst), og "MedlemstypeID (tal). Jeg har indsat kriteriet Is Not Null i feltet "email", for at undgå fejl. Jeg arbejder Access 2003 DA

Mon dette er muligt :o)

Hilsen Anders.
Avatar billede terry Ekspert
10. april 2007 - 12:19 #1
Hi Anders

NOTE this is NOT tested, will take a look later, busy right now.


To loop through list you can use something like this


Dim i as Integer
Dim s as s


s = " IN("

for i = 0 to me.YourList.ListCount


If me.YourList.selected(i) Then

s = s & me.Yourlist.column(ColwithTypeIDin, i) & ","

End if

'REmove last ,
s= left(s,Len(s) -1)

s = s & ") "

Next i



Now use 

strQuery = "SELECT [Email]From Qopretmail WHERE [MedlemstypeID] & s
Avatar billede -anders- Juniormester
10. april 2007 - 12:24 #2
Hej terry

Tak for indlægget, jeg tror jeg venter, hvergang jeg forsøger at arbejde med løkker går der altid helt kuk i den, det selvfølgelig fordi jeg ikke er dygtig nok :o)
Avatar billede terry Ekspert
10. april 2007 - 12:44 #3
your welcom eto send me your dB and I will look later when I get home
Avatar billede -anders- Juniormester
10. april 2007 - 13:08 #4
Mange tak for det, sendt til den mailadresse der fremgår af dit website
Avatar billede -anders- Juniormester
10. april 2007 - 18:48 #5
DB modtaget retur fra terry med nedenstående løsning som er testet og virker:

Private Sub cmdopret_Click()
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim varOutput As Variant
Dim strQuery As String
Dim strEmail As String
Dim i As Integer
Dim s As String


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

    s = " IN("

    For i = 0 To Me.lstselecttype.ListCount

        If Me.lstselecttype.Selected(i) Then
       
            s = s & Me.lstselecttype.Column(0, i) & ","
       
        End If
       
    Next i
   
    s = Left(s, Len(s) - 1)
    s = s & ") "
   
    strQuery = "SELECT [Email]From Qopretmail WHERE [MedlemstypeID] " & s 'Me!lstselecttype.Column(0)
    rst.Open strQuery, cnn, adOpenStatic, adLockReadOnly, adCmdText
    varOutput = rst.GetString(, , , ";")
    strEmail = "mailto:" & varOutput
   
    Application.FollowHyperlink strEmail

    rst.Close
    cnn.Close

Så terry, gider du poste et svar så er der velfortjente points til dig
Avatar billede terry Ekspert
10. april 2007 - 19:07 #6
thanks, have a good evening
Avatar billede terry Ekspert
10. april 2007 - 19:07 #7
oops
Avatar billede -anders- Juniormester
10. april 2007 - 21:29 #8
Og her med fejlhåndtering hvis der ikke er nogen medlemmer med emailadresse i de valgte medlemstyper:

Private Sub cmdopret_Click()
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim varOutput As Variant
Dim strQuery As String
Dim strEmail As String
Dim i As Integer
Dim s As String


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

    s = " IN("

    For i = 0 To Me!lstselecttype.ListCount

        If Me!lstselecttype.Selected(i) Then
       
            s = s & Me!lstselecttype.Column(0, i) & ","
       
        End If
       
    Next i
   
    s = Left(s, Len(s) - 1)
    s = s & ") "
   
    strQuery = "SELECT [Email]From Qmail WHERE [MedlemstypeID] " & s 'Me!lstselecttype.Column(0)
    rst.Open strQuery, cnn, adOpenStatic, adLockReadOnly, adCmdText
    'Kun hvis der er mindst en emailadresse oprettes mail'
    If rst.RecordCount > 0 Then
    varOutput = rst.GetString(, , , ";")
    strEmail = "mailto:" & varOutput
    Application.FollowHyperlink strEmail

    rst.Close
    cnn.Close
Else
  'Meddelse hvis .rst er tom'
  MsgBox "De markeret medlemstyper indeholder ikke nogen medlemmer med emailadresser, handlingen annulleres", vbExclamation, "Opret email"

End If
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