Problema su conversione date da select

martedì 06 aprile 2010 - 16.19

mauri1961 Profilo | Senior Member

Ho una gridview visualizzata che contiene tra gli altri un campo data (definita date nella tabella sqlserver2008).

Ho la necessità di limitare la visualizzazione degli elementi di tabella inserendo una ricerca con due date limite.

Come faccio, dovendo inserire date in formato gg/mm/aaaa a convertirle in formato date per testarle correttamente nella select?

Ho provato in questo modo ma non ne vuole sapere:

Convert.ToDateTime(richdal.Text.Trim())
Convert.ToDateTime(richal.Text.Trim())

per poi, nella select, inserirlo in questo modo...

Dim command As New SqlCommand("select * from WEB_PUBB where data_pratica between '%" & richdal.Text & "%' and '%" & richal.Text & "%'", conn)

sono convinto che sia la sintassi che il metodo non sia corretto, ho provato anche il metodo cdate ma senza alcun risultato.

ciao, maurizio

kataklisma Profilo | Senior Member

Ciao!

>Ho una gridview visualizzata che contiene tra gli altri un campo
>data (definita date nella tabella sqlserver2008).
>
>Ho la necessità di limitare la visualizzazione degli elementi
>di tabella inserendo una ricerca con due date limite.
>
>Come faccio, dovendo inserire date in formato gg/mm/aaaa a convertirle
>in formato date per testarle correttamente nella select?
>
>Ho provato in questo modo ma non ne vuole sapere:
>
>Convert.ToDateTime(richdal.Text.Trim())
>Convert.ToDateTime(richal.Text.Trim())
Dovresti provare ad inserire la richdal.txt formattata in una variabile datetime :)

Dim dataprova as Datetime dataprova = Convert.TodateTime(richdal.text.trim()); ...

>per poi, nella select, inserirlo in questo modo...
>
>Dim command As New SqlCommand("select * from WEB_PUBB where data_pratica
>between '%" & richdal.Text & "%' and '%" & richal.Text & "%'",
>conn)
Al posto di richdal.Text metti le due nuove variabili Datetime create.
p.s se non ricordo male le date vanno tra # e non %!

>sono convinto che sia la sintassi che il metodo non sia corretto,
>ho provato anche il metodo cdate ma senza alcun risultato.
>
>ciao, maurizio
Ciao!

------------------------------------------
Ignazio Catanzaro

http://blogs.dotnethell.it/swdev/

mauri1961 Profilo | Senior Member

Scusa il ritardo nel risponderti, ho effettuato le modifiche che mi hai segnalato ma senza esito positivo.

Se può essere di aiuto la data che proviene dal database è in formato aaaa-mm-gg 00:00:00, mentre ed è visualizzata in grid view (correttamente) gg/mm/aaaa. In quest'ultimo modo io digito le date limite nei text-box.

Grazie, Maurizio.

kataklisma Profilo | Senior Member

Ciao!

>Scusa il ritardo nel risponderti, ho effettuato le modifiche
>che mi hai segnalato ma senza esito positivo.
Non ti preoccuapre ;)

>Se può essere di aiuto la data che proviene dal database è in
>formato aaaa-mm-gg 00:00:00, mentre ed è visualizzata in grid
>view (correttamente) gg/mm/aaaa. In quest'ultimo modo io digito
>le date limite nei text-box.
Hai provato a digitare le date in formato aa-mm-gg?

>Grazie, Maurizio.
Di niente...speriamo di risolvere!

------------------------------------------
Ignazio Catanzaro

http://blogs.dotnethell.it/swdev/

mauri1961 Profilo | Senior Member

niente da fare mi restituisce sempre "conversione non riuscita durante la conversione di una stringa di caratteri in una data o in un'ora".

Ciao, Maurizio

kataklisma Profilo | Senior Member

Questo restituisce la data nel formato da te richiesto :

C#
DateTime data = DateTime.Parse("20/11/11");

VB
Dim data as Datetime
data = DateTime.Parse("20/11/11");

Ovvero :

20/11/2010 0.00.00

E fin qui tutto ok, ora il problema è :

L'errore dove viene generato? Sql o visual studio?

P.s tramite l'interfaccia IFormatProvider puoi effettuare operazioni del genere :

IFormatProvider culture = new CultureInfo("en-US", true); DateTime data = DateTime.Parse("2010/11/11",culture,DateTimeStyles.NoCurrentDateDefault);

Risultato : 11/11/2010

------------------------------------------
Ignazio Catanzaro

http://blogs.dotnethell.it/swdev/

mauri1961 Profilo | Senior Member

scusa la scarsa competenza ma le istruzioni di Iformatprovider devo inserirle all'interno della sub che esegue la ricerca sostitunedo la data fittizia con i campi che utilizzo?

ciao, maurizio

kataklisma Profilo | Senior Member

>scusa la scarsa competenza
Tranquillo siamo qui per imparare!

>ma le istruzioni di Iformatprovider
>devo inserirle all'interno della sub che esegue la ricerca sostitunedo
>la data fittizia con i campi che utilizzo?
In primis fai un import di System.Globalization, dopodiche le istruzioni che ti ho scritto prima le inserisci in una routine che darà in pasto alla query le date, ovviamente cambiando le date fittizie con i tuoi valori.

Comunque non mi ha dato ancora una risposta, l'errore è relativo a Sql o a VS?

>ciao, maurizio
;)
------------------------------------------
Ignazio Catanzaro

http://blogs.dotnethell.it/swdev/

mauri1961 Profilo | Senior Member

ho effettuato l'import della system.globalization ma ho un problema di errore di sintassi con il iformatprovider in quanto al termine della digitazione della riga mi segnala che il suddetto è un tipo e non può essere usato come espressione e che culture non è dichiarato.

cmq per quanto riguarda l'errore dovrebbe essere il visualstudio in quanto nella stessa gridview effettuo altre due ricerche per stringhe alfanumeriche che funzionano perfettamente mostrandomi le date in modo corretto.

GRazie ancora, Maurizio

kataklisma Profilo | Senior Member

>ho effettuato l'import della system.globalization ma ho un problema
>di errore di sintassi con il iformatprovider in quanto al termine
>della digitazione della riga mi segnala che il suddetto è un
>tipo e non può essere usato come espressione e che culture non
>è dichiarato.
Quel codice è codice C#, devi convertirlo in VB.Net!

Dim Culture as IFormatProvider = new CultureInfo("en-US",true)
Dim Data = DateTime.Parse("2010/11/11",culture,DateTimeStyles.NoCurrentDateDefault)

Dovrebbe essere cosi, ma controlla, non ho il compilatore sottomano e non uso vb.net!

>cmq per quanto riguarda l'errore dovrebbe essere il visualstudio
>in quanto nella stessa gridview effettuo altre due ricerche per
>stringhe alfanumeriche che funzionano perfettamente mostrandomi
>le date in modo corretto.
Dovrebbe?
Il compilatore ti segna un'eccezione?Durante il debug ti evidenzia una riga di codice?Qual'è il nome dell'exception?

>GRazie ancora, Maurizio
;)
------------------------------------------
Ignazio Catanzaro

http://blogs.dotnethell.it/swdev/
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