Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [VB.NET] Errore di sintassi in SQL con OleDbException: operatore mancante

    Ho un problema con la ricerca dei record tra due date in formato access("dd/mm/yyyy")
    il database è in formato access il campo DATA è in formato data in cifre (06/07/2023)
    l'errore che ottengo è:
    codice:
    System.Data.OleDb.OleDbException: 'Errore di sintassi (operatore mancante) nell'espressione della query 'DATA  => #06/07/2023# And DATA <=#06/07/2023#'.'
    codice:
    Using dta As OleDbDataAdapter = New OleDbDataAdapter("SELECT * From DB where DATA  => #" & Me.DateTimePicker2.Value.ToShortDateString & "# And DATA <=#" & Me.DateTimePicker1.Value.ToShortDateString & "#", OLEConnection)          
    Dim dts As DataSet
                dts = New DataSet
                dta.Fill(dts)
                DataGridView1.DataSource = dts.Tables(0)
            End Using
            DataGridView1.Refresh()
    mi date una mano?
    Ultima modifica di TcpClient; 06-07-2023 a 11:42

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2014
    residenza
    Vicenza
    Messaggi
    318
    prova ad utilizzare le date in formato yyyy/MM/dd che è molto più standard
    devi usare "MM" per il mese e non "mm", mi raccomando
    inoltre per dire "uguale o maggiore" di solito si usa ">="

  3. #3
    Utente di HTML.it L'avatar di Kahm
    Registrato dal
    Dec 2004
    residenza
    Rome
    Messaggi
    3,580
    Quote Originariamente inviata da TcpClient Visualizza il messaggio
    Ho un problema con la ricerca dei record tra due date in formato access("dd/mm/yyyy")
    il database è in formato access il campo DATA è in formato data in cifre (06/07/2023)
    l'errore che ottengo è:
    codice:
    System.Data.OleDb.OleDbException: 'Errore di sintassi (operatore mancante) nell'espressione della query 'DATA  => #06/07/2023# And DATA <=#06/07/2023#'.'
    codice:
    Using dta As OleDbDataAdapter = New OleDbDataAdapter("SELECT * From DB where DATA  => #" & Me.DateTimePicker2.Value.ToShortDateString & "# And DATA <=#" & Me.DateTimePicker1.Value.ToShortDateString & "#", OLEConnection)          
    Dim dts As DataSet
                dts = New DataSet
                dta.Fill(dts)
                DataGridView1.DataSource = dts.Tables(0)
            End Using
            DataGridView1.Refresh()
    mi date una mano?
    oledb, questo mi fa pensare che tu usi ACCESS
    se è cosi, lui ha un suo formato di date
    allora cambia il codice in :
    codice:
    Using dta As OleDbDataAdapter = New OleDbDataAdapter("SELECT * From DB where DATA  => cdate('" & Me.DateTimePicker2.Value.ToShortDateString & "') And DATA <= cdate('" & Me.DateTimePicker1.Value.ToShortDateString & "')", OLEConnection)
    NN vi diro mai chi sono in realta,
    tutti i miei 3D sono orfani, non insistete per farmi rispondere ai 3D aperti da me

  4. #4
    Ciao, si uso access su richiesta dell' utente, posto il codice funzionante solo se aggiungo 1 giorno alla data finale:
    codice:
       Private Sub PopulateGrid()
    
            Dim dt As Date = Convert.ToDateTime(DateTimePicker1.Value)
            dt = dt.AddDays(1)
            DateTimePicker1.Value = dt.ToString("dd/MM/yyyy")
            Dim strsql As String = "SELECT * From DB where DATA >=#" & ComboBox1.Text & "# And Data <=# " & DateTimePicker1.Value & "#"
            Using dta As New OleDbDataAdapter(strsql, OLEConnection)
                Dim dts As New DataSet
                dta.Fill(dts)
                DataGridView1.DataSource = dts.Tables(0)
            End Using
    
    
            DataGridView1.Refresh()
            dt = Convert.ToDateTime(DateTimePicker1.Value)
            dt = dt.AddDays(-1)
            DateTimePicker1.Value = dt.ToString("dd/MM/yyyy")
    
    
            If OLEConnection.State = ConnectionState.Closed Then
                OLEConnection.Open()
            End If
            Dim mysql As String = "select sum(DOSE) from DB where DATA >=#" & ComboBox1.Text & "# And Data <=# " & DateTimePicker1.Value & "#"
            Using cmd As New OleDbCommand(mysql, OLEConnection)
                Label4.Text = "Totale Dose: " & cmd.ExecuteScalar.ToString
            End Using
            If OLEConnection.State = ConnectionState.Open Then
                OLEConnection.Close()
            End If
        End Sub

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2014
    residenza
    Vicenza
    Messaggi
    318
    è normale, perchè tu pensi solo alla data, ma in realtà nel campo del database c'è anche l'orario

    Infatti, se ad esempio tu fai
    Data <= #07/07/2023#
    lui considera l'orario 00:00
    e tutti i record che hanno la data 07/07/2023avranno probabilmente anche l'orario e quindi è normale che non ti trovi i record corretti

  6. #6
    Quote Originariamente inviata da SirJo Visualizza il messaggio
    è normale, perchè tu pensi solo alla data, ma in realtà nel campo del database c'è anche l'orario

    Infatti, se ad esempio tu fai
    Data <= #07/07/2023#
    lui considera l'orario 00:00
    e tutti i record che hanno la data 07/07/2023avranno probabilmente anche l'orario e quindi è normale che non ti trovi i record corretti
    Quindi tu come procederesti?

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2014
    residenza
    Vicenza
    Messaggi
    318
    ad esempio formattando a dovere le due date, ad esempio:
    codice:
    Dim DallaData As Date = ' qui ci metto da che data partire
    Dim AllaData As Date = ' qui ci metto fino a che data arrivare
    Dim mysql As String = "select sum(DOSE) from DB where DATA >=#" & DallaData.ToString("MM/dd/yyyy") & "00:00:00# And Data <=#" & AllaData.ToString("MM/dd/yyyy") & "23:59:59#"

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Occhio agli spazi tra data e orario
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Occhio agli spazi tra data e orario
    Eseguito il suggerimento.

  10. #10
    Quote Originariamente inviata da SirJo Visualizza il messaggio
    ad esempio formattando a dovere le due date, ad esempio:
    codice:
    Dim DallaData As Date = ' qui ci metto da che data partire
    Dim AllaData As Date = ' qui ci metto fino a che data arrivare
    Dim mysql As String = "select sum(DOSE) from DB where DATA >=#" & DallaData.ToString("MM/dd/yyyy") & "00:00:00# And Data <=#" & AllaData.ToString("MM/dd/yyyy") & "23:59:59#"
    sembra funzionare, grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.