Newsgroup: it.comp.appl.access
Titolo: Risultato query

In una query di selezione ho:
Campo: IdContatto
Tabella: Contatti
Criteri: IIf([forms]![ElencoContatti]![GruppoMail]="G1";>=1 And <=40)
non mi da nessun risultato.
se invece nei criteri inserisco direttamente: >=1 And <=40
il risultato esce.
Dov'è l'errore?
Grazie

> Criteri: IIf([forms]![ElencoContatti]![GruppoMail]="G1";>=1 And <=40)
 
se ho capito bene il tuo criterio interessa 2 campi:
 
GruppoMail   e  AltroCampo
 
Se GruppoMail = 1 vuoi prendere AltroCampo >1  e <40
Se GruppoMail <> 1   cosa vuoi prendere di AltroCampo ????  ( Forse nulla )
 
 
Prova a fare dei criteri separati ( senza iif )
 
WHERE
GruppoMail = 1 AND AltroCampo > 1 AND AltroCampo < 40
OR
GruppoMail <> 1 AND AltroCampo ...........
 
 
.

Il campo da cui prende i dati è uno solo e si chiama "IDContatto" e la tabella si chiama "Contatti", il filtro parte dalla maschera "ElencoContatti" e dalla casella di testo "GruppoMail", se selezione "G1" dovrebbe filtrarmi gli id da 1 a 20.
il criterio esatto è questo:
IIf([forms]![ElencoContatti]![GruppoMail]="G1";([Contatti].[IDContatto])>=1 And ([Contatti].[IDContatto])<=20)
ma non funziona!!


Gli operatori che usi nella parte True del Iif() non vengono riconosciuti
come operatori da Access/JET ma l'intera espressione come
una sola entità. Per questo ci sarebbero solo filtrato il valore
">=1 And <=40" nel campo.
 
La soluzione dipende di cosa vuoi ottenere se nel controllo della
maschera NON si trova "G1". Se in questo caso vuoi che vengano
tutti record prova con questo criterio nella colonna IdContatto:
 
(>=1 And <=40) Or (nz([Forms]![ElencoContatti]![GruppoMail])<>"G1")
 
-- 
Ciao
Karl
*********
Access FAQ:  
http://www.donkarl.com/it
 
 
 

Ciao Karl 
Il codice che hai postato funziona bene, infatti
se eseguo la query mi da il risultato che mi aspetto,
però se eseguo il codice sql dalla maschera mi da 
errore run time 3061
Parametri insufficienti. Previsto 1

Ciao Alfonso,

Incolla il codice che usi.


Set rs = db.OpenRecordset("SELECT Contatti.NomeParrocchia, Contatti.Email, Contatti.Status, Contatti.IDContatto " & _
"FROM Contatti WHERE (((Contatti.Email) Is Not Null) AND ((Contatti.Status)='Iscritto') AND (((Contatti.IDContatto)>=1 " & _
"And (Contatti.IDContatto)<=40) Or (nz([Forms]![ElencoContatti]![GruppoMail])<>'G1'))) " & _
"ORDER BY Contatti.NomeParrocchia, Contatti.Email;", dbOpenDynaset)


Prova cosě:
 
Dim strSQL As String
 
strSQL = _
    "SELECT NomeParrocchia, Email, Status, IDContatto " & _
    "FROM Contatti " & _
    "WHERE Email Is Not Null AND Status='Iscritto' AND " & _
        "((IDContatto>=1 AND IDContatto<=40) OR " & _
        "('" & Forms!ElencoContatti!GruppoMail & "'<>'G1')) " & _
    "ORDER BY NomeParrocchia, Email"
 
Set rs = db.OpenRecordset(strSQL, dbOpenDynaset)
 
Se il codice si trova nella maschera "ElencoContatti" puoi ancora sostituire
Forms!ElencoContatti!GruppoMail
con
Me!GruppoMail
 
Per la spiegazione e ulteriori soluzione di quest'errore vedi:
http://www.donkarl.com/it?FAQ6.4
 


 
alfonso...@libero.it
 wrote: > Set rs = db.OpenRecordset("SELECT Contatti.NomeParrocchia, > Contatti.Email, Contatti.Status, Contatti.IDContatto " & _ "FROM > Contatti WHERE (((Contatti.Email) Is Not Null) AND > ((Contatti.Status)='Iscritto') AND (((Contatti.IDContatto)>=1 " & _ > "And (Contatti.IDContatto)<=40) Or > (nz([Forms]![ElencoContatti]![GruppoMail])<>'G1'))) " & _ "ORDER BY > Contatti.NomeParrocchia, Contatti.Email;", dbOpenDynaset) Prova così: Dim strSQL As String strSQL = _ "SELECT NomeParrocchia, Email, Status, IDContatto " & _ "FROM Contatti " & _ "WHERE Email Is Not Null AND Status='Iscritto' AND " & _ "((IDContatto>=1 AND IDContatto<=40) OR " & _ "('" & Forms!ElencoContatti!GruppoMail & "'<>'G1')) " & _ "ORDER BY NomeParrocchia, Email" Set rs = db.OpenRecordset(strSQL, dbOpenDynaset) Se il codice si trova nella maschera "ElencoContatti" puoi ancora sostituire Forms!ElencoContatti!GruppoMail con Me!GruppoMail Per la spiegazione e ulteriori soluzione di quest'errore vedi: 
http://www.donkarl.com/it?FAQ6.4
 -- Ciao Karl ********* Access FAQ: 
http://www.donkarl.com/it
 
 
Tutto ok grazie

Ciao volevo sapere se è possibile inviare allegati di qualsiasi genere utilizzando il "DoCmd.SendObject" ho visto in rete ma non ho ben capito se è valido oppure è necessario utilizzare "Mapi".
Se si come fare?
Spero che anche Karl legga.
Grazie

 ben capito se č valido oppure č necessario utilizzare "Mapi".
 
Dipende di cosa vuoi fare e quale programma di mail usi.
Nel web ci sono millioni discussioni ed esempi su questo soggetto...


Ciao Karl, ho adottato questo codice per inviare allegati:
https://groups.google.com/forum/#!topic/it.comp.appl.access/L3c_EGHffWo
 
però:
1- mi obbliga sempre ad inserire un allegato non accetta il null cosi' anche .Subject,.CC,.Body, ecc.
2- .To = strSQL (dovrebbe eseguire il codice sql che mi hai postato precedentemente)
Grazie

 Ciao Karl, ho adottato questo codice per inviare allegati: 
https://groups.google.com/forum/#!topic/it.comp.appl.access/L3c_EGHffWo
 però: 1- mi obbliga sempre ad inserire un allegato non accetta il null cosi' anche .Subject,.CC,.Body, ecc. 2- .To = strSQL (dovrebbe eseguire il codice sql che mi hai postato precedentemente) Grazie
 
ho dimenticato di dire che utilizzo Outlook e Access di Office 2003

(-_-)zzZ

 (-_-)zzZ
 
Buon riposo! :-)
Nella discussione segnalata ci sono vari codici per di più con variazioni,
senza incollare il tuo codice non è chiaro quale usi, con quali parametri
lo chiami, se vuoi avere un ciclo o ? con gli indirizzi ecc.
 
Ho troppo lavoro nell'ufficio per sempre chiedere le chiarificazioni
necessari e così devo lasciare aperte molte discussioni in tanti
NG e fori.


Questo è il codice è un casino lo so, spero che tu riesca a sbrogliarlo
Grazie   ;-)
 
Private Sub InviaEmailTutti_Click()
On Error GoTo myError
 
Dim NewMail As MailItem, S As String, i As Integer
Dim AttachmentArray(1 To 3) As String
Dim FSO As Object, TextStream As Object
Dim db As Database, rs As Recordset
 
Dim strSendTo As String, strSQL As String, Oggetto As String, Note As String, Allegato As String, _
CopiaConosce As String
 
 
Set db = CurrentDb
Set rs = db.OpenRecordset("Contatti", dbOpenDynaset)
 
If IsNull(Me![GruppoMail]) Then
MsgBox "Inserisci il gruppo a cui spedire l'e-mail", vbInformation, "Program manager informa"
Me.GruppoMail.SetFocus
ElseIf IsNull(Me![OggettoMail]) Then
MsgBox "Inserisci l'oggetto dell'e-mail", vbInformation, "Program manager informa"
Me.OggettoMail.SetFocus
ElseIf IsNull(Me![TestoMail]) Then
MsgBox "Inserisci il testo dell'e-mail", vbInformation, "Program manager informa"
Me.TestoMail.SetFocus
Else
 
AttachmentArray(1) = Me.txtAttach1
AttachmentArray(2) = Me.txtAttach2
AttachmentArray(3) = Me.txtAttach3
CopiaConosce = Me.CopiaConoscenza
Oggetto = Me.OggettoMail
Note = Me.TestoMail
 
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TextStream = FSO.OpenTextFile("C:\aa1.txt")
Do Until TextStream.AtEndOfStream
    S = TextStream.ReadLine
Loop
 
 
    Set NewMail = CreateObject("Outlook.Application").CreateItem(olMailItem)
 
    With NewMail
        .To = ' strSQL = "Codice sql che mi hai postato"
        .CC = CopiaConosce
       '.BCC = "fffff@fff; ggggg@ggg"
        .Subject = Oggetto
        .Body = Note
        For i = 1 To 3
            .Attachments.Add AttachmentArray(i)
        Next
        .Send
    End With
    Set NewMail = Nothing
    rs.MoveNext
End If
 
myExit:
    If Not rs Is Nothing Then rs.Close: Set rs = Nothing
    Set db = Nothing
    Exit Sub
 
myError:
    Select Case Err.Number
        Case 9999
           '  MsgBox "Nothing", vbInformation, "Program manager informa"
        Case Else
             MsgBox "Invio annullato dall'utente", vbInformation, "Program manager informa"
    Resume myExit
    End Select
 
End Sub

 ...
 
Siccome finora non hai descritto il tuo compito non è chiaro
perché vuoi usare questo casino invece di un codice semplice
per ottenere cosa vuoi fare.


... Siccome finora non hai descritto il tuo compito non è chiaro perché vuoi usare questo casino invece di un codice semplice per ottenere cosa vuoi fare. -- 
 
In una tabella "contatti" ho circa 150 indirizzi e-mail a cui invio molto spesso dei messaggi con allegati, il problema è che da un certo periodo a questa parte molti di questi non arrivano e mi ritorna un messaggio che non è stato possibile raggiungere alcuni destinatari (gli indirizzi e-mail sono tutti esatti).
Mi è stato detto che potrebbe essere un limite imposto dal gestore della linea adsl (wind Infostrada)per combattere lo spam.
Allora ho pensato di suddividere i 150 utenti in gruppi da 40, in modo da evitare che non arrivino a destinazione.
Ho preso spunto un po in giro e il codice che ti ho incollato nel precedente posto è il risultato, ma se non riempio tutti i campi (.CC - :Subject - .Body Ecc)non invia, inoltre .To= il codice sql per inviare ai gruppi di 40 utenti che è questo:
strSQL = "SELECT NomeParrocchia, Email, Status, IDContatto " & _
"FROM Contatti " & _
"WHERE Email Is Not Null AND Status='Iscritto' AND ((IDContatto>=1 AND IDContatto<=40) OR ('" & Me!GruppoMail & "'<>'1° gruppo'))  " & _
" And Email Is Not Null AND Status='Iscritto' AND ((IDContatto>=41 AND IDContatto<=80) OR ('" & Me!GruppoMail & "'<>'2° gruppo'))  " & _
" And Email Is Not Null AND Status='Iscritto' AND ((IDContatto>=81 AND IDContatto<=120) OR ('" & Me!GruppoMail & "'<>'3° gruppo'))  " & _
" And Email Is Not Null AND Status='Iscritto' AND ((IDContatto>=121 AND IDContatto<=160) OR ('" & Me!GruppoMail & "'<>'4° gruppo'))  " & _
"ORDER BY NomeParrocchia, Email"
 
finito!! che sudata solo per spiegarlo ... figuriamoci per realizzarlo!!
Grazie per la tua disponibilità Karl

Il giorno mercoledì 29 gennaio 2014 11:09:56 UTC+1, 
alfonso...@libero.it
 ha scritto:
 
(:\)

Ciao Karl, ho risolto il problema di dover inserire allegati obbligatoriamente, però adesso la mail non parte, ti posto il codice, gli puoi dare un'occhiata?:
 
Private Sub InviaEmailTutti_Click()
On Error GoTo myError
 
Dim NewMail As MailItem, S As String, i As Integer
Dim FSO As Object, TextStream As Object
Dim db As Database, RS As Recordset
Dim strSQL As String
 
Set db = CurrentDb
 
If IsNull(Me![GruppoMail]) Then
MsgBox "Inserisci il gruppo a cui spedire l'e-mail", vbInformation, "Program manager informa"
Me.GruppoMail.SetFocus
ElseIf IsNull(Me![OggettoMail]) Then
MsgBox "Inserisci l'oggetto dell'e-mail", vbInformation, "Program manager informa"
Me.OggettoMail.SetFocus
ElseIf IsNull(Me![TestoMail]) Then
MsgBox "Inserisci il testo dell'e-mail", vbInformation, "Program manager informa"
Me.TestoMail.SetFocus
Else
 
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TextStream = FSO.OpenTextFile("C:\aa1.txt")
Do Until TextStream.AtEndOfStream
    S = TextStream.ReadLine
Loop
    Set NewMail = CreateObject("Outlook.Application").CreateItem(olMailItem)
    With NewMail
 
        .To = "SELECT NomeParrocchia, Email, Status, IDContatto " & _
"FROM Contatti " & _
"WHERE Email Is Not Null AND Status='Iscritto' AND ((IDContatto>=1 AND IDContatto<=40) OR ('" & Me!GruppoMail & "'<>'1° gruppo'))  " & _
" And Email Is Not Null AND Status='Iscritto' AND ((IDContatto>=41 AND IDContatto<=80) OR ('" & Me!GruppoMail & "'<>'2° gruppo'))  " & _
" And Email Is Not Null AND Status='Iscritto' AND ((IDContatto>=81 AND IDContatto<=120) OR ('" & Me!GruppoMail & "'<>'3° gruppo'))  " & _
" And Email Is Not Null AND Status='Iscritto' AND ((IDContatto>=121 AND IDContatto<=160) OR ('" & Me!GruppoMail & "'<>'4° gruppo'))  " & _
"ORDER BY NomeParrocchia, Email"
 
        If IsNull(Me![CopiaConoscenza]) Then
        Else: .CC = CopiaConoscenza
        End If
        '.BCC = "fffff@fff; ggggg@ggg"
        .Subject = OggettoMail
        .Body = TestoMail
 
        If IsNull(Me![txtAttach1]) Then
        Else: .Attachments.Add (Me.txtAttach1)
        End If
        If IsNull(Me![txtAttach2]) Then
        Else: .Attachments.Add (Me.txtAttach2)
        End If
        If IsNull(Me![txtAttach3]) Then
        Else: .Attachments.Add (Me.txtAttach3)
        End If
 
        .Send
    End With
    Set NewMail = Nothing
    RS.MoveNext
End If
 
myExit:
    If Not RS Is Nothing Then RS.Close: Set RS = Nothing
    Set db = Nothing
    Exit Sub
 
myError:
    Select Case Err.Number
        Case 9999
             MsgBox "Invio annullato dall'utente Bis", vbInformation, "Program manager informa"
        Case Else
             MsgBox "Invio annullato dall'utente", vbInformation, "Program manager informa"
    Resume myExit
    End Select
 
End Sub
 
Grazie...Thanks...Merci...Dank...Obrigado...ευχαριστίες...Takk...dzięki...Teşekkürler...Tack...Falënderim...Grazzi...Mahad...Kiitos...EccEcc

 gli puoi dare un'occhiata?:
 
Nel tuo codice sono troppe cose non chiare, dubbi e sbagli per fornirti
un codice che funzioni subito. Quindi ho solo cambiato, aggiunto o
lasciato perdere alcune parti che per me sembrano strane, false o
mancante. Forse ti aiuta almeno in qualche aspetto.
 
 
' ********* CODE START ***********
On Error GoTo myError
 
Dim NewMail As Outlook.MailItem
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strSQL As String
 
Set db = CurrentDb
 
If IsNull(Me!GruppoMail) Then
    MsgBox "Inserisci il gruppo a cui spedire l'e-mail", vbInformation, 
"Program manager informa"
    Me!GruppoMail.SetFocus
ElseIf IsNull(Me!OggettoMail) Then
    MsgBox "Inserisci l'oggetto dell'e-mail", vbInformation, "Program 
manager informa"
    Me!OggettoMail.SetFocus
ElseIf IsNull(Me!TestoMail) Then
    MsgBox "Inserisci il testo dell'e-mail", vbInformation, "Program manager 
informa"
    Me!TestoMail.SetFocus
Else
 
    strSQL = "SELECT NomeParrocchia, Email" & _
            " FROM Contatti " & _
            " WHERE Email Is Not Null AND Status='Iscritto' AND (" & _
            " ((IDContatto>=1 AND IDContatto<=40) OR ('" & Me!GruppoMail & 
"'<>'1° gruppo')) OR" & _
            " ((IDContatto>=41 AND IDContatto<=80) OR ('" & Me!GruppoMail & 
"'<>'2° gruppo')) OR" & _
            " ((IDContatto>=81 AND IDContatto<=120) OR ('" & Me!GruppoMail & 
"'<>'3° gruppo')) OR" & _
            " ((IDContatto>=121 AND IDContatto<=160) OR ('" & Me!GruppoMail 
& "'<>'4° gruppo')) )" & _
            " ORDER BY NomeParrocchia, Email"
 
    Set rs = db.OpenRecordset(strSQL, dbOpenDynaset)
 
    Do Until rs.EOF
 
        Set NewMail = 
CreateObject("Outlook.Application").CreateItem(olMailItem)
 
        With NewMail
 
            .To = rs!Email
 
            If Not IsNull(Me!CopiaConoscenza) Then .CC = Me!CopiaConoscenza
            '.BCC = "fffff@fff; ggggg@ggg"
            .Subject = Me!OggettoMail
            .Body = Me!TestoMail
 
            If Not IsNull(Me!txtAttach1) Then .Attachments.Add 
(Me!txtAttach1)
            If Not IsNull(Me![txtAttach2]) Then .Attachments.Add 
(Me.txtAttach2)
            If Not IsNull(Me![txtAttach3]) Then .Attachments.Add 
(Me.txtAttach3)
 
            .Send
 
        End With
 
        Set NewMail = Nothing
 
    rs.MoveNext
 
End If
 
myExit:
    If Not rs Is Nothing Then rs.Close: Set rs = Nothing
    Set db = Nothing
    Exit Sub
 
myError:
    Select Case Err.Number
        Case 9999
             MsgBox "Invio annullato dall'utente Bis", vbInformation, 
"Program manager informa"
        Case Else
             MsgBox "Invio annullato dall'utente", vbInformation, "Program 
manager informa"
    End Select
    Resume myExit
' ********* CODE END ***********


Ciao, c'è un solo problema quando invio mi compare il solito avviso di protezione di outlook "Un programma sta tentando....." il problema più grosso è che me lo chiede per ogni indirizzo mail per cui visto che ogni gruppo è formato da 40 utenti, me lo chiede 40 volte, in pratica anzicchè inviare una mail a 40 utenti, ne invia una ad ogni utente.

 ...anzicchè inviare una mail a 40 utenti, ne invia una ad ogni utente.
 
Per me sembrava lo scopo. Se invece vuoi solo inviare 4 mail ogni
con 40 indirizzi nel To prova circa così:
 
 
' ********* CODE START ***********
On Error GoTo myError
 
Dim NewMail As Outlook.MailItem
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strSQL As String, strTo As String
Dim i As Long
 
Set db = CurrentDb
 
If IsNull(Me!GruppoMail) Then
    MsgBox "Inserisci il gruppo a cui spedire l'e-mail", vbInformation, 
"Program manager informa"
    Me!GruppoMail.SetFocus
ElseIf IsNull(Me!OggettoMail) Then
    MsgBox "Inserisci l'oggetto dell'e-mail", vbInformation, "Program 
manager informa"
    Me!OggettoMail.SetFocus
ElseIf IsNull(Me!TestoMail) Then
    MsgBox "Inserisci il testo dell'e-mail", vbInformation, "Program manager 
informa"
    Me!TestoMail.SetFocus
Else
 
For i = 1 To 4
 
    strTo = ""
 
    strSQL = "SELECT Email" & _
            " FROM Contatti " & _
            " WHERE Email Is Not Null AND Status='Iscritto' AND" & _
                " ((IDContatto>=" & (i - 1) * 40 + 1 & _
                " AND IDContatto<=" & i * 40 & ")" & _
                " OR ('" & Me!GruppoMail & "'<>'" & i & "° gruppo'))" & _
            " ORDER BY NomeParrocchia, Email"
 
    Set rs = db.OpenRecordset(strSQL, dbOpenDynaset)
 
    'concatenare gli indirizzi
    Do Until rs.EOF
        strTo = strTo & rs!Email & ";"
        rs.MoveNext
    Loop
 
    'troncare l'ultimo punto e virgola
    If strTo > "" Then strTo = Left(strTo, Len(strTo) - 1)
 
    Set NewMail = CreateObject("Outlook.Application").CreateItem(olMailItem)
 
    With NewMail
 
        .To = strTo
 
        If Not IsNull(Me!CopiaConoscenza) Then .CC = Me!CopiaConoscenza
        '.BCC = "fffff@fff; ggggg@ggg"
        .Subject = Me!OggettoMail
        .Body = Me!TestoMail
 
        If Not IsNull(Me!txtAttach1) Then .Attachments.Add (Me!txtAttach1)
        If Not IsNull(Me![txtAttach2]) Then .Attachments.Add (Me.txtAttach2)
        If Not IsNull(Me![txtAttach3]) Then .Attachments.Add (Me.txtAttach3)
 
        .Send
 
    End With
 
    Set NewMail = Nothing
 
Next i
 
End If
 
myExit:
    If Not rs Is Nothing Then rs.Close: Set rs = Nothing
    Set db = Nothing
    Exit Sub
 
myError:
    Select Case Err.Number
        Case 9999
             MsgBox "Invio annullato dall'utente Bis", vbInformation, 
"Program manager informa"
        Case Else
             MsgBox "Invio annullato dall'utente", vbInformation, "Program 
manager informa"
    End Select
    Resume myExit
' ********* CODE END ***********
 
Nota: Se sono 40 persone che non si conoscono bene, l'uso è di non
pubblicare 40 indirizzi mail nel To ma usare il BCC e mostrare p.e.
solo l'indirizzo del mittente nel To.


Il giorno venerdì 14 febbraio 2014 17:22:37 UTC+1, Karl Donaubauer ha scritto:
 ...anzicchè inviare una mail a 40 utenti, ne invia una ad ogni utente. Per me sembrava lo scopo. Se invece vuoi solo inviare 4 mail ogni con 40 indirizzi nel To prova circa così: ' ********* CODE START *********** On Error GoTo myError Dim NewMail As Outlook.MailItem Dim db As DAO.Database Dim rs As DAO.Recordset Dim strSQL As String, strTo As String Dim i As Long Set db = CurrentDb If IsNull(Me!GruppoMail) Then MsgBox "Inserisci il gruppo a cui spedire l'e-mail", vbInformation, "Program manager informa" Me!GruppoMail.SetFocus ElseIf IsNull(Me!OggettoMail) Then MsgBox "Inserisci l'oggetto dell'e-mail", vbInformation, "Program manager informa" Me!OggettoMail.SetFocus ElseIf IsNull(Me!TestoMail) Then MsgBox "Inserisci il testo dell'e-mail", vbInformation, "Program manager informa" Me!TestoMail.SetFocus Else For i = 1 To 4 strTo = "" strSQL = "SELECT Email" & _ " FROM Contatti " & _ " WHERE Email Is Not Null AND Status='Iscritto' AND" & _ " ((IDContatto>=" & (i - 1) * 40 + 1 & _ " AND IDContatto<=" & i * 40 & ")" & _ " OR ('" & Me!GruppoMail & "'<>'" & i & "° gruppo'))" & _ " ORDER BY NomeParrocchia, Email" Set rs = db.OpenRecordset(strSQL, dbOpenDynaset) 'concatenare gli indirizzi Do Until rs.EOF strTo = strTo & rs!Email & ";" rs.MoveNext Loop 'troncare l'ultimo punto e virgola If strTo > "" Then strTo = Left(strTo, Len(strTo) - 1) Set NewMail = CreateObject("Outlook.Application").CreateItem(olMailItem) With NewMail .To = strTo If Not IsNull(Me!CopiaConoscenza) Then .CC = Me!CopiaConoscenza '.BCC = "fffff@fff; ggggg@ggg" .Subject = Me!OggettoMail .Body = Me!TestoMail If Not IsNull(Me!txtAttach1) Then .Attachments.Add (Me!txtAttach1) If Not IsNull(Me![txtAttach2]) Then .Attachments.Add (Me.txtAttach2) If Not IsNull(Me![txtAttach3]) Then .Attachments.Add (Me.txtAttach3) .Send End With Set NewMail = Nothing Next i End If myExit: If Not rs Is Nothing Then rs.Close: Set rs = Nothing Set db = Nothing Exit Sub myError: Select Case Err.Number Case 9999 MsgBox "Invio annullato dall'utente Bis", vbInformation, "Program manager informa" Case Else MsgBox "Invio annullato dall'utente", vbInformation, "Program manager informa" End Select Resume myExit ' ********* CODE END ***********
Con questo codice invia l'e-mail ad un solo gruppo di 40 indirizzi, ti ricordo che gli utenti a cui inviare l'e-mail sono 160.
 
 Nota: Se sono 40 persone che non si conoscono bene, l'uso è di non pubblicare 40 indirizzi mail nel To ma usare il BCC e mostrare p.e. solo l'indirizzo del mittente nel To. -- Ciao Karl ********* Access FAQ: 
http://www.donkarl.com/it
 
Si questo lo so infatti il codice che hai postato prima di questo così funziona, però siccome utilizzo outlook 2003 per ogni invio scatta la protezione e quindi per 40 volte mi chiede "Un programma sta tentando.....", e devo premere "Si" - almenochè non c'è un modo per aggirare questa protezione.
Grazie Karl per la tua pazienza.

 per aggirare questa protezione.
 
Non conosco un modo veramente soddisfacente.
 
Ci sono programmi come
http://www.contextmagic.com/express-clickyes
 
http://www.dimastr.com/redemption
 
http://www.mosstools.de/index.php?option=com_content&view=article&id=64&Itemid=64
 
 
però ClickYes è lento (perché OL pausa alcuni secondi ad ogni mail)
e gli altri due tool sono un po complicati.


Se l'hai provato e solo prende 1 gruppo forse c'è ancora un errore nel codice perché è inteso di ciclare quattro volte per prendere tutti gruppi. È solo "air code" perché non posso provarlo o debugarlo. Dovresti fare tu.
L'ho riprovato e ti confermo che parte solo il primo gruppo di indirizzi.
Però l'idea è ottima!!
 
Non conosco un modo veramente soddisfacente. Ci sono programmi come 
http://www.contextmagic.com/express-clickyes
 
http://www.dimastr.com/redemption
 
http://www.mosstools.de/index.php?option=com_content&view=article&id=64&Itemid=64
 però ClickYes è lento (perché OL pausa alcuni secondi ad ogni mail) e gli altri due tool sono un po complicati. -- Ciao Karl ********* Access FAQ: 
http://www.donkarl.com/it
 
 
Ho provato con MapiLab (trovato in rete) ma non risolve il problema.

Ciao Karl non ti dimenticare di me...sono sempre in attesa di una risposta 

 Ciao Karl non ti dimenticare di me...sono sempre in attesa di una risposta
 
Solo per rimetterla in evidenza