Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Selezione Record in base al Valore dei Campi
mercoledì 21 maggio 2014 - 13.16
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
leonardo1968
Profilo
| Newbie
6
messaggi | Data Invio:
mer 21 mag 2014 - 13:16
Salve, sono un nuovo iscritto e mi chiamo Leonardo.
Premetto che non ho quasi nessuna conoscenza di Access.
Il mio problema è il seguente:
Devo elaborare e ripulire una grande quantità di dati, circa 700.000 record con 5 campi.
Attualmente ho sviluppato il tutto in Excel ed utilizzando una lunga serie di Macro, riesco a elaborare tutto quello di cui necessito. Il problema è la pesantezza. Essendo una grossa quantità di dati, Excel, spesso, si blocca e non va avanti.
Vorrei provare a realizzare il tutto in Access ma sono mancante delle basi, figuriamoci il resto!
In Access importo dei dati in una tabella, da un file esterno.
La tabella è composta da ID, Campo1, Campo2, Campo3, Campo4 e Campo5
Il Campo1 è un campo ORA (hh:mm:ss)
Il Campo2 è un campo DATA (dd:mm:hhhh)
Il Campo3 è un campo TESTO
Il Campo4 è un campo TESTO
Il Campo5 è un campo TESTO
dovrei creare una nuova tabella analizzando i dati della tabella importata, in questo modo:
Creare un nuova tabella che contenga i campi 1, 2, 3, 4, 5 della tabella importata facendo il seguente controllo:
Esempio:Se il Campo3="A" e il Campo4="0" e il Campo3 del record successivo ="B" e il Campo4 del record successivo ="1" o Se il Campo3="B" e il Campo4="1" e il Campo3 del record precedente ="A" e il Campo4 del record precedente ="0" o Se ....ecc....copia i campi 1, 2, 3, 4, 5 nella nuova tabella altrimenti no.
Ovviamente come detto precedentemente le variabili non sono solo 2 come nell esempio ma circa 85.
Spero di essere stato chiaro e che qualcuno di voi possa dedicarmi un po del proprio tempo per tentare di risolvere il mio problema.
Grazie in anticipo
Leonardo
Ah dimenticavo, la versione di Access che utilizzo è la 2010.
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
gio 29 mag 2014 - 18:44
>Salve, sono un nuovo iscritto e mi chiamo Leonardo.
ciao Leonardo, benvenuto su dotnethell.it!
>Premetto che non ho quasi nessuna conoscenza di Access.
Questo purtroppo non aiuta, il forum non riesce a formarti ed alcune conoscenze sono condizione necessaria per proseguire con le risposte.
>Ovviamente come detto precedentemente le variabili non sono solo 2 come nell esempio ma circa 85.
Quello che indichi sembra qualcosa che è gestibile con un programma (devi andare sui record successivi e tornare al corrente).
Ma non è per nulla semplice farlo qui. Ho paura che dovrai iniziare da solo e cercare di ricavare qualcosa studiandoti access, perchè aiutarti diventa veramente difficile così.
>Spero di essere stato chiaro e che qualcuno di voi possa dedicarmi
>un po del proprio tempo per tentare di risolvere il mio problema.
Come ti dicevo, quello che ti serve è un vero e proprio programma di trasformazione dati, e dubito che riusciremo ad arrivarci in fondo qui.
Intanto inizia a disegnarti le query che estrapolano i record su cui devi lavorare. Di più non saprei che dirti.
>Grazie in anticipo
di nulla!
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://blogs.dotnethell.it/suxstellino
http://suxstellino.wordpress.com
http://mvp.microsoft.com/profiles/Alessandro.Alpi
leonardo1968
Profilo
| Newbie
6
messaggi | Data Invio:
ven 30 mag 2014 - 10:39
Salve, allora, potrei aver trovato la solozione, appena è confermata ve la posto, nel frattempo avrei bisogno di un'altro consiglio:
ho la seguente tabella
ID ORA DATA LOOP OTL TRAM PERCORRENZA
1 5.46.10 01/03/2014 01.201.7 0 1
2 5.46.35 01/03/2014 01.001.1 1 1
3 5.46.37 01/03/2014 01.001.1 0 1
4 5.46.49 01/03/2014 01.001.3 1 1
5 5.46.51 01/03/2014 01.001.3 0 1
6 5.47.52 01/03/2014 01.003.1 1 1
7 5.47.54 01/03/2014 01.003.1 0 1
8 5.48.38 01/03/2014 01.003.3 1 1
9 5.48.39 01/03/2014 01.003.3 0 1
10 5.48.51 01/03/2014 01.004.3 1 1
dovrei mettere nel campo PERCORRENZA la differenza di orario tra i campo ORA del record 2 e il campo ORA del record 1, cioè 5.46.35 - 5.46.10 = 0.00.25
avrei trovato la seguente soluzione:
Ho costruito una query di selezione con questo codice:
SELECT SELEZIONE_LOOP_SMN.ID, SELEZIONE_LOOP_SMN.ORA, SELEZIONE_LOOP_SMN.DATA, SELEZIONE_LOOP_SMN.LOOP, SELEZIONE_LOOP_SMN.OTL, SELEZIONE_LOOP_SMN.TRAM, SELEZIONE_LOOP_SMN1.ORA, SELEZIONE_LOOP_SMN1.DATA, SELEZIONE_LOOP_SMN1.LOOP, SELEZIONE_LOOP_SMN1.OTL, SELEZIONE_LOOP_SMN1.TRAM, IIf((SELEZIONE_LOOP_SMN.ORA)>(SELEZIONE_LOOP_SMN1.ORA),([SELEZIONE_LOOP_SMN.ORA]-[SELEZIONE_LOOP_SMN1.ORA]),"") AS Risultato
FROM SELEZIONE_LOOP_SMN AS SELEZIONE_LOOP_SMN LEFT JOIN SELEZIONE_LOOP_SMN AS SELEZIONE_LOOP_SMN1 ON SELEZIONE_LOOP_SMN.ID= SELEZIONE_LOOP_SMN1.ID+1;
che mi restituisce una tabella così formata:
ID SELEZIONE_LOOP_SMN.ORA SELEZIONE_LOOP_SMN.DATA SELEZIONE_LOOP_SMN.LOOP SELEZIONE_LOOP_SMN.OTL SELEZIONE_LOOP_SMN.TRAM SELEZIONE_LOOP_SMN1.ORA SELEZIONE_LOOP_SMN1.DATA SELEZIONE_LOOP_SMN1.LOOP SELEZIONE_LOOP_SMN1.OTL SELEZIONE_LOOP_SMN1.TRAM Risultato
1 5.46.10 01/03/2014 01.201.7 0 1
2 5.46.35 01/03/2014 01.001.1 1 1 5.46.10 01/03/2014 01.201.7 0 1 25
3 5.46.37 01/03/2014 01.001.1 0 1 5.46.35 01/03/2014 01.001.1 1 1 2
4 5.46.49 01/03/2014 01.001.3 1 1 5.46.37 01/03/2014 01.001.1 0 1 12
5 5.46.51 01/03/2014 01.001.3 0 1 5.46.49 01/03/2014 01.001.3 1 1 2
6 5.47.52 01/03/2014 01.003.1 1 1 5.46.51 01/03/2014 01.001.3 0 1 101
7 5.47.54 01/03/2014 01.003.1 0 1 5.47.52 01/03/2014 01.003.1 1 1 2
8 5.48.38 01/03/2014 01.003.3 1 1 5.47.54 01/03/2014 01.003.1 0 1 84
9 5.48.39 01/03/2014 01.003.3 0 1 5.48.38 01/03/2014 01.003.3 1 1 1
10 5.48.51 01/03/2014 01.004.3 1 1 5.48.39 01/03/2014 01.003.3 0 1 12
il problema sta nella colonna risultato perchè, mentre i record da 1 a 5 potrebbero andare bene perchè esprimono la differenza in secondi in secondi, il record 6 (101) non esprime i secondi, che dovrebbero essere 61. Come posso fare per risolvere questo problema? e come posso fare per rendere il campo risultato nel formato ora estesa (hh.mm.ss)?
Grazie
leonardo
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mer 4 giu 2014 - 14:48
>Salve, allora, potrei aver trovato la solozione, appena è confermata
>ve la posto, nel frattempo avrei bisogno di un'altro consiglio:
Ciao,
ti chiedo la cortesia di passare il CREATE TABLE e le insert di esempio, affinchè io possa lavorare sugli oggetti passati.
Grazie
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://blogs.dotnethell.it/suxstellino
http://suxstellino.wordpress.com
http://mvp.microsoft.com/profiles/Alessandro.Alpi
leonardo1968
Profilo
| Newbie
6
messaggi | Data Invio:
gio 5 giu 2014 - 09:36
Avrei risolto importando il campo "ORA" come numero...adesso funziona.
Grazie
Leonardo
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
ven 6 giu 2014 - 12:26
>Avrei risolto importando il campo "ORA" come numero...adesso funziona.
perfetto, scusa la latenza
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://blogs.dotnethell.it/suxstellino
http://suxstellino.wordpress.com
http://mvp.microsoft.com/profiles/Alessandro.Alpi
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !