22/02/10 13:55
DidyMond
Ciao a tutti!!
Ormai è da diversi giorni che non riesco a venirne a capo per una funzione; cerco di descrivervi quello che ho:
1-Datagridview
2-Calendario
3-Bottone di filtro
Il datagridview è collegato tramite codice ad un database e questo è il codice per richiamarlo:
Ok, premendo il pulsante Filtra ho bisogno che il datagridview mi visualizza i nomi (e altri campi) dove corrisponde la data selezionata sul calendario con la data presente nel campo Prossima_consegna; ecco il codice:
Nel database (Access 2007) i campi "Prossima_consegna" e "Ultima_consegna" sono formattati come Data/Ora con visualizzazione dd/MM/yyyy. L'errore che mi segnala è il seguente:
"Tipo di dati non corrispondenti nell'espressione criterio"
Mi pare di capire che questo errore è dovuto al fatto che la data presa dal calendario presente sul form sia di tipo String e quindi non viene accettata quando si confronta con qualcosa di Data/Ora presente nel database, corretto?
Come posso risolvere?
Ps:spero di essere stato chiaro...
Ormai è da diversi giorni che non riesco a venirne a capo per una funzione; cerco di descrivervi quello che ho:
1-Datagridview
2-Calendario
3-Bottone di filtro
Il datagridview è collegato tramite codice ad un database e questo è il codice per richiamarlo:
Dim conn As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\db.mdb") Dim cmd As OleDbCommand Dim daOrdini As OleDbDataAdapter Dim dtOrdini As DataTable e al caricamento del Form: conn.Close() Try conn.Open() cmd = New OleDbCommand("SELECT ID, Nome, Ultima_consegna, Ripetizione, Prossima_consegna, Tel_1, Tel_2, Via, Paese, Note FROM clienti ORDER BY Nome", conn) daOrdini = New OleDbDataAdapter() daOrdini.SelectCommand = cmd dtOrdini = New DataTable() daOrdini.Fill(dtOrdini) Me.dgvOrdini.DataSource = Me.dtOrdini Me.dgvOrdini.Columns("Ripetizione").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter Me.dgvOrdini.Columns("Ultima_consegna").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter Me.dgvOrdini.Columns("Prossima_consegna").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter Catch ex As Exception MsgBox(ex.Message) End Try
Ok, premendo il pulsante Filtra ho bisogno che il datagridview mi visualizza i nomi (e altri campi) dove corrisponde la data selezionata sul calendario con la data presente nel campo Prossima_consegna; ecco il codice:
conn.Close() Try conn.Open() cmd = New OleDbCommand("SELECT ID, Nome, Ultima_consegna, Ripetizione, Prossima_consegna, Tel_1, Tel_2, Via, Paese, Note FROM clienti WHERE Prossima_consegna = '" & Calendario.SelectionRange.Start.Date() & "' ORDER BY Nome", conn) [...]CUT Catch ex As Exception MsgBox(ex.Message) End Try
Nel database (Access 2007) i campi "Prossima_consegna" e "Ultima_consegna" sono formattati come Data/Ora con visualizzazione dd/MM/yyyy. L'errore che mi segnala è il seguente:
"Tipo di dati non corrispondenti nell'espressione criterio"
Mi pare di capire che questo errore è dovuto al fatto che la data presa dal calendario presente sul form sia di tipo String e quindi non viene accettata quando si confronta con qualcosa di Data/Ora presente nel database, corretto?
Come posso risolvere?
Ps:spero di essere stato chiaro...
aaa