Newsgroup: it.comp.appl.access
Titolo: SendObject di un report relativo ad uno specifico record

Arisalve a tutti!
Ecco il mio nuovo "problema":
Vorrei creare un tasto su ogni mio form che permetta di inviare tramite email un report (in formato snapshot) relativo al solo record visualizzato al momento sul form; ho ovviamente creato il report tramite procedura guidata e utilizzato il metodo SendObject (grazie a don Karl e alle sue meravigliose FAQ) per mandarlo, ma ovviamente se non imposto una qualche query o filtro dietro al report, quest'ultimo sarà composto da tutti i record... ho cercato qua e là sul web e sul forum (un po' velocemente devo dire), ma essendo inesperto non ho trovato suggerimenti che mi permettano di fare ciò tramite vba; avevo pensato ad una sorta di query/filtro da fare al volo nel codice sul report prima di spedirlo, ma non so se è il metodo più efficiente/semplice/veloce...
Qualche dritta (magari con esempi di codice ;-))?
grazie come al solito
-- 
atxkors 
------------------------------------------------------------------------
View this thread: 
http://www.itsistemi.net/viewtopic-687433.html
send from 
http://www.itsistemi.net


Il punto non è il sendobject ma filtrare il report con uno specifico record.
Alimenta il report con una query salvata che abbia nei criteri della colonna 
che ti interessa (per esempio ID - indice univoco) il riferimento al record 
della maschera:
Forms!TuoNomeForm!TuoID
Ciao, Carlo 

Ci provo, ma mi da continuamente errore di sintassi... ecco quello che sono riuscito a creare nella query (che prende dati da 3 diverse tabelle):
SELECT blablabla FROM Tabella1 INNER JOIN (Tabella2 INNER JOIN Tabella3 ON Forms![Tabella2]![Tabella2 Subform].Form![ID1] = Tabella3.[ID1]) ON Tabella1.[ID2] = Tabella3.[ID2]
In questo modo non gli piace, e neanche in molte altre varianti che ho provato... qual'è la sintassi corretta? grazie in anticipo
atxkors


scusa la query è questa:
SELECT blablabla FROM Tabella1 INNER JOIN (Tabella2 INNER JOIN Tabella3 ON Forms![NomeForm]![NomeSubform].Form![ID1] = Tabella3.[ID1]) ON Tabella1.[ID2] = Tabella3.[ID2]
qual'è la sintassi corretta?



Se tu dovessi alimentare il report con tutti i record, come faresti? Cioè 
funziona?
Fammi sapere,
ciao, Carlo


 Un'altra soluzione è quella di creare prima una query con il criterio e poi 
adoperare quest'ultima con le altre tabelle che ti interessano.
Per esempio la prima query (chiamata query8):
SELECT Contatti.*
FROM Contatti
WHERE (((Contatti.IDContatto)=[Forms]![Contatti]![IDContatto]));
Qui hai già applicato il criterio.
Ed ecco la seconda query:
SELECT Query8.*, [Tipi di contatti].IDTipoContatto, [Tipi di 
contatti].TipoContatto
FROM Query8 INNER JOIN [Tipi di contatti] ON Query8.IDTipoContatto = [Tipi 
di contatti].IDTipoContatto;
Se proprio non ci riesci mandami una copia del db (zippata) e vedrò cosa 
poter fare.
Ciao, Carlo 

Grazie delle tue info Carlo, mi sono state e mi saranno molto utili!
Invece di scrivere la query direttamente in SQL (avendo quindi i prob
di sintassi sopra esposti) ho risolto facendo una query dei campi che
mi interessavano mettendo (in visualizzazione struttura della query)
questo criterio:
[Forms]![NomeForm]![NomeSubForm].[Form]![ID Richiesta]
nella colonna del campo identificativo che volevo fossse uguale a
quello nel form, creando poi un report alimentato da tutti i campi di
questa query, e funziona a meraviglia!
l'SQL risultante (creato da Access) è il seguente:
SELECT blablabla
FROM RICHIEDENTE INNER JOIN (Tabella1 INNER JOIN RICHIESTA ON
Tabella1.[ID Richiesta] =Tabella2.[ID Richiesta]) ON Tabella3.[ID
Richiedente] =  Tabella2.[ID Richiedente]
GROUP BY  Tabella3.Nome, Tabella3.Cognome,  Tabella3.[Società/BU],
Tabella3.Ente,  Tabella3.[Ruolo Aziendale],
Tabella3.Recapito,Tabella2.[ID Richiesta], Tabella1.[Matricola],
Tabella1.Sede, Tabella1.[Ubicazione], Tabella1.[Anomalia Segnalata]
HAVING ((( Tabella2.[ID
Richiesta])=[Forms]![NomeForm]![NomeSubForm].[Form]![ID Richiesta]));
grazie ancora per i consigli che mi hanno messo sulla strada giusta!