Buongiorno, ho scritto un programma in VB.net.
Vado su una tabella su server e leggo i dati ogni 15 secondi.
Creo un Datagrid aggiornato e vorrei filtrarlo per data di scrittura.
Ho il problema che non riesco a scrivere la giusta stringa SQL perchè mi da errore sulle date.
Premesso che per fare le prove in locale ho un tipo di connessione e per quando sono collegato al server ne ho un’ altra gestita così:
Premesso anche che i dati relativi alla data scrittura (campo che vorrei interrogare per la data) che devo leggere nella tabella vengono inseriti nel seguente modo a seconda se sia locale o server
Sul server è settato come campo data/ore e per non avere errore in scrittura (inversione mese con girno) devo scriverlo con questo formato OleDbType.DBTimeStamp rispetto al db locale access che basta un OleDbType.Date
Questo parte fondamentale del mio codice
Per il DB locale funziona correttamente mentre sul server non mi funziona e mi va nell’ eccezione gestita con Catch.
Praticamente mi da errore come se arriva a leggere la data e poi trova il punto delle ore e mi butta fuori.
In locale mi funziona anche questa versione :
Adesso non ho qui a portata di mano l’ esatto errore ma ho provato in mille modi. Questo mostrato sopra è uno degli ultimi che mi sembra il più logico.
Vado su una tabella su server e leggo i dati ogni 15 secondi.
Creo un Datagrid aggiornato e vorrei filtrarlo per data di scrittura.
Ho il problema che non riesco a scrivere la giusta stringa SQL perchè mi da errore sulle date.
Premesso che per fare le prove in locale ho un tipo di connessione e per quando sono collegato al server ne ho un’ altra gestita così:
PHP:
If IniLocale = True Then
IniServer_Locale = My.Computer.FileSystem.CurrentDirectory
‘<!-- <Connessione DB Locale solo per prove "/> -->
‘ <add key="IniProvider_Locale" value= "Microsoft.ACE.OLEDB.12.0"/>
'monto la stringa corretta con dato letto dall' ini
ProviderVar = "Provider=" & IniProvider_Locale & ";"
ServerVar = "Data Source=" & IniServer_Locale & ""
DatabaseVar = IniDatabase_Locale & ";"
dataFileVar = ServerVar & DatabaseVar
Else
‘<add key="IniProvider_Missione" value= "Nome MIO SERVER"/>’
'monto la stringa corretta con dato letto dall' ini
ProviderVar = "Provider=" & IniProvider & ";"
ServerVar = "Server=" & IniServer & ";"
DatabaseVar = "Database=" & IniDatabase & ";"
UidVar = "Uid=" & IniUid & ";"
PwdVar = "Pwd=" & IniPwd
dataFileVar = ServerVar & DatabaseVar & UidVar & PwdVar
End If
connString = ProviderVar & dataFileVar
Premesso anche che i dati relativi alla data scrittura (campo che vorrei interrogare per la data) che devo leggere nella tabella vengono inseriti nel seguente modo a seconda se sia locale o server
PHP:
Dim Adesso As DateTime = Now
If IniLocale = True Then
cmdCommand.Parameters.Add(New OleDbParameter("@HHH", OleDbType.Date)).Value = Adesso '21 gennaio 2019
Else
cmdCommand.Parameters.Add(New OleDbParameter("@HHH", OleDbType.DBTimeStamp)).Value = Adesso '21 gennaio 2019
End If
Sul server è settato come campo data/ore e per non avere errore in scrittura (inversione mese con girno) devo scriverlo con questo formato OleDbType.DBTimeStamp rispetto al db locale access che basta un OleDbType.Date
Questo parte fondamentale del mio codice
PHP:
Dim DataInizio As DateTime = Now
Dim DataFine As DateTime = Date.Now.AddDays(-1)
strSQL = "SELECT * FROM " & Tbl_Missione & " WHERE [Data_Scrittura] BETWEEN #" & (DataInizio) & "# AND #" & (DataFine) & "# ORDER BY ID DESC" '
Dim cmd As OleDbCommand = New OleDbCommand(strSQL, MyConnessione)
Try
RsCodice = cmd.ExecuteReader
While RsCodice.Read '31 gennaio 2019
ID_Letto = Trim(RsCodice("ID ").ToString)
End While
' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Catch ex As Exception
FileClose(1)
FileOpen(1, "LOG Errori" & ".txt", OpenMode.Append, , , ) 'Open "ParametriTest.ini" For Input As 1
PrintLine(1, ex.Message & " Non riesco a leggere la tabella " & Tbl_Missione & " " & Now)
FileClose(1)
End Try
RsCodice = Nothing ' scarico il record set ''
MyConnessione.Close()
Per il DB locale funziona correttamente mentre sul server non mi funziona e mi va nell’ eccezione gestita con Catch.
Praticamente mi da errore come se arriva a leggere la data e poi trova il punto delle ore e mi butta fuori.
In locale mi funziona anche questa versione :
PHP:
strSQL_Missione = "SELECT * FROM " & IniTbl_Missione & " WHERE [Missione_Data_Scrittura] <= # " & DataInizio.Date & "# ORDER BY ID_Missione DESC" ' remmato il 29 gennaio 2019 vogliono anche lo stato 20
Adesso non ho qui a portata di mano l’ esatto errore ma ho provato in mille modi. Questo mostrato sopra è uno degli ultimi che mi sembra il più logico.
Ultima modifica di un moderatore: