Newsgroup: it.comp.appl.access
Titolo: Valore massimo di una riga di un record

Ciao a tutti,
rieccomi qui per un quesito.
Vorrei trovare il valore Data più alto di una riga (non di una colonna).
Mi spiego meglio... ho una query che mi restituisce:
IDCliente = 7
Campo1 (Formato data... può essere anche di valore Null) = Is Null
Campo2 (Formato data... può essere anche di valore Null) = 20/01/2004
Campo3 (Formato data... può essere anche di valore Null) = 15/03/2004
Campo4 (Formato data... può essere anche di valore Null) = Is Null
Campo Risultato = (Se tutti nulli Date() )15/03/2004
Ho provato con gli IF ma mi sono intrippato via... magari esiste anche
una funzione che fa questo.
Ho provato MAX.VALORI ma la va no.
Ciao Cesco

 Ciao Cesco
Ma hai provato con gli "IF" o con gli "IIF"??? :-)
-- 
Pablitomf (Maurizio Facciuti)
“Quando non ti eserciti ricorda che qualcuno in qualche posto si sta
allenando e, quando lo incontrerai, ti batterà”.
Ed Macauley 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 wrote in message
news:414FEB25...@company.com

Io farei un ciclo Dinamico che all'apparenza è scomodo ma 
ti dà flessibilità di utilizzo, in questo caso passi
alla Function l'IdCliente e lui restituisce il MaxData
dei Campi data previsti nel Record.
La puoi usare anche in una Query se la dichiari pubblica 
e la ottimizzi.
P.S. non l'ho provata c'è sicuramente qualche errore di 
sintassi o di riferimento, purtroppo non ho nulla per provarla
da dove sto postando ora....., è solo per darti idea di cosa
intendo.......!
Private Function retMaxData(idItem as long) as date 
'// Do per sontato tu possa cilcare il RecordsetClone
'// della Form in cui stai lavorando
Dim MaxData as Date
Dim fld as DAO.Field
Dim rs as DAO.Recordset
Set rs=me.RecordsClone
rs.findfirst "[IdCliente]=" & idItem
for each fld in rs.Fields
   if fld.type=acDate then
      if fld>MaxData then MaxData=fld
   end if
Next
retMaxData=MaxData
End Function
Ciao.
@Alex.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG


Si tratta di IFF... ma come ti dicevo mi sono "paradossato".


Alessandro Baraldi wrote:

Ho visto che citavi una form... ma mi dice che posso usarla anche in una
query... ora provo e spero possa fare al caso mio.
Ciao Cesco


 
ATTENZIONE che per usarla in una Query devi modificarla.
Non sarà più da usare un RecordsetClone, ma dovrai aprire
un Recordset vero e proprio, e ottimizzando non conviene
riaprirlo tutte le volte se la Query è una Select lo farebbe
quindi varrebbe la pena usare un tipo Public a livello
di Modulo e verificare che sia caricato prima di caricarne un'altro.
Insomma ci devi mettere mano in modo deciso.
Ciao.
@Alex.


Alessandro Baraldi wrote:

Ciao Alex...
ora provo a postare la SQL con i campi precisi:
SELECT clienti.IDClienti, clienti.Data_Ins AS Data_Inserimento,
Last(ordini.Data_O)
AS Ultimo_Ordine, Last(dettagli_ordine.Dal) AS Ultima_prog,
clienti.Data_proroga, clienti.Data_scadenza
FROM (ordini LEFT JOIN dettagli_ordine ON ordini.IDOrdini =
dettagli_ordine.IDOrdini)
RIGHT JOIN clienti ON ordini.IDClienti = clienti.IDClienti
GROUP BY clienti.IDClienti, clienti.Data_Ins, clienti.Data_proroga,
clienti.Data_scadenza
ORDER BY clienti.IDClienti, Last(ordini.Data_O), Last(dettagli_ordine.Dal);
Risultato una query:
IDClienti
Data_Inserimento (formato data)
Ultimo_Ordine (formato data)
Ultima_prog (formato data)
Data_proroga (formato data)
Data_scadenza (formato data) **** Campo da impostare... lo posso fare anche in
un secondo momento non è un problema, il mio dilemma e tirar fuori una data
che sia la più alta dei campi precedenti.
Il fine è quello di portare il valore di data scadenza al valore più alto
trovato nei campi precedenti in formato data, e nel caso in cui siano tutti
nulli, mettere semplicemente la data attuale.
Sto ancora provando la tua funzione ma al momento non riesco a tirar fuori
niente.
Forse con questi dati sono stato più preciso
Ciao e Grazie
Cesco

Alessandro Baraldi wrote:

Ok Alex... ci provo, anche se ho qualche difficoltà a distinguere le due cose
:-(
ma sono temerario... strano questa proplematica non sia mai statà affrontata.
Ciao Cesco