Newsgroup: it.comp.appl.access
Titolo: Suggerimento su query ... please ...

Buon giorno a tutto il NG,
mi rivolgo a voi per trovare una strada percorribile alla soluzione
del seguente problema:
ho un DB con due tabelle collegate uno a molti rappresentate da
contratti (uno) e relativi pagamenti (molti), questi ultimi sono
inseriti con date di prevista esecuzione ed effettivamente effettuati.
Avrei bisogno di estrarre tutti i pagamenti "scaduti" ad una certa
data e non materialmente eseguiti (ovvero il cui pagamento era
pianificato ad una certa data e poi non effettivamente eseguito).
Fin qui tutto semplice con una query, impostando il criterio della
data di riferimento sul campo dei "pagamenti previsti" e un "is Null"
su quella del pagamento effettivo.
Il problema si pone però quando invece vorrei che il report riportasse
comunque TUTTI i pagamenti riferiti al ssingolo contratto e non solo
quelli "scriminati" dalla query.
Di fatto, quindi, la query servirebbe solo a restringere il campo su
quei contratti che hanno pagamenti non definiti, ma il report poi, per
quei contratti dovrebbe in ogni caso riportare tutti i pagamenti.
Spero di essere stato abbastanza chiaro nell'esposizione e ringrazio
sin d'ora per ogni suggerimento possa essermi rivolto.
Buona giornata a tutti.
Francesco


Da winzoz ti crei i due pulsanti per il report.
Noterari che strCriteria viene modificato all'occorrenza.
-- 
Daniele
Rispondere scartando OneEDP, spam e 32


Ciao Daniele,
grazie per la risposta ... ma credo che a causa ancora residui "di
ferie" nel cervello non ho ben compreso cosa intendi ...
potresti spiegarmi meglio ...
Grazie
Francesco

 ...
Puoi usare una sottoquery. Circa così:
SELECT tutti i campi che ti interessano
FROM Contratti INNER JOIN Pagamenti ON Contratti.CId = Pagamenti.CId
WHERE Contratti.CId IN
    (SELECT CId FROM Pagamenti WHERE Pagamento_Effettivo Is Null)
Se non riesci, posta la stringa SQL della semplice variante che
hai descritto sopra.
-- 
Ciao
Karl
*********
Access FAQ:  
www.donkarl.com/it
 


Mi pare di capire che vuoi utilizzare lo stesso report per due scopi.
Quando generi un report da autocomposizione all'interno di una maschera 
inserendo il punlsante report devi crearti una cosa del genere:
Private Sub Comando170_Click()
On Error GoTo Err_Comando170_Click
     Dim stDocName As String
     stDocName = "Brogliaccio Movimenti Fatturazione"
     DoCmd.OpenReport stDocName, acNormal,,"qui inserisci o ometti il 
tuo discriminante"
Exit_Comando170_Click:
     Exit Sub
Err_Comando170_Click:
     MsgBox err.Description
     Resume Exit_Comando170_Click
End Sub



Karl grazie,
come al solito sempre presente a risolvere i ns. problemi ...
nel frattempo ho risolto in maniera sicuramente "brutta" e "poco
ortodossa" che mi piacerebbe comunque migliorare.
Mi spiego, con la seguente query
SELECT PAGAMENTI.*
FROM PAGAMENTI
WHERE (((PAGAMENTI.Pag_Prev)<=#8/31/2010#) AND ((PAGAMENTI.Pag_Data)
Is Null))
ORDER BY PAGAMENTI.Decr_Id;
mi ricavo i soli pagamenti che interessano e poi la uso in quest'altra
query:
SELECT PAGAMENTI.*
FROM A INNER JOIN PAGAMENTI ON A.Decr_Id = PAGAMENTI.Decr_Id;
per ricavarmi tutti gli altri pagamenti relativi.
Spero di essermi spiegato.
Grazie per eventuali consigli.
Francesco


Ciao Daniele,
in effetti presumo di non essermi spiegato al meglio, comunque la
soluzione che ho trovato l'ho postata mentre tu mi fornivi la tua
gentile delucidazione.
Grazie comunque.
Francesco

 Grazie per eventuali consigli.
La tua soluzione non è per niente brutta ma invece perfettamente
ortodossa ;-) , cioè il modo standard di risolvere questo compito.
Solo l'ordinamento nella prima query è inutile e costa tempo se
hai molti record. Se hai bisogno di un ordinamento sarebbe
meglio nella seconda query o nel report.



Beh Karl sinceramente essere confortato dal tuo autorevole giudizio mi
ha reso molto contento ... ed ovviamente ho già provveduto ad
eleiminare l'ordinamento che, effettivamente, non aveva molto senso
perché poi lo applico nel report ... Grazie molte di cuore a te ed a
tutti coloro che ci aiutano sempre.
Francesco