Access/sql aiuto gestione date

venerdì 10 agosto 2012 - 11.44

exzR Profilo | Newbie

ciao a tutti, sono nuovo del forum e spero di poter crescere insieme a voi nel mondo della programmazione :D.
vi pongo il mio problema in access:
Sto creando un programma per gestire le estrazioni e sistemi del lotto, ho gia fatto le query per il controllo dei numeri in determinate estrazioni e ruote.
Ho una tabella collegata a un file di testo che aggiorno sostituendo il file ad ogni estrazione per mantenere aggiornate le estrazioni. i campi sono questi:

Data tipo data
Ruota tipo stringa
Primo tipo intero
Secondo tipo intero
Terzo tipo intero
Quarto tipo intero
Quinto tipo intero.

esempio della tabella:
2012/08/07 BA 32 76 55 57 41
2012/08/07 CA 33 72 27 68 88
2012/08/07 FI 75 34 32 74 86
2012/08/07 GE 10 25 22 87 21
2012/08/07 MI 24 11 12 33 84
2012/08/07 NA 48 63 86 80 3
2012/08/07 PA 37 41 48 60 19
2012/08/07 RM 33 39 62 16 27
2012/08/07 TO 30 51 15 48 19
2012/08/07 VE 65 8 82 52 34
2012/08/07 RN 18 63 23 10 85
2012/08/04 BA 42 49 90 8 21
2012/08/04 CA 78 83 75 5 72
2012/08/04 FI 10 24 73 18 80
2012/08/04 GE 42 39 70 5 22
2012/08/04 MI 52 25 85 70 82
2012/08/04 NA 28 18 83 38 63
2012/08/04 PA 34 15 49 53 12
2012/08/04 RM 48 18 21 87 52
2012/08/04 TO 22 85 81 43 35
2012/08/04 VE 31 23 62 73 27
2012/08/04 RN 68 81 12 76 32
2012/08/02 BA 5 66 14 49 78
2012/08/02 CA 64 56 73 67 32
2012/08/02 FI 4 60 77 38 40
2012/08/02 GE 23 70 15 71 22
2012/08/02 MI 86 90 80 48 41
2012/08/02 NA 50 70 13 16 78
2012/08/02 PA 55 76 31 16 88
2012/08/02 RM 21 78 72 59 57
2012/08/02 TO 16 2 63 84 17
2012/08/02 VE 80 4 36 61 44
2012/08/02 RN 16 4 2 54 69
2012/07/31 BA 70 77 2 1 43
2012/07/31 CA 30 33 89 67 54
2012/07/31 FI 36 59 78 37 26
2012/07/31 GE 29 81 10 13 33
2012/07/31 MI 75 43 87 45 83
2012/07/31 NA 9 62 22 1 75
2012/07/31 PA 3 5 85 6 89
2012/07/31 RM 88 64 45 40 5
2012/07/31 TO 62 40 68 75 8
2012/07/31 VE 70 69 77 22 10
2012/07/31 RN 64 73 58 37 23

Nonostante la data sia in formato AMG, access la tramuta in standard cioè GMA. quello che vorrei fare è avere la possibilità di una ricerca retroattiva per determinate estrazioni senza sapere la data ma solo quante. mi spiego meglio, in un sistema mi dice controllare che nelle 3 estrazioni retroattive non sia uscito per esempio il numero 15. per ora mi funziona solo se io a mano cerco la data relativa alle 3 estrazioni retroattive (nell'esempio 2012/07/31) e lo trascrivo a mano nella mia form come data finale allora funziona. vorrei sapere se qualcuno ha un'idea di come fare per far riconoscere automaticamente quanto sono 3 estrazioni retroattive. nel mio caso prendendo per esempio il giorno 2012/08/07 dovrebbe calcolare da solo che 3 estrazioni retroattive la data è 2012/07/31. ricordo che se non ci fossero intoppi le estrazioni del lotto sono il martedi,giovedi e sabato.
Per il resto ho già fatto tutto mi manca solo questa cosa :(

Spero di essere stato il piu' chiaro possibile e ringrazio anticipatamente tutti :D

ps: se sono necessari chiarimenti sono a vostra disposizione :D

renarig Profilo | Expert

>i campi sono questi:
>
>Data tipo data
>Ruota tipo stringa
>Primo tipo intero
>Secondo tipo intero
>Terzo tipo intero
>Quarto tipo intero
>Quinto tipo intero.
>
>mi spiego meglio, in un sistema mi dice
>controllare che nelle 3 estrazioni retroattive non sia uscito
>per esempio il numero 15.
>
>
> ricordo che se non ci fossero intoppi le estrazioni
>del lotto sono il martedi,giovedi e sabato.
>Per il resto ho già fatto tutto mi manca solo questa cosa
>


Direi che non te la cavi cercandi i martedi, giovedi e sabati


Secondo me hai 2 possibilita:

____ 1° Piu Semplice ___________________
___ Ordini decrescente per data RAGGRUPPATA
___ e prendi le prime 3 ( SELECT TOP 3 eccetera )

Il problema e che cosi puoi prendere solo le ultime 3 date
ma mi sembra che vuoi anche fare delle ricerche
storiche con 3 date contigue

____ 2° Piu Complessa ___________________

___ Ordini decrescente per data
___ Aggiungi un contatore delle date che parte da
1 e sale col diminuire della data
___ per cui potrai selezionare 1 2 3
oppure 7 8 9


Facci sapere



exzR Profilo | Newbie

il problema è per l aggiornamento delle estrazioni, nel mio caso ad ogni nuova estrazione scarico dal sito del lotto il file così fatto e sovrascrivo il vecchio in modo da averle aggiornate senza problemi e senza ogni volta inserirle a mano.... c e non so la possibilità di fare una routine che legga il file di testo e che mi crei da solo la tabella aggiungendo un campo contatore o qualcosa di simile? il problema e che fatto così dovrei mettere un contatore per ogni data diversa cioè ogni dieci righe

che dici?
 

renarig Profilo | Expert

Non ho mai lavorato coi file di testo,
Ma alla fine sono una fonte di dati esterna a
cui colleghi una tabella Giusto ?


Se la tua tabella si chiama "Tabx"
e se i campi si chiamano come dici nel tuo primo post

Prova a fare una Vista ( Query ) con questo testo:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Forse sara da perfezionare ma
penso che va quasi bene


Facci sapere

exzR Profilo | Newbie

domani proverò grazie, sostituisco a tabx il nome della mia tabella e taby sarebbe una nuova tabella? perché senno non conviene crearne una nuova aggiungendo un contatore ogni volta che la data successiva e diversa da quella precedente visto che la tipologia del file impone la data ripetuta per ogni ruota?

renarig Profilo | Expert

>sostituisco a tabx il nome della mia tabella
Si, Giusto


>e taby sarebbe una nuova tabella?
No TabY non è una vera e propria tabella salvata

Bensi ( Come del resto TabZ e G01 ) è una tabella/vista
virtuale che esiste solo all'interno di quella Vista

Oppure considerala un "soprannome" che diamo a Tabx
( o a una sua parte )


>perché senno non conviene crearne una nuova
>aggiungendo un contatore ogni volta che la data successiva e diversa
>da quella precedente visto che la tipologia del file impone
>la data ripetuta per ogni ruota?
Esatto, è quello a cui vogliamo arrivare
con una vista



Facci sapere

exzR Profilo | Newbie

scusate questo post e sbagliato

exzR Profilo | Newbie

ho scoperto che se aggiungo un campo contatore risolvo il problema, l unica cosa è che mi mette i valori al contrario di come li vorrei cioè la data più recente ha il valore esempio 1749 quando invece avrei bisogno che fosse la 1. c e un modo tipo di invertire tutti i dati della tabella o bypassare questo problema?

ps: riesco a farlo a mano ma nel caso devo trovare il modo di farlo in vb e magari aggiungersi una routine per sistemare i numeri

renarig Profilo | Expert

>ho scoperto che se aggiungo un campo contatore risolvo il problema,
Dove lo metteresti il contatore
__ Nel file .txt di dati ( direi di No )
__ In una Query che prende il file .txt come origine
__ In una tabella



>l unica cosa è che mi mette i valori al contrario di come li
>vorrei cioè la data più recente ha il valore esempio 1749 quando
>invece avrei bisogno che fosse la 1. c e un modo tipo di invertire
>tutti i dati della tabella o bypassare questo problema?
Non ho ben presente cosa stai facendo ma potresti fare:
Contatore * -1
DMax(Contatore) - Contatore

Ma se il contatore lo metti in DESC dall'inizio allora ti viene gia giusto


Saluti

exzR Profilo | Newbie

nella tabella creata caricando il txt. pensavo con una routine ogni volta che scarico il nuovo txt mi ricrea la tabella aggiungendo il contatore come campo. quindi dovrei rifare un altra routine per il contatore? perché nel momento che creo il campo mi mette i valori in automatico solo che li vorrei in modo che la data attuale che e l ultimo record abbia il valore 1 e non il 1576 esempio

renarig Profilo | Expert

>solo che li vorrei in modo che la data
>attuale che e l ultimo record abbia il valore 1 e non il 1576


Questo significa che ogni volta devi "stravolgere" il campo contatore
in modo che l'ultimo record aggiunto abbia sempre valore 1
_______________________________________________________



è tecnicamente fattibile ( tutto si puo fare ) ma è contrario
ai principi della buona progettazione dei DB.

______

Dovresti:
__svuotare il campo contatore
__ ordinare DESC x data
__ Cominciare dall'alto verso il basso a scrivere 1 2 3 ecc
__ tenendo conto che le date possono essere uguali


Oppure:
__ Fare una Query simile a quella che ti avevo proposto sopra
__ prelevare da li il campo contatore
__ ricopiartelo in blocco in tabella


___________________________________________________________


è difficile darti una risposta dettagliata perche ci sono molte variabili
che non ci hai detto


I file di testo sono 3 alla stettimana ?

Ogni file di testo contiene solo i dati di un giorno oppure
contiene anche dati pregressi ?

Magari questi dati pregressi sono gia nella tua tabella salvata nel DB ?

Come fai a trasferire i dati dal file di testo alla tabella ?

Perche vuoi il contatore he abbia il numero 1 alla data + recente ?

Potresti avere giovamento ( in funzione di quello che vuoi fare )
da un contatore che abbia
il valore -1 alla data piu vecchia
e il valore -1576 alla data piu recente
e continua a decrementarsi di 1 ad ogni nuovo record ??


Magari allegaci gli ultimi 2 o 3 file di testo che proviamo a pensare a una
procedura che importa direttamente in tabella i record
"completi" di contatore




Facci sapere
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 !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5