lovangel ha scritto:
Ciao Alex, ho appena modificato il codice come da te suggerito. Ho notato che così facendo mi toglie l'ultima lettera dell'indirizzo email anzichè ";" Ho cambiato solo la parte "if not rs.EOF then" l'ho provato e funziona. Grazie a tutti per il prezioso aiuto senza il quale nn ci sarei riuscito.
Perché, come dici tu stesso, hai modificato
solo la parte "if not rs.EOF then".
Nella versione di @Alex, rispetto "al mio", già il primo record è trattato all'interno del ciclo ed è stato posizionato il segno di separazione tra i campi alla fine dell'istruzione di concatenazione
strElencoMail = strElencoMail & rs.Fields("EMAIL").Value & ";"
In questo modo quando analizza il primo record non parte già con il ";" (cosa che aveva costretto me a trattare il primo record prima del ciclo) ma lo mette subito nella posizione corretta.
Il problema si presenta alla fine, con l'ultimo record, quando la stringa viene chiusa sempre dal segno di separazione.
Ecco perché @Alex ha aggiunto (con tanto di commento esplicativo)
' Rimuovo il [;] finale...
If Len(strElencoMail)>0 then strElencoMail = Mid$(strElencoMail,1,Len(strElencoMail)-1)
L'istruzione completa quindi diventa
Private Sub MailingList_Click()
Dim strElencoMail As String
Dim rs As DAO.Recordset
set rs=DbEngine(0)(0).OpenRecordset("SELECT [EMAIL] FROM [E-MAIL] WHERE [Seleziona]=true")
' Basta controllare EOF per testare se è VUOTO
If not rs.EOF Then
rs.MoveFirst
Do Until rs.EOF
strElencoMail = strElencoMail & rs.Fields("EMAIL").Value & ";"
rs.MoveNext
Loop
End If
' Rimuovo il [;] finale...
If Len(strElencoMail)>0 then strElencoMail = Mid$(strElencoMail,1,Len(strElencoMail)-1)
rs.Close
set rs=nothing
MailingList.value= strElencoMail
End Sub