PDA

View Full Version : [VB6 & ACCESS] Problema con le date


roby1483
10-10-2004, 17:26
Salve a tutti,
ho un "piccolo" problema con le date e non riesco a capire perchè Access si comporti così. So che Access non è il massimo ma per quel che deve fare questo programma va benissimo o almeno andrebbe benissimo se non mi facesse casino con le date.
Vengo subito al dunque senza sprecare altro tempo (mio e vostro).
Sto facendo un'applicanzioncina con un'agenda interna e tale agenda deve memorizzare poca roba tra la quale c'è la data (altrimenti che agenda sarebbe?). Nessun problema quando inserisco date con il giorno maggiore di 12, ma quando inserisco ad esempio 11/10/2004 mi scambia il giorno con il mese così che la data diventa 10/11/2004. Una cosa simile mi era capitata una volta con ASP perchè il server dove girava ISS era in inglese e avevo risolto impostando l'LCID ma in VB come posso fare dato che sia Access che il sistema operativo sono in italiano?
La cosa strana è che se inserisco ad esempio 25/12/2004 sul DB lo memorizza esattamente come 25/12/2004 e se faccio una query con tale valore mi trova quel che ho inserito, se inserisco 11/10/2004 sul DB sembra che lo memorizzi correttamente perchè lo visualizza esattamente 11/10/2004 ma quel record me lo mostra solo se ricerco con 10/11/2004.

Vi prego aiutatemi :cry:
:D

matpez
10-10-2004, 23:34
Si quella è una fregatura, per ovviare a questo problema ti conviene inserire le date nn fra le # # ma come se fossi una stringa metti le ' ', naturalmente nn devi toccare il campo date nel database!!

Unica fregatura che nella where della tua ricerca chissà per quela motivo access vuole la dicitura inglese della data, per cui dopo avere fatto l'inserimento come riportato sompra vai a mettere la data nella where fra i normali # #, ma con la dicitura inglese... non esiste una funzione per farlo, per cui ti conviene creartene una tu!

Io avevo risolto così il tuo stesso problema :)

Se qlc nn ti è chiaro, mi spiego meglio :p

Brigante
11-10-2004, 15:51
Originariamente inviato da roby1483
Salve a tutti,
ho un "piccolo" problema con le date e non riesco a capire perchè Access si comporti così. So che Access non è il massimo ma per quel che deve fare questo programma va benissimo o almeno andrebbe benissimo se non mi facesse casino con le date.
Vengo subito al dunque senza sprecare altro tempo (mio e vostro).
Sto facendo un'applicanzioncina con un'agenda interna e tale agenda deve memorizzare poca roba tra la quale c'è la data (altrimenti che agenda sarebbe?). Nessun problema quando inserisco date con il giorno maggiore di 12, ma quando inserisco ad esempio 11/10/2004 mi scambia il giorno con il mese così che la data diventa 10/11/2004. Una cosa simile mi era capitata una volta con ASP perchè il server dove girava ISS era in inglese e avevo risolto impostando l'LCID ma in VB come posso fare dato che sia Access che il sistema operativo sono in italiano?
La cosa strana è che se inserisco ad esempio 25/12/2004 sul DB lo memorizza esattamente come 25/12/2004 e se faccio una query con tale valore mi trova quel che ho inserito, se inserisco 11/10/2004 sul DB sembra che lo memorizzi correttamente perchè lo visualizza esattamente 11/10/2004 ma quel record me lo mostra solo se ricerco con 10/11/2004.

Vi prego aiutatemi :cry:
:D

Non è vero che Access "non è il massimo", Access è un ottimo database per applicazioni medio-piccole, e comunque è in grado di gestire file di database fino a 2GB. Per quanto riguarda il tuo problema quando utilizzi l'SQL per le date devi impostare il formato inglese anche se la lingua di Access è diversa dall'inglese.

Qui: http://support.microsoft.com/default.aspx?scid=kb;it;142009

;)

roby1483
11-10-2004, 18:36
Quindi basta che mi crei una funzione che prende la data da inserire e la metta in formato inglese ed un'altra che prende la data restituita dalle query e la metta in formato italiano?
Ma allora perchè se metto 25/10/2004 me lo inserisce come 25/10/2004 e non come 10/25/2004?

matpez
11-10-2004, 23:07
Mi ripeto...

Le date le inserisci tra gli apici, così sembra una stringa e nn fa casino, quando le richiamo sono nel formato come tu lo hai inserito!!

Solo nella ricerca, cioè nella WHERE della tua query è bbligo fare così: "WHERE Data=#" & DataConvert(Variabile) & "#"

roby1483
12-10-2004, 19:34
Scusa avevo visto solamente la risposta di Brigante.
C'è una cosa che non ho capito:
nel DB il campo relativo alla data lo devo mettere data o testo? Se lo metto di tipo data lo accetta un inserimento con gli apici come se fosse una stringa?

matpez
13-10-2004, 00:12
Si, il campo deve essere di data e si gli accetta (solo in inserimento) con gli apici! :p

roby1483
13-10-2004, 20:19
Ok, grazie mile adesso provo.
;)

rollopack
14-10-2004, 14:47
Personalmente memorizzo, attraverso una funzione, le date nel formato aaaammgg (es: 20041014), in questo modo sono sicuro che non ci siano problemi nel salvataggio, lettura e ordinamento dei dati.

Forse subito non é comodissimo (devi fare la funzione di salvataggio e di lettura) ma poi sei tranquillo

roby1483
14-10-2004, 14:49
Grazie per la risposta ma mi trovo bene anche con la soluzione di matpez.
Non è che per caso sai aiutarmi nell'altra discussione che ho aperto pochi minuti fa? :D
Grazie ;) .

matpez
15-10-2004, 00:24
prego :p