Newsgroup: it.comp.www.server
Titolo: [semi OT, boh] formato date db italiano, server inglese win2k

ciao a tutti,
ho un webserver con win2k server in inglese, dove sono presenti dei db 
in access.
a tali db gli utenti accedono con una comunissima interfaccia web per 
aggiornarsi i dati.
ci sono alcuni campi in formato "data" che penso mi stiano dando dei 
problemi.
precedentemente il server era in ITA e non c'erano problemi, mentre 
adesso ricevo un "type mismatch" che PENSO (non ne ho la certezza ma 
fortissimi dubbi) sia dovuto al fatto che gli utenti inseriscono una 
data in formato gg/mm/aaaa, mentre probabilmente il server vorrebbe la 
data in formato anglosassone (del quale non ricordo la forma).
e' possibile che sia questo a restituirmi quell'errore "type mismatch" ?
come lo risolvo?
cambio le impostazioni locali del server?
-- 
spintop
[ spintop _ chez _ virgilio _ point _ it ]

 cambio le impostazioni locali del server?
neanche per sogno, le modifiche si avranno su tutti i siti e sorry ma a un
tedesco o a un finlandese non frega nulla come tu gestisci le date :-)
pertanto ognuno imposta le proprie tramite lcid oppure a voler fare bene le
cose, imposti il layout in base all'utente intecettando le impostazioni del
client
-- 
ITHost (your host company)
Technical Manager
C. Paparelli (MCSE,MCSD,MCDBA)
http://www.ithost.ch

 secondo te?
gia'.
pero' la cosa strana e' che solo in fase di inserimento di nuovi records 
  ricevo quell'errore.
se ad es. ne modifico uno esistente invece tutto fila liscio.
bene inteso, NON un errore qualsiasi, ma proprio quello li' "type mismatch".
se poi provo ad inserire un record con un campo data in forma 
anglosassone, ricevo quell'errore, eppure non ci sono altri campi del 
genere.
non e' un po' anomala la cosa?


 non e' un po' anomala la cosa?
no l'errore dipende dal tipo di connessione se odbc, oledb, ecc.
per access il formato da usare in base alle specifiche sql è il seguente
#mm/gg/aaaa# mentre per mssql è 'aaaa-mm-gg' pertanto se utilizzi questi
formati nel codice intervenendo sempre sull'input non avrai problemi, se
invece permetti l'input senza alcun controllo da parte dell'utente i rischi
di incappare in un errore sono maggiori oltre che ad ovviamente tenere
aperta una possibilità di sql injection



Dopo essermi scontrato con questo problema n volte, alla n+1 esima ho
imparato a gestire le date in formato testo in un campo char(8) in questo
modo: AAAAMMGG e via.
Volendo risparmiare due byte, a meno che non ci siano possibilità che nel
2100 la tua applicazione sia ancora in funzione, puoi usare AAMMGG. E
ovviamente sempre che tu non utilizzi funzioni specifiche si SQL per le
date.

 date.
uhm scherzi vero??
allora parliamo di database, prendo mssql i formati per la gestione delle
date sono 2
datetime - accetta date tra i periodi 1 gennaio 1753 e 31 dicembre 9999
memorizza orari con un precisione 3.33 millisecondi ed occupa 8 bytes
smalldatetime - accetta date tra i periodi 1 gennaio 1900 e 6 giugno 2079
memorizza orari con una precizione di 29.999 secondi e viene arrotondato al
minuto ed occupa 4 bytes
Adesso vediamo con il tuo sistema quanto sprecheresti, 8 bytes per la data +
4 bytes per l'ora totale = 12 bytes per ottenere quello che hai già con 4
bytes in smalldatetime senza contare che tutte le funzioni quali dateadd,
ecc. non funzioneranno se non dopo avere convertito il campo, con ovvi
sprechi di tempo in esecuzione di query
IMHO invece di inventare l'acqua calda usiamo i tipi di campi nel modo
corretto separando definitivamente quello che è il db con la logica di
business e con la gui, se iniziamo a ragionare e a sviluppare in 3-tiers
questi problemi non esistono più


umh....
la questione probabilmente e' + semplice di come viene esposta.
mi spiego meglio:
questa interfaccia in asp, normalissime asp 3.0, non fa altro che 
rispecchiare struttura e dati di X database access.
ricava tutto da sola, senza bisogno di configurare niente.
in 3 anni che la sto usando, solo adesso da' sto problema e penso sia 
dovuto al fatto che adesso e' su un win2000 server ENG, mentre prima era 
su una licenza ITA.
l'errore "type mismatch" lo ricevo soltanto in fase di inserimento di 
nuovi dati.
ma pur cambiando le impostazioni locali (e poi riportarle di nuovo alla 
conf. originale) continuo a ricevere il solito errore.
ahime' il tema e' molto OT in questo NG ma oramai che ci sono continuo...
ho modificato il file .asp che inseriva nuovi records, togliendo la 
conversione "cdate".
sembra funzionare, adesso attendo che qualcuno mi segnali di nuovo il 
solito errore, altrimenti significa che era quello.
tuttavia continuo a non spiegarmelo.
