18 messaggi dal 17 gennaio 2016
Saluti a tutti. Ho fatto alcune ricerche sull'inserimento date ma continuo a ricevere errori.
Uso Visual Basic con Visual Studio e un database MSAccess.
Premetto che ho sempre litigato con l'inserimento delle date, ma con le Windows application risolvevo il problema con i TableAdapters.

Questa è la prima volta che devo inserire date con ASP NET.
Ho il seguente codice:

Dim DataAcquisto As Date = DateTime.Now
SqlDataSource1.InsertCommandType = SqlDataSourceCommandType.Text
SqlDataSource1.InsertParameters.Add("Data", DataAcquisto)
SqlDataSource1.InsertCommand ="INSERT INTO Tbl_Acquisti (Data) VALUES (@Data)"
SqlDataSource1.Insert()

QUesto è l'errore generato:

Tipi di dati non corrispondenti nell'espressione criterio.

Come deve essere formattata la data in questo caso ?

Grazie

Marco
175 messaggi dal 02 gennaio 2012
Hi marcolino461,

prova così

Dim DataAcquisto As Date = DateTime.Now
dim mData2 as string

mData2 = Format(DataAcquisto, "dd/MM/yyyy")
SqlDataSource1.InsertCommandType = SqlDataSourceCommandType.Text

SqlDataSource1.InsertParameters.Add("Data", mData2)
SqlDataSource1.InsertCommand ="INSERT INTO Tbl_Acquisti (Data) VALUES (@Data)"
SqlDataSource1.Insert()

bye ghg
18 messaggi dal 17 gennaio 2016
Ciao ghg, purtroppo anche questo accorgimento non funziona, ho provato anche a sostituire il carattere '/' con il carattere '-' es ..
format(DataAcquisto,"dd-MM-yyyy") ma niet.
Mi chiedevo una cosa: nelle Windows Application la creazione di un paramentro avviene cosi:

AggiungiParametro(CMD, "@DataApprovazione", OleDbType.Date, strX)

CMD = nome del oleDBCommand
@DataApprovazione = Nome del parametro SQL
OleDbType.Date = Tipo del parametro
strX = mio valore data.

Premetto che neanche questo mi è mai riuscito in quanto genera un errore.

In questo caso ,con la ASP Page, nella dichiarazione del paramentro manca una attribuzione di tipo, ma l'intellisense non mi suggerisce di usarlo.

Ma perchè mai con le date ci sono sempre problemi ?

Grazie per il suggerimento.

Marco
175 messaggi dal 02 gennaio 2012
Hi marcolino461,

ho verificato e il tuo codice originale funziona
perfettamente.

Ritengo che l'errore che ricevi sia dovuto al campo Data
della tabella Tbl_Acquisti che erroneamente ha il tipo Numerico
e non Data/ora.

Apri Access e verifica la struttura della tabella Tbl_Acquisti.

Il campo Data dovrà avere Tipo Dati impostato a Data/ora

bye ghg
18 messaggi dal 17 gennaio 2016
Ciao ghg. Il Campo DataAcquisto della tabella Tbl_Acquisti è impostato su Data/ora con il formato data in cifre. In effetti se uso la proprieta InsertQuery del SqlDataSource con il seguente formato:
INSERT INTO Tbl_Acquisti(DataAcquisto) VALUES(#16.3.2016#) la cosa funziona.
Peccato che InsertQuery non sia una proprietà utilizzabile da editor visualBasic e quindi a RunTime es:
sqlDataSource.InsertQuery = "INSERT INTO Tbl_Acquisti (DataAcquisto) VALUES(#16.3.2016#)".

Da te ha funzionato ? Forse in access hai usato per esempio il formato Data/Ora data generica o data estesa o data breve? puoi controllare PF ?

Grazie
175 messaggi dal 02 gennaio 2012
Hi marcolino461,

prova a togliere il formato data in cifre
e lasciarlo vuoto, la mia data non aveva formato.



bye ghg.
18 messaggi dal 17 gennaio 2016
Ciao ghg.

Niente. Neanche cosi funziona. Ho tolto il formato dalla data come mi hai consigliato ma l'errore è sempre quello:

Errore server nell'applicazione '/'.

Tipi di dati non corrispondenti nell'espressione criterio.
Siccome nell'errore non è menzionato alcun riferimento al campo che disturba, ho anche provato a togliere il campo data e inserire il resto dei dati di tipo string e integer con il risultato che InsertCommand viene accettato, quindi è per forza sto maledetto campo data che impedisce l'immissione.

Peccato che non posso postarti il progetto completo per un test.
Se ti viene in mente qcos'altro fammi sapere.

PS l'impegno che ci stai mettendo pure tu è pregevole e ti ringrazio.
Spero che prima o poi riesca a risolvere l'errore. Non perderci il sonno pero'.

Ho anche contattato un insegnante di informatica con vari Master alle spalle e spendero' 100 Euro l'ora pur di risolvere sto minchia di problema.

Saluti Marco
175 messaggi dal 02 gennaio 2012
Hi marcolino461,

prova a fare questi 2 test


1^ cambia la prima istuzione in
Dim DataAcquisto As DateTime = DateTime.Now


effettivamente sul DataBase DataAcquisto e' un DataTime



se non funziona prova questa
2^

Dim DataAcquisto As DateTime = DateTime.Now
SqlDataSource1.InsertCommandType = SqlDataSourceCommandType.Text
SqlDataSource1.InsertCommand ="INSERT INTO Tbl_Acquisti (Data) VALUES (@Data)"
SqlDataSource1.InsertParameters.Add("Data", DbType.DateTime, DataAcquisto)
SqlDataSource1.Insert()

bye ghg

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.