Campo data access 2003

giovedì 02 aprile 2009 - 12.50

tomfrusciante Profilo | Newbie

Salve ragazzi sono fresco di registrazione anche se il Vs. forum da tempo mi è sempre stato utile. Veniamo al dunque. Scrivo in questa sezione per il fatto che oggi avviando il mio DB improvvisamente il campo data di una tabella mi viene inserito con il formato mm/dd/yyyy quando a me occorre il formato dd/mm/yyyy. L'inserimento viene fatto da VBA e il bello che a oggi ha sempre funzionato correttamente. :-(((

Qualche suggerimento sull'arcano??

P.S.

la query VBA è:

With cmd
.ActiveConnection = CurrentProject.Connection
.CommandText = "INSERT INTO giornalepresenze ( id_dipendente, nome, cognome, tariffaday, mansione, data ) " & _
"SELECT id_dipendente, nome, cognome, tariffaday, mansione, #" & Format(Now(), "dd/mm/yyyy") & "# FROM [dipendenti] " & _
"WHERE id_dipendente = '" & rec("id_dipendente") & "';"
.CommandType = adCmdText
.Execute
End With

in fase di debug il Format(Now(), "dd/mm/yyyy") è corretto (es. 01/04/2009) ma poi all'atto dell'execute e dopo il refresh mi trovo nella tabella un bel 04/01/2009 (...data oggi).

Ripeto fino a lunedì tutto funzionava alla perfezione.

per ora ho sostituito il Format(Now(), "dd/mm/yyyy") con
Format(Now(), "mm/dd/yyyy") e paradossalmente nella tabella mi trovo un 01/04/2009 (...data oggi)

se tento inserimento manuale funge.
esplorando la variabile .CommandText della query VBA è corretta!
se tento inserimento da query Access funge

Ringrazio anticipatamente per l'aiuto. TF

lbenaglia Profilo | Guru

>With cmd
>.ActiveConnection = CurrentProject.Connection
>.CommandText = "INSERT INTO giornalepresenze ( id_dipendente,
>nome, cognome, tariffaday, mansione, data ) " & _
>"SELECT id_dipendente, nome, cognome, tariffaday, mansione, #"
>& Format(Now(), "dd/mm/yyyy") & "# FROM [dipendenti] " & _
>"WHERE id_dipendente = '" & rec("id_dipendente") & "';"
>.CommandType = adCmdText
>.Execute
>End With

Ciao Tommaso,

La soluzione ideale consisterebbe nel definire una query parametrica in modo da evitare qualunque problema legato al formato data ma soprattutto ti metteresti al riparo dagli attacchi di SQL Injection.
http://www.dotnethell.it/forum/messages.aspx?ThreadID=13913
http://www.dotnethell.it/articles/SQL-Injection-Tutorial-Security.aspx

Se per qualunque motivo non vuoi adottare la soluzione appena segnalata, ricordati che Access riconosce il formato #mm/dd/yyyy# indipendentemente dalle regional settings, pertanto formatta la data in quel modo (simboli # inclusi).

>Ringrazio anticipatamente per l'aiuto. TF
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

tomfrusciante Profilo | Newbie

anzitutto grazie per la tempestiva risposta...studierò i tuoi consigli. L'unico cruccio è che la query incriminata ha funzionato perfettamente per un paio di giorni popolando la tabella con dati/date conformi.
Ergo quando mi trovo davanti all'irreale, al filosofico, all'astratto nel settore informatico due sono le idee che mi passano per la mente:

1° non ho capito un....
2° qualcosa è cambiato nei settaggi, o qlc del genere.

anyway grazie e se ti passa per la mente qualche altro motivo che spieghi l'accaduto tienimi aggiornato, infondo capire come funziona il sistema è l'interessante non solo il fatto che funzioni.

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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5