Newsgroup: it.comp.appl.access
Titolo: la data più piccola

Salve a tutto il newsgroup.
Ho una tabella del tipo
ID  Data1  Data2  ... Data10
Vorrei avere per ogni ID la data minima.
Cosa importante: non tutti gli ID hanno tutte le date.
Per ora ho risolto con una serie di confronti a due del tipo:
IIf([Data1] is not null; (IIf [Data1]<[Data2];[Data1];[Data2]);[Data2])
e cosě via per tutte le date: perň. in questo modo, devo fare 9 confronti!
Ringrazio anticipatamente per la risposta

 Ringrazio anticipatamente per la risposta
Premetto che hai impostato la tabella nel modo errato.
Solitamente questo impone l'utilizzo di 2 Tabelle in Relazione 
UNO---Molti proprio per come sono le regole di realizzazione
e ottimizzazione dei Database.
Poichè non sò a che punto sei, hai 2 soluzioni:
1)Rivedere come ti ho detto la struttura e quindi risulterà
  molto agevole l'utilizzo di DMIN(........)
2)Ti tieni tutto com'è, intendo tutto anche il modo che hai usato
  per ricavare il Minimo.
Se non ti comporta un grosso carico di lavoro ritengo, per esperienza,
che ti converrebbe ristrutturare la gestione Tabella.
@Alex.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ha scritto nel messaggio
news:bactqe$q67$1...@news.unina.it...

In che contesto stai operando?
Una maschera, una query o cosa?
Potresti crearti un ciclo che "spazzola" tutti i campi/controlli e che ti
memorizza in un controllo o campo calcolato il valore della data piů
piccola.
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 piccola.
Il mio fine ultimo č di ottenere una nuova tabella del tipo:
ID DataMinima
da sottoporre ad un programma di statistica (SPlus2000)

 che ti converrebbe ristrutturare la gestione Tabella.
Ti ringrazio, ma la tabella in questione contiene già 1000 record.
Mi sa che diventa un pò un casino (questo è il guai di lavorare su database
fatti da altri).

 ha scritto nel messaggio
news:bacv5p$rk$1...@news.unina.it...

Ed allora devi crearti una query di creazione tabella dove il valore del
campo DataMinima lo ottieni richiamando una tua funzione che, come ti dicevo
nel mio messaggio precedente, con un ciclo "spazzola" i dieci campi e
determina il valore della data piů bassa.


 determina il valore della data più bassa.
Come la faccio questa "funzione"?
E' un qualcosa che esiste già, oppure, come la devo impostare?

 ha scritto nel messaggio
news:bad9p2$38f$1...@news.unina.it...

Per fare quello che ti serve non esiste una funzione intrinseca di Access,
ma devi crearti una funzione ad hoc.
Se i dati sono contenuti in una tabella chiamata Tabella1 che abbia la
seguente struttura:
ID           Contatore e chiave primaria
Data1      Data/ora
Data2      Data/ora
Data3      Data/ora
Data4      Data/ora
Data5      Data/ora
Data6      Data/ora
Data7      Data/ora
Data8      Data/ora
Data9      Data/ora
Data10    Data/ora
Se la tabella che devi creare si chiama Tabella2 e contiene i campi ID e
DataMinima (di tipo Data/ora).
In un modulo del tuo database memorizza la funzione che ha il seguente
codice VBA:
Function DataMinima(PK As Long) As Date
Dim rst As DAO.Recordset
Dim Conta As Integer
Dim MiaData As Date
Set rst = CurrentDb.OpenRecordset("Tabella1", dbOpenDynaset)
rst.FindFirst "ID=" & PK
MiaData = rst("Data" & Trim(1))
For Conta = 1 To 10
    If Not IsNull(rst("Data" & Trim(Conta))) Then
        If rst("Data" & Trim(Conta)) < MiaData Then
            MiaData = rst("Data" & Trim(Conta))
        End If
    End If
Next Conta
DataMinima = MiaData
Set rst = Nothing
End Function
Creati quindi una query di creazione tabella che abbia il seguente codice
SQL:
SELECT Tabella1.ID, DataMinima([ID]) AS DataMinima INTO Tabella2
FROM Tabella1;
Come avrai notato la funzione di cui sopra fa riferimento alla libreria
Microsoft DAO quindi, se usi una versione di Access successiva ad Access 97,
devi aggiungere ai riferimenti del tuo database tale libreria.


 ha scritto nel messaggio
news:QPqya.17347$Ny5.5...@twister2.libero.it...

Sei stato davvero gentilissimo, grazie di tutto :o)

 > >
[...]

Ho provato la tua soluzione, ma ho avuto un problema:
mi da "Errore di run-time '94" - "utilizzo non valido di null" e nel debug
si posiziona alla riga
MiaData = rst("Data" & Trim(1))
Ho sbagliato qualcosa io?
Grazie per i tuoi preziosissimi consigli e scusami se ti faccio perdere
tempo.

 ha scritto nel messaggio
news:bag1g2$nvh$1...@news.unina.it...

No è un mio errore.
Pensavo erroneamente che in ogni record Data1 contenesse sempre una data
valida e non potesse mai contenere il valore Null. Se però anche Data1 può
assumere il valore Null, sostituisci la riga di codice VBA:
MiaData = rst("Data" & Trim(1))
con questa riga di codice VBA:
MiaData = #12/31/2100#
sperando che nella tabella non esistano date maggiori del 31 dicembre 2100.
:-)


 :-)
E' andato una bomba!
Grazie veramente :o)
Diego