Newsgroup: it.comp.appl.access
Titolo: campi incrociati filtrati per data

Sono un super novellino e sto preparando un db che gestisce le spese
bancarie, ma ho un problema che non riesco a superare.Cercherò di
semplificare per riuscire a spiegarmi:
ho una tabella "SPESE" con ID,NomeSpesa, + un'altra "CONDIZIONI"con
ID,Importo,Tasso,DataDecorrenza,IDSpese,IDBanca (ovviamente c'è anche
una tabella Banche, ma non mi pare che sia importante per l'esempio).
In "Spese" inserisco le categorie di spesa (versamento, bonifico,
insoluti, c/corrente) e nell'altra i loro importi con le relative date
di decorrenza.
L'intenzione è di avere una casella di riepilogo con questi dati,
(filtrati per banca tramite casella combinata selezionata nel form),
con tutti i record della colonna NomeSpesa SEMPRE visualizzati, anche
se non presenti nei record della tabella "Condizioni".In caso di più
record per una spesa verrà visualizzato solo quello con la
datadecorrenza più recente.
Questo è un esempio di quello che vorrei ottenere:
NomeSpesa DataDecorrenza Importo  Tasso IDBanca
Versam.     01/01/03       10,00           1 
Bonifico    03/01/03       15,00           1 
Insoluti            
c/corr.     01/01/03              7,00%    1 
Ho provato con una query a campi incrociati ma non riesco a far
visualizzare solo il record più recente (me li mostra sempre o tutti o
uno solo) e, in ogni caso, quando filtro i dati per vedere una sola
banca vengono mostrate solo le righe che contengono dei dati (la riga
INSOLUTI non appare).
Scusate per la pessima esposizione del problema. 
Grazie a chi mi vorrà aiutare.
exsisto

 ha scritto nel messaggio
news:43b23e80.03011...@posting.google.com...

Una query a campi incrociati non è la strada per andare in paradiso.
Comunque, se sei un principiante ti sei scelto un problema abbastanza
complesso per cominciare: comunque vorrà dire che devi affrettarti a
studiare Access se vuoi capire la soluzione che ti suggerisco.
Se la maschera non associata che contiene la casella di riepologo e la
casella combinata per la scelta della banca si chiama Maschera1.
Se la casella di riepilogo dove si visualizzeranno le condizioni si chiama
Elenco.
Se la casella combinata da cui scegli la banca si chiama CercaBanca.
Se la colonna associata della casella combinata è quella relativa
all'IDBanca della tabella BANCHE.
Creati una prima query di ragguppamento chiamata Query1 che abbia il
seguente codice SQL:
SELECT CONDIZIONI.IDSpese, Max(CONDIZIONI.DataDecorrenza) AS
MaxDiDataDecorrenza, CCur(DLookUp("Importo", "CONDIZIONI", "IDSpese=" &
[IDSpese] & " AND DataDecorrenza = #" & Format([MaxDiDataDecorrenza],
"mm/dd/yyyy") & "#")) AS Importo, CDbl(DLookUp("Tasso", "CONDIZIONI",
"IDSpese=" & [IDSpese] & " AND DataDecorrenza = #" &
Format([MaxDiDataDecorrenza], "mm/dd/yyyy") & "#")) AS Tasso,
CONDIZIONI.IDBanca
FROM CONDIZIONI
GROUP BY CONDIZIONI.IDSpese, CONDIZIONI.IDBanca
HAVING (((CONDIZIONI.IDBanca) = [Forms]![Maschera1]![CercaBanca]));
Creati poi una seconda query chiamata Query2 che abbia il seguente codice
SQL:
SELECT SPESE.NomeSpesa, Query1.MaxDiDataDecorrenza, IIf(Not
IsNull([MaxDiDataDecorrenza]), [Query1].[Importo], Null) AS Importo,
Format(IIf(Not IsNull([MaxDiDataDecorrenza]), [Query1].[Tasso], Null),
"Percent") AS Tasso, Query1.IDBanca
FROM SPESE LEFT JOIN Query1 ON 
SPESE.ID
 = Query1.IDSpese;
Imposta a Query2 la proprietà Origine riga della casella di riepilogo.
A fronte dell'evento "dopo aggiornamento" della casella combinata CercaBanca
genera il seguente codice VBA:
Private Sub CercaBanca_AfterUpdate()
Me!Elenco.Requery
End Sub
Ora apri Maschera1 e seleziona dalla casella combinata CercaBanca la banca
di cui vuoi vedere le condizioni correnti: nella casella di riepilogo
dovresti vedere ciò che volevi.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 ha scritto nel messaggio
news:rtgV9.8112$ZE.2...@twister2.libero.it...

Grazie. Funziona perfettamente. Mi metterò a studiarlo ora.