Newsgroup: it.comp.www.asp
Titolo: Problemi con campo data.. cercasi consiglio

Vorrei sapere perchè utilizzando la funzione cdate(campostringa)
il server (IIS 4 con data base Access 97) mi restituisce la data in formato
italiano se
il giorno è <13 altrimenti mi restituisce la data in formato inglese
es:
se nella stringa ho: 02/08/2000
il risultato è  8/2/00
se la stringa è 15/08/00
il risultato è 15/8/00
Io non riesco a capire cosa sbaglio.... :o(
Qualcuno ha qualche consiglio??
Grazie!

Io non riesco a capire cosa sbaglio.... :o(
sbagli a ragionare per default in italiano.  i pc e l'informatica li
hanno inventati gli anglofoni, quindi devi ragionare con la testa
loro.
il server si trova di fronte alla data che io e te chiameremmo 2
agosto 2000 e scriveremmo 02/08/2000.
lui pero' parla inglese, quindi quando legge 02/08/2000 pensa ad una
data in formato inglese e cioe' mese giorno anno.  prova a vedere se
02 e' un mese valido, e lo e', se 08 e' un giorno valido, e lo e', e
anche l'anno e' valido.  allora, pensa, l'utente voleva dire l'8
febbraio 2000.
invece se si trova davanti 15/08/2000 lui pensa: "15 dovrebbe essere
un mese... ma non esiste il mese 15!  vuoi vedere che questo utente e'
un europeo e che 15 e' un giorno?  vediamo, a 15 segue 08... e 08
potrebbe essere agosto!  ah, allora e' il 15 agosto..."
capito come?
prova a convertire la data per mezzo delle funzioni day, month e year.

 il giorno è <13 altrimenti mi restituisce la data in formato inglese
non proccuparti, è un classico.
Quando la funzione di conversione delle date riceve una data palesemente
invertita secondo le impostazioni del server (il mese non può essere 13) la
corregge, altrimenti la beve come è stata immessa.
Si, con le date è sempre un bagno di sangue.
Primo consiglio:
settati i regional settings del server in italiano, così le date te le
restituisce in formato corretto.
Altrimenti devi sempre passare le date in formato mm/gg/aa (oltre al fatto
che te le restituisce nello stesso formato).
Secondo consiglio:
ricordati che nelle query sql le date devono COMUNQUE essere nel formato
mm/gg/aa.
Cosa diversa se aggioni un recordset.
Mi spiego:
supponiamo che la data sia il 1 di Maggio.
se aggiorni un campo con rs("data") = cdate("01/05/00") la data che passi
alla cdate deve essere nel formato impostato nei regional settings.
Se invece fai un update
"UPDATE .........SET DATA='05/01/00' WHERE.... "
la data deve essere sempre in formato mm/gg/aa.
Altra nota.
Se hai SQL server su un altro PC, setta allo stesso modo del web-server i
regional settings, perchè ho visto cose a cui non crederesti....
Sicuramente altri avranno opinioni diverse in merito.
Magari è l'occasione per approfondire il problema, anche dal punto di vista
dei controlli lato client.
P.

Dato che si parla di date volevo sottoporvi una piccola questione:
Il server NT SBS 4.5 della mia ditta ha le impostazioni internazionali
settate con le date europee.
Ho scoperto che se il server è in attesa di log in ( per intenderci con la
scritta premere ctr alt canc ....) le impostazioni internazionali non
vengono adoperate e le date sono nel formato mm/gg/aa , se viceversa entro
nel server tutto funzia.
E' normale che per far funzionare IIS con le impostazioni che voglio io devo
per forza fare log-in ??
Ciao Marco

Guarda, per SBS tutto è normale.......

Grazie... ho capito... il problema era nell'SQL!!!
Credevo che l'SQL fosse impostato come il Data Base Access!
A questo punto fornisco una possibile soluzione:
Far digitare la data da inserire o modificare in un INPUT TEXT
controllare se la data è corretta con la funzione CDATE()
riformattare la stringa inserita scambiando gg con mm attraverso
opportune funzioni di manipolazione stringhe.
Grazie di nuovo....
P.S.) non avresti mica una soluzione anche alla gestione di interrogazioni
su Tabelle Collegate di DataBase Access? :o))