Newsgroup: it.comp.appl.access
Titolo: Accodamento o aggiornamento, come evitare doppioni dello stesso dato ?

Mensilmente devo popolare una tabella (letture dei consumi) dove ho strutturato ogni record con i seguenti campi:
 
 - codice univoco presa
 - data lettura
 - valore lettura
 
avrei bisogno che i dati che vado a inserire in tabella non vengano raddoppiati, cioè che ciascuna lettura delllo stesso codice effettuata nella stessa data venga (sovrascritta ?) e considerata una sola volta.
 
Preciso che la tabella parte da zero, cioè è attualmente vuota.
 
Sono in difficoltà con il tipo di query da utilizzare.
Ringrazio chiunque potrà darmi un aiuto.
grazie

 grazie
 
Dovresti togliere il "codice univoco presa" e mettere
una PM (Primary Key) sui due campi [Presa] e [Lettura].
 
Da dove prendi i dati che servono per
l'aggiornamento/accodamento? da un'altra tabella
o sono inserimenti che fai da una Form?
 
Bruno

Ciao Bruno, 
Grazie per l'aiuto, oggi non ho lavorato perché a Torino e Genove festeggiamo il Santo patrono e quindi scusami ma leggo solo ora il tuo post.
Spiego meglio il problema, e ti chiedo un ulteriore aiuto.
Ho circa 2000 edifici suddivisi in quattro zone per le quali mensilmente mi trasmettono quattro file Excel.
Parliamo di consumi elettrici. Ciascun edificio ha un suo codice presa, quindi ciascuna riga di Excel è costituita da codice presa, data lettura e valore lettura.
Per evitare doppi inserimenti ho anticipato il tuo suggerimento creando un quarto campo, univoco, formato da codice presa&data, quindi se mi inseriscono due volte lo stesso dato la query di caricamento me lo sputa.
 
Quello che vorrei fare adesso è fornire al letturista il dato, per ciascuna presa, relativo all'ultima lettura, in modo tale da far emergere immediatamente valori di lettura poco congrui.
 
Mi servirebbe quindi una query che (nella mia tabella dei consumiENE) per ciascun CodicePresa mi restituisca il ValoreLettura con la DataLettura più recente.
In pratica avendo i campi:
- Codice presa
- DataLettura
- ValoreLettura
La query dovrebbe restituirmi la lettura più recente.
 
Grazie infinite e scusami se sono approfitto della tua pazienza, ciao.

 La query dovrebbe restituirmi la lettura piï¿œ recente.
Dovrei avere la tabella sulla quale costruire la query.
Puoi inviarmela?
 
Bruno

ciao Bruno,
grazie mille per l'aiuto e per la pazienza.
Ho due problemi, il primo riguarda il formato in cui salvare la tabella, la metto in un db vuoto?
Secondo, scusami ma non l'ho mai fatto, la posso inviare al tuo @ privato ? o esiste un altro modo ?
grazie ancora.
 
Maurizio

ignazio.pilone wrote on 25-06-14 :

Crea un db con quell'unica tabella.
Puoi inviarlo via uno dei tanti programmi di file hosting,
io uso Dropbox; oppure puoi inviarlo a me direttamente
via brunocamCHIOCCIOLAliberoPUNTOit.
 
Bruno

Ciao Bruno,
trasmesso via mail, grazie.
 

 trasmesso via mail, grazie.
 
La tabella dei consunmiENE coi campi CodicePresa,
DataLettura e ValoreLettura dov'ï¿œ finita?
 
Bruno

Ciao Bruno, 
Scusami ma ho fatto un po' di casino. La tabella è quella che si chiama "tbl_DATIENE" dove:
- CodImmobile è il codice della presa
- Data1 la data di lettura.
- I tre campi EnergiaAttiva sono i tre valori della lettura.
- Il campo combo1, formato da CodImmobile &Data1 è quello che volevo usare per rendere univoci i dati ma non ho capito come inserire gli indici univoci, per entrambi in abbinata, in tabella.
 
Devo ottenere per ciascun CodImmobile il record che contiene i tre valori di lettura con la data1 più recente.
 
Grazie ancora.
 
Maurizio

Sono riuscito a furia di provare e googlare a creare una query di definizione dati che ho applicato alla tabella per rendere univoci i dati.
il codice è questo:
 
ALTER TABLE tbl_DATIENE ADD CONSTRAINT NoDupes UNIQUE (CodImmobile, Data1)
 
Ora mi servirebbe "solo" più una query che per ciascun CodImmobile presente (nella tabella univoca) mi restituisse solo quello con data più recente.
 
grazie infinite.

 (nella tabella univoca) mi restituisse solo quello con data piï¿œ recente.
 
Eccolo qua.
https://www.dropbox.com/s/g5ifa3ss4a9aifv/FIDBEK%20-%20Copia.accdb
 
 
Ho modificato la tabella eliminando il campo [combo1] e assegnando
una PrimaryKey ai campi [Codimmobile] e [Data1] presi congiuntamente.
 
La query richesta ï¿œ la Query2.
Ho solo verificato che funzionasse a dovere per il Codimmobile
NOL43900; per gli altri controlla tu.
 
Bruno

Bruno,
funziona perfettamente, ancora grazie mille.
Proseguo nel mio auto apprendimento, senza approfittare degli aiuti ma ancora una volta consapevole che questo forum è frequentato da persone eccezionali.
grazie.
 
Maurizio
 

Bruno,
purtroppo a discapito di quanto detto sopra (solo il funziona perfettamente...) i record risultanti in alcuni casi sono doppi.
Allego il codice della query. 
grazie infinite.
 
SELECT tbl_DATIENE.CodImmobile, Last(tbl_DATIENE.Data1) AS LastOfData1, tbl_DATIENE.[Energia attiva Fascia 1], tbl_DATIENE.[Energia attiva Fascia 2], tbl_DATIENE.[Energia attiva Fascia 3]
FROM tbl_DATIENE
GROUP BY tbl_DATIENE.CodImmobile, tbl_DATIENE.[Energia attiva Fascia 1], tbl_DATIENE.[Energia attiva Fascia 2], tbl_DATIENE.[Energia attiva Fascia 3]
HAVING (((Last(tbl_DATIENE.Data1)) In (SELECT Last(tbl_DATIENE.Data1) AS LastOfData1
FROM tbl_DATIENE
GROUP BY tbl_DATIENE.CodImmobile
ORDER BY tbl_DATIENE.CodImmobile;)))
ORDER BY tbl_DATIENE.CodImmobile;
 
 

ignazio.pilone submitted this idea :

Vatti a riprendere il file aggiornato del quale
ti ho giï¿œ inviato il link.
Quindi:
1 - cancella la tabella t_DatiEne ed esegui nell'ordine
    le Query1 e Query2
oppure:
2 - apri Form1 ed esegui Command0
 
Puï¿œ darsi possa farsi tutto con una singola action query...
io mi sono spazientito prima di riuscirci.
 
Bruno