[MySQL] problema query con date su server

Discussione in 'MySQL' iniziata da visualrenzo, 1 Febbraio 2019.

Tag (etichette):
  1. visualrenzo

    visualrenzo Nuovo Utente

    Registrato:
    1 Febbraio 2019
    Messaggi:
    6
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    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ì:


    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: 2 Febbraio 2019
  2. marino51

    marino51 Utente Attivo

    Registrato:
    28 Febbraio 2013
    Messaggi:
    2.573
    Mi Piace Ricevuti:
    128
    Punteggio:
    63
    Occupazione:
    free lance
    Località:
    Lombardia
    non ho mysql ma sql server e visto che non hai pubblicato l'errore, ti posto una query simile alla tua,

    upload_2019-2-2_13-53-44.png

    considera,

    l'uso degli apici invece del cancelletto
    usando il cancelletto mi segnala un errore nella posizione "00:"

    il formato della data "yyyy-mm-dd",
    passando la data in formato "dd/mm/yyyy" ricevo un errore di conversione da stringa a data
     
  3. visualrenzo

    visualrenzo Nuovo Utente

    Registrato:
    1 Febbraio 2019
    Messaggi:
    6
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Grazie

    provo a mettere gli apici, ma io ho una variabile nonuna data fissa come messa da te.

    PHP:
     Dim DataInizio As DateTime Now
            Dim DataFine 
    As DateTime Date.Now.AddDays(-1)
    e poi dovrei invertire il senso?
     
    Ultima modifica di un moderatore: 2 Febbraio 2019
  4. Max 1

    Max 1 Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    29 Febbraio 2012
    Messaggi:
    3.908
    Mi Piace Ricevuti:
    290
    Punteggio:
    83
    Sesso:
    Maschio
    @visualrenzo
    Da regolamento del forum, come tutti noi sei tenuto ad usare il tag [​IMG] o il tag [​IMG] per il PHP, quando posti del codice, oppure la funzione codice dalla barra degli strumenti
    [​IMG]
    Inoltre ti prego di leggere attentamente il regolamento generale del forum e quello di sezione dove posti
    Grazie
    Per questa volta te lo sistemo io ma mi raccomando per il futuro
     
  5. visualrenzo

    visualrenzo Nuovo Utente

    Registrato:
    1 Febbraio 2019
    Messaggi:
    6
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    ma io avevo incollato il codice dentro la finestrella?!?! come hai fatto vedere tu, starò più attento
     
  6. marino51

    marino51 Utente Attivo

    Registrato:
    28 Febbraio 2013
    Messaggi:
    2.573
    Mi Piace Ricevuti:
    128
    Punteggio:
    63
    Occupazione:
    free lance
    Località:
    Lombardia
    il formato di scrittura é identico,
    BETWEEN '" & DataInizio & "' AND
    ovvero apice-virgolette-congiunzione-variabile (magari senza parentesi) -congiunzione-virgolette-apice
    per tutti i valori non numeri
     
Sto caricando...

Condividi questa Pagina