Newsgroup: it.comp.appl.access
Titolo: X (Roberto da casa) o per chi sa rispondere . Istruzione SQL

Ciao Roberto,
scusa se rompo, ma stavo riguardando il codice SQL che mi hai postato per
quel problema dei contratti di assistenza e la loro scadenza.
Ti riposto qui il codice :
********inizio**********
SELECT contr.*, IIf([TipoContratto]=1,DSum(" ( OraFine - Orainit ) * 24
","Registrazioni Interventi","IDCliente=" & [IDCliente] & " And
DataIntervento>=#" & Format([DataStipula],"dd/mm/yyyy") & "# And
Datainit<=#" & Format([DataScadenza],"dd/mm/yyyy") & "#"),0) AS
OreIntervento
FROM contr
WHERE (((IIf([DataScadenza]<Date(),1,IIf((IIf([TipoContratto]=1,DSum("(
OraFine - Orainit ) * 24 ","Registrazioni Interventi","IDCliente=" &
[IDCliente] & " And
Datainit>=#" & Format([DataStipula],"dd/mm/yyyy") & "# And Datainit<=#" &
Format([DataScadenza],"dd/mm/yyyy") & "#"),0))>[OreForfait],1,0)))=1));
******fine**************
Rileggendola riesco a capire questo (interpretando le istruzioni SQL) :
SELEZIONO dalla tabella CONTR tutti i campi, ....fin qui tutto
bene..........
ora leggendo la guida di access capisco che IIF restituisce una delle due
parti dell'espressione
con sintassi come segue iif(expr,truepart,falsepart).
Non riesco a capire quali sono le due espressioni visto che stando dalla
guida di access dovrebbero essere separate da " , "
Provandoci lo stesso comunque interpreto in questo modo ....  se  (--->
espressione ) TIPOCONTRATTO=1  ,
(----> espressione restituita se vero)  SOMMA DI AGREGAZIONE per  (ORAFINE -
ORAINIZIO --> ricava le ore eseguite ) *  24 (perchè devo moltiplicare per
24 ? ) tutti gli INTERVENTI  della tabella REGISTRAZIONI INTERVENTI ,
(-->espressione restituita se falso, ma mi sembra strano forse sbaglio !!)
solo gli INTERVENTI DOVE IDCLIENTE della TABELLA è uguale a IDCLIENTE
(presumo della maschera contratti) E DATAINTERVENTO >=# (che significa # ??)
poi Assegno il formato per il campo DATASTIPULA e DATASCADENZA ,  0 (perchè
0 ), COME OREINTERVENTO (cioè ? deve assegnare a ore intervento il risultato
di cosa ?)
........DA CONTR
DOVE  (--->espressione) DATASCADENZA minore DATA ATTUALE, 1  (1 è il valore
restituito se se vero ??),    (valore restituito se false uguale al
risultato di un'altra sessione IIF che deve restituire un risultato come
quello della prima riga) E  .......insomma non capisco niente,mi pare mi
manchino delle conoscenze pur sapendo i termini.
Saresti così gentil e da potermi spiegare a parole l'SQL ?
Le cose che principalmente non capisco sono :
1.)  Il fatto di dover moltiplicare per 24 il valore delle ore risultanti
da orafine - orainit
2.) l'uso del carattere # perl a formula Dataintervento > = #
3.) il fatto che non venga detto il formato per il calcolo sulle ore ma solo
quello sulle date.
4.) .....perfavore quando hai tempo se mi spieghi un po' l'istruzione SQL
perchè capisco dei pezzi ma altri no e quindi non capendo all'inizio alcune
cose OVVIAMENTE non capisco la fine.
Scusa ancora se rompo.
Se qualcuno oltre a roberto mi può spiegare ne sarò grato.
Ciao e grazie ancora.
Con simpatia e molta confusione.
Marco.

 Marco.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------