Erore Ricerca Di una data nel database

mercoledì 11 gennaio 2012 - 02.17
Tag Elenco Tags  VB.NET  |  Visual Studio 2008  |  Access (.mdb)  |  Office 2003

Feroxis Profilo | Junior Member

Di solito il codice mi funziona ma con le date proprio non ne ha voglia.
Cos'è che non va?
VB 2008 / Access / OLEDB

Dim myconn1 As New OleDb.OleDbConnection
Dim mycomm1 As New OleDb.OleDbCommand
Dim mydata1 As New OleDb.OleDbDataAdapter
Dim mydataset1 As New DataSet
Dim mydata As Date
mydata = SelectDate.MonthCalendar1.SelectionStart.Date

'my data restituisce la data nel formato gg/mm/aaaa come impostato anche nel database

myconn1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Indirizzo1 & " "
mycomm1.Connection = myconn1

mycomm1.CommandText = "SELECT IdUscita,Nome,Cognome,IdSocio,Descrizione,Euro,Riferimento,[Data] " & _
"FROM " & tabella1 & " " & _
"WHERE [Data] = " & mydata & " "

mycomm1.Parameters.Add("[Data]", OleDb.OleDbType.DBDate, 10).Value = mydata

mydata1.SelectCommand = mycomm1

myconn1.Open()
mydata1.Fill(mydataset1, tabella1)
myconn1.Close()
Risultati.Visible = True
Risultati.DataGridView1.AutoGenerateColumns = True
Risultati.DataGridView1.DataSource = mydataset1
Risultati.DataGridView1.DataMember = tabella1
Risultati.DataGridView1.AutoResizeColumns()

nON RESTITUISCE NIENTE

Jeremy Profilo | Guru

Ciao.
Mi sembra di ricordare che Access tratta le date in stile Americano.
Fai attenzione anche al fatto che nel Db, nel campo data, non ci sia finita in qualche modo anche l'ora.
Ti consiglio di provare ad eseguire la stessa query anche direttamente all'interno di Access.... così da esser sicuro che sia solo un problema di query.

Facci sapere...
Ciao

Feroxis Profilo | Junior Member

Tramite la query in access ottengo i record che stavo cercando, come previsto.

Jeremy Profilo | Guru

Ricordo anche... ma sono ricordi lontani... che nella query la data dovrebbe essere racchiusa tra due cancelletti.
[ Data] = #tuadata#
Prova a fare una ricerca in merito oppure prova a postare nella sezione Database.

Facci sapere.
Ciao.

Feroxis Profilo | Junior Member

Si ## ok ma io lavoro con una parametro dichiarato
Dim mydata As Date
mydata = SelectDate.MonthCalendar1.SelectionStart.Date
Se nel MonthCalendar seleziono per esempio il 03/01/2012
alla richiesta
msgbox("mydata,okonly)
ricevo:
03/01/2012
Quindi va bene così.

Se elimino WHERE DATA = mydata e parameters.add mi restituisce tutti i valori e funziona.
Quindi posso escludere la connessione al database e errori di scrittura.

Se inserisco però:
"WHERE [Data] = " & mydata & " "

mycomm1.Parameters.Add("[Data]", OleDb.OleDbType.DBDate, 10).Value = mydata
Non mi viene restituito niente e non credo si vada a confrontare due variabili di carattere diverso.

Penso quindi che possa essere solo il formato della data che non coincide.
in questo caso DBDate su
mycomm1.Parameters.Add("[Data]", OleDb.OleDbType.DBDate, 10).Value = mydata
in questo caso Oledb.oledbtype.dbdate,10


Nel database il formato della data è gg/mm/aaaa
Il formato restituito da mydata è gg/mm/aaaa


Cos'altro può essere?

Jeremy Profilo | Guru

No no .... aspetta.
Stai facendo una gran confusione.
Stai sbagliando l'uso dei parametri.

Ora sono fuori, dammi tempo un'oretta e cerco di fare chiarezza.

Feroxis Profilo | Junior Member

Infatti è [Data] perchè è una parola riservata.

Jeremy Profilo | Guru

Ciao
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
questa è una query parametrizzata ... prova così.

Facci sapere...
Ciao

Feroxis Profilo | Junior Member

Stessa cosa di prima, crea la tabella nel datagrid, crea le colonne ma non trova il valore, assicuro che ci sono 3 record con data 03/01/2012 e non ne trova nessuna.

Cambiato da così:
mycomm1.Parameters.Add("@prmData", OleDb.OleDbType.DBDate , 10).Value = mydata
A Così, ora funziona.
mycomm1.Parameters.Add("@prmData", OleDb.OleDbType.Date).Value = mydata
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5