Salvataggio Anomalo

venerdì 02 maggio 2008 - 08.36

diacono_frost Profilo | Newbie

Ciao a tutti, sto sviluppando un' applicazione che prevede il salvataggio di dati su un database di access2003
si lo so dovrei usare tutt'altro DBMS ma per il momento ho a disposizione solo questo..
il problema è un altro :

sapete dirmi il motivo per cui se io eseguo queste operazioni :


CmdSql.Connection = MyConn
CmdSql.CommandText = "INSERT INTO MyTable SET (campo1(Numerico), campo2(Data)) VALUES (valore1, Valore2)"
Try
CmddSql.ExecuteNonQuery()
Catch ex As Exception
Response.Write(ex.Message)
End Try

E' un po' che cisbatto la testa e non riesco a capire il motivo...


Saluti e ringraziamenti anticipati

freeteo Profilo | Guru

ciao,
il problema è quasi sicuramente dovuto al campo data e a come tuscrivi la query di insert.
Quando lavori con ado.net , e devi usare dei valori nella stringa sql, ti conviene sempre passare tramite parametri, in modo che sia proprio ado.net a scriverti la stringa correttamente (ad es: true/false => 1,0 etc...).
In piu' access, con le date rompe le scatole, ed il formato di parametro che vuole poi è completo, ovvero dd/MM/yyyy HH:mm:ss.

Ti posto il codice che uso io di solito con access, senza avere problemi:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
come vedi la stringa sql contiene i parametri, che aggiungo poi all'insieme "Parameters" del command.
In piu' la funzione "GetParametro" formatta il valore DateTime, come lo vuole access.

Il codice è in c#, ma è portabile in vb.net in 2min...forse la clausola using lasciala stare, crea la variabile normale.


Ecco un link se vuoi capire meglio la teoria:
http://msdn.microsoft.com/it-it/library/33y2221y.aspx

ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

diacono_frost Profilo | Newbie

Grazie per avermi risposto cosiì celermente..

per la data io concateno alla stringa un oggetto date con questo formato "dd/mm/yyyy hh:mm:ss" e in access il formato del campo data è "data generica" ossia con lo stesso formato di Vb..
per cui penso non sia quello.. anche se ancora sono un pivello di .net...

Mi viene inmente se possa essere il try catch che crea problemi ma non ho avuto il tempo di provare senza..

mmm
riguardando il tuo codice im viene in mete una cosa..

tu fai una conversione da date a string mentre io que toString() non lo uso chissa che..

ok provo poi ti so' dire..


diacono_frost Profilo | Newbie

Allora allora..

mi sono accorto di 1 cosa :

non passavo una data nel formato dd/mm/yyyy hh.mm.ss ma invece passavo solamente dd/mm/yyyy

poi..
provando ho aggiunto il .tostring() e invece di passare questa data Date.Today.toString() passo Data.Now.toString()
e quindi il formato è "OK" ...

e adesso dopo queste modifiche va ok !!

Grazie per l'aiuto !!!

freeteo Profilo | Guru

>non passavo una data nel formato dd/mm/yyyy hh.mm.ss ma invece
>passavo solamente dd/mm/yyyy
si infatti come ti dicevo il formato data è particolare, soprattutto in access...


>poi..
>provando ho aggiunto il .tostring() e invece di passare questa
>data Date.Today.toString() passo Data.Now.toString()
>e quindi il formato è "OK" ...
>e adesso dopo queste modifiche va ok !!
ok


>Grazie per l'aiuto !!!
di niente, siamo qui per questo!


ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5