Newsgroup: it.comp.appl.access
Titolo: invio di dati per email. Perchè apro due messaggi?

ci sono quasi, provo a riformulare la domanda.
Con il seguente codice ottengo più o meno quello che voglio (inviare 
un'email che contiene i dati della mia query:
 
-- inizio codice --
Private Sub Comando24_Click()
Dim MyDb As DAO.Database
Dim rsEmail As DAO.Recordset
Dim sToName As String
Dim sSubject As String
Dim sMessageBody As String
 
Set MyDb = CurrentDb()
Set rsEmail = MyDb.OpenRecordset("DettagliQry", dbOpenSnapshot)
 
With rsEmail
         .MoveFirst
         Do Until rsEmail.EOF
             'If IsNull(.Fields(X)) = False Then
                 sToName = "
mioind...@miodominio.com
"
                 sSubject = "Dettagli"
                 sMessageBody = "Premessa qualunque " & vbCrLf & _
                      Surname & " " & NameSFr & vbCrLf & _
                      "Nationality: " & Nationality & vbCrLf & _
                      "DOB: " & DOB & vbCrLf & _
                      "POB: " & POB & vbCrLf & _
                      "Passport n.: " & PassportN & "  " & "Iss: " & 
PassportIss & "  " & "Exp.: " & PassportExp & vbCrLf & _
                      "S. Book n.: " & RegNr & " " & Compartment & vbCrLf
                 DoCmd.SendObject acSendNoObject, , , _
                     sToName, , , sSubject, sMessageBody, True, False
             'End If
             .MoveNext
         Loop
End With
 
Set MyDb = Nothing
Set rsEmail = Nothing
End Sub
-- fine codice --
 
tuttavia thunderbird mi apre due messaggi identici. Che siano due 
immagino dipenda dal fatto che i record restituiti dalla query sono due. 
Come faccio ad ottenerne uno solo?
 
grazie in anticipo
-- 
Stefano
 


Come hai fatto tu, partiranno tanti messaggi quanti sono i record
Se vuoi inviare un solo record basta che tu sostituisca la riga
Do Until rsEmail.EOF   ==>>  If not(rsEmail.eof) and not(rsEmail.bof) e 
di conseguenza anche
Loop  ==>>  End If
 
Il vero problema sembra pero' essere come mai vuoi inviare UNA email da 
una query che restituisce MOLTI record
A naso non e' granche' logica la cosa
Forse sbagli la query, dovresti operare in modo che ti restituisca solo 
la riga che ti interessa inviare per posta
 
 

stef@no submitted this idea :

Dovrai costruire la query in modo che non ti restituisca duplicati:
prova con la clausola SELECT DISTINCTROW ovvero selezionando
la proprietà TOTAL nella griglia QBE ovvero... bisognerebbe
saperne di più.
 
Bruno

 la riga che ti interessa inviare per posta
Capisco. In realtà si tratta di una sorta di report: sono più record 
riferiti allo stesso nominativo. E mi serve che viaggino insieme
 
grazie ancora
-- 
Stefano
 

 saperne di più.
Come dicevo a Roberto, in realtà non ci sono duplicati ma più record 
riferiti allo stesso nominativo e mi serve che quest dati viaggino 
insieme. in un report o in una maschera saprei come raggrupparli, ma non 
capisco come farlo nella query.
 
grazie ancora
-- 
Stefano
 

stef@no explained on 15-02-16 :

Per quanto riguarda l'e-mail i duplicati ci sono.
Attiva la clausola Totals dalla griglia QBE ed elimina
quei campi che non ti servono per inviare l'e-mail.
 
Se poi per uno stesso nominativo hai due campi che
costituiscono, per esempio, gli oggetti che tu voglia
entrambi indicati nella stessa e-mail... la cosa
si complica un po' ma non è impossibile.
 
Puoi mettere online il database, anche soltanto con
la query che hai costruito e le tabelle da cui prende i dati?
 
Bruno

Il 15/02/2016 15:11, Bruno Campanini ha scritto:
 
 > Puoi mettere online il database, anche soltanto con
 > la query che hai costruito e le tabelle da cui prende i dati?
ora vedo cosa togliere.
 
grazie ancora
 
ciao
-- 
Stefano

 la query che hai costruito e le tabelle da cui prende i dati?
ecco fatto. Ho tolto tutto il possibile non per nascondere qualcosa ma 
per cercare di ridurre il peso dell'allegato.
https://www.dropbox.com/s/v5k59xpcn9mhn1n/Database1.zip?dl=0
 
Grazie ancora.
 
ciao
-- 
Stefano


Ma se sono record relativi ad un certo nominativo, non puoi fare un bel 
  GROUP BY ?
Da 100 record ti verrebbero solo i 12 record con nominativo diverso
 

stef@no brought next idea :

Apri la scheda Form1 e segui le istruzioni
https://www.dropbox.com/s/mxlu267iemxk7gt/Database1.accdb?dl=0
 
 
Bruno


perdona... ho sbagliato tasto e ti ho risposto in privato...
 
ciao
-- 
Stefano


scusa ancora, troppa fretta nel rispondere. Il tuo suggerimento va nella 
stessa direzione di quella di Bruno (giustamente).
Ora vedo come servirmene.
 
Grazie ancora
-- 
Stefano

 
https://www.dropbox.com/s/mxlu267iemxk7gt/Database1.accdb?dl=0
 
Grazie.
Quindi, se capisco bene il meccanismo, la tua query di accodamento crea 
una nuova tabella che userò come base dati per la maschera nella quale 
inserirò il pulsante con il codice per l'invio della mail.
Corretto?
 
grazie ancora
-- 
Stefano
 

stef@no submitted this idea :

Corretto!
 
Bruno

 
https://www.dropbox.com/s/mxlu267iemxk7gt/Database1.accdb?dl=0
 
 
ciao Bruno,
finalmente ho il tempo di mettere mano a questa faccenda che purtroppo 
non funziona come vorrei.
 
questa è la query di accodamento che mi hai cortesemente costruito
 
INSERT INTO NoDup_AnagraficaCertificati ( ID, Surname, Name, 
Nationality, DOB, POB, PassportN, RegNr, Compartment, Competency, Issue, 
Expiry )
SELECT Anagrafica.ID, Anagrafica.Surname, Anagrafica.Name, 
Anagrafica.Nationality, Anagrafica.DateOfBirth, Anagrafica.PlaceOfBirth, 
Anagrafica.PassportN, Anagrafica.RegNr, Anagrafica.Compartment, 
Anagrafica.Competency, Certificati.Issue, Certificati.Expiry
FROM Anagrafica INNER JOIN Certificati ON Anagrafica.ID = 
Certificati.IDanagrafica
WHERE (((Anagrafica.ID) In (SELECT DettagliQuery.ID FROM DettagliQuery 
GROUP BY DettagliQuery.ID;)) AND ((Certificati.IDcertificate)=100 Or 
(Certificati.IDcertificate)=1));
 
ora, nella tabella NoDup_AnagraficaCertificati non vengono inserite le 
date di emissione e scadenza del secondo certificato e non saprei come 
dividere in due campi, nella tabella destinazione, ciò che invece è 
contenuto nella query mittente nello stesso campo di due record diversi.
Spero di non aver pasticciato io il codice ma mi pare di no.
 
Se e quando hai cinque minuti...
 
Grazie ancora
 
ciao
-- 
Stefano