Newsgroup: it.comp.www.asp
Titolo: URGENTE - maledetto formato data

....un campo di una tabella Access2000 formattato come
Tipo dati = Data/ora e il Formato = Data in cifre
presenta ogni tanto la data (inserita con un INSERT INTO...
e #" date() & "# come valore) invertita, cioè se fosse la
data di oggi potrei trovarla come 07/08/2006 invece che
08/07/2006.
Perchè? Capirei se fosse sempre in un formato... ma così!
Devo impostare qualcosa sul server? Usare una funzione
di formattazione a priori?
grazie per gli eventuali aiuti
-- 
ciao!
....nixs.................................................................
Lat.: 41° 7' 50" N  Long.: 14° 38' 41" E
nixs@.
lucchetto.lagirandola.it
togli la .SERRATURA. per scrivermi
.........................................................................
L'uomo non smette di giocare perché invecchia,
ma invecchia perché smette di giocare.
(George Bernard Shaw)

 grazie per gli eventuali aiuti
Prego.
Ciao!
-- 
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo
http://italy.mvps.org
 

 #MM/DD/YYYY#.
si ma CHI e COME decide il formato, io non faccio
altro che inserire la data con la funzione Date(), ora come
dici tu, o come dico io, va bene lo stesso, ma il problema
è che il formato cambia in relazione a non so cosa.


 altro che inserire la data con la funzione Date()
e sbagli. Formatta la data come #MM/DD/YYYY# e vedrai che non esisteranno 
più fraintendimenti di sorta.


 più fraintendimenti di sorta.
Se non mi guidi per mano non capisco :-))
Questa è la query (parziale)
strSQL = "UPDATE Tab SET DataAccesso = #" & date() & "# "
objConn.Execute(strSQL)
Come diventa????


 Come diventa????
Ho definito una banale tabella in Access con 2 colonne:
TabellaID AutoNumber
Data      Date/Time
Poi ho scritto questa pagina ASP:
<%
Session.LCID = 1033
Dim cn
Const CN_STRING = "Provider=Microsoft.Jet.OLEDB.4.0;Data 
Source=D:\documenti\db1.mdb"
Const adExecuteNoRecords = 128
Set cn = Server.CreateObject("ADODB.Connection")
With cn
    .ConnectionString = CN_STRING
    .Open
    .Execute "INSERT INTO Tabella(Data) VALUES(#" & Date() & "#);",, 
adExecuteNoRecords
    .Close
End With
Set cn = Nothing
If Err = 0 Then
    Response.Write "Inserimento avvenuto con successo."
Else
    Response.Write "Errore."
End If
%>
La proprietą LCID dell'oggetto Session ci permette di impostare il Locale 
ID, ovvero il modo con il quale le date, le ore e le valute sono 
rappresentate. 1033 corrisponde al formato English - United States:
"Session.LCID"
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iissdk/html/69129cb1-32c5-4273-80d5-43fdbb00d507.asp
"Locale ID (LCID) Chart"
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/882ca1eb-81b6-4a73-839d-154c6440bf70.asp
Un modo sicuramente migliore per affrontare il problema consiste 
nell'isolare l'accesso ai dati tramite oggetti Query, infischiandosene del 
Locale ID.
In Access ho definito la query parametrica qryInsertDate:
PARAMETERS [Data] Date;
INSERT INTO Tabella(Data) VALUES([Data]);
A questo punto ho preparato la seguente pagina che la richiama:
<%
Dim cmd
Const CN_STRING = "Provider=Microsoft.Jet.OLEDB.4.0;Data 
Source=D:\documenti\db1.mdb"
Const adDate = 7
Const adCmdStoredProc = 4
Const adParamInput = 1
Const adExecuteNoRecords = 128
' Definisco un oggetto ADODB.Command
Set cmd = CreateObject("ADODB.Command")
With cmd
    .CommandType = adCmdStoredProc
    .CommandText = "qryInsertDate"
    .Parameters.Append .CreateParameter("Date", adDate, adParamInput, , 
Date())
    .ActiveConnection = CN_STRING
    ' Eseguo la Query
    .Execute,, adExecuteNoRecords
End With
Set cmd = Nothing
If Err = 0 Then
    Response.Write "Inserimento avvenuto con successo."
Else
    Response.Write "Errore."
End If
%>
In questo modo oltre ad aver eliminato per sempre qualsiasi problema di 
formato data/ora, otterrai maggiori prestazioni grazie al fatto che 
l'oggetto Query sarą compilato all'atto del salvataggio e contemporaneamente 
minimizzerai il pericolo dei cosiddetti attacchi di SQL Injection.


> Session.LCID = 1033
questo valore però funziona!
qual è il valore per il formato gg/mm/aaaa?


 Session.LCID = 1033
il link da te segnalato porta altri valori che per l'italiano
è 0410, ma non funziona dandomi questo errore
quando scrivo:
<%
Session.LCID = 0410
response.write(date())
%>
SessionID error 'ASP 0219 : 80004005'
Invalid LCID
/pippo.asp, line 11
The specified LCID is not available
Comunque sul server è già settato, in Opzioni internazionali e lingua,
l'italiano col formato della data corretto gg/mm/aaaa
Forse ho dimenticato di raccontare come è configurato il sistema:
server con WindowsServer2003
database Access2003 (formato file di Access2000)


> Session.LCID = 1033
trovato per l'italiano: Session.LCID = 1040
l'altro valore era esadecimale!
grazie mille!
(se ho altri problemi riposto eh!?)
