Получение "Number" из Sql VB. NET System.Data.OleDb.OleDbException: 'Несоответствие типов данных в выражении критериев.' - PullRequest
0 голосов
/ 27 апреля 2020

Если я хочу получить значение, которое сохраняется как число в базе данных доступа.

Я использую следующее:

            Dim sql As String = "SELECT ArithmeticScore FROM " & tablename & " WHERE DateAscending = '" & todaysdate & "'"
            Using connection As New OleDbConnection(getconn)
                Using command As New OleDbCommand(sql, connection)
                    connection.Open()
                    scorevalue = CDec(command.ExecuteScalar()) 'Data type mismatch in criteria expression.
                    connection.Close()
                End Using
            End Using
            MsgBox(scorevalue)

getconn = строка подключения в виде строки

scorevalue = Ничто в виде десятичного числа

Поле ArithmeticScore в таблице установлено на Number.

Точное значение в ячейке сейчас 50, но программа должна учитывать любое десятичное значение.

Ошибка я получаю "Несоответствие типов данных в выражении критериев".

1 Ответ

0 голосов
/ 27 апреля 2020

Указанное в сообщении об ошибке criteria expression не относится к выводу ArithmeticScore. Речь идет о предложении WHERE. То, что у вас есть для todaysdate, не соответствует тому, что база данных ожидает для столбца DateAscending.

Поскольку OleDb является универсальным c провайдером, мы точно не знаем, какую базу данных вы используете. Вы говорите, но большинство баз данных имеют способ получить текущее значение даты в SQL: getdate(), current_timestamp, et c. Использование этого механизма, скорее всего, разрешит конфликт, и в первую очередь для этого не нужно использовать конкатенацию строк.

Dim sql As String = "SELECT ArithmeticScore FROM " & tablename & " WHERE DateAscending = Date()"

Другой способ исправить это с помощью правильных параметризованных запросов , что вы должны делать в любом случае. НИКОГДА нормально использовать конкатенацию строк для замены данных в запросе SQL, и если вам нужно подумать о том, как отформатировать строку даты или числа для использования в команде SQL, вы почти всегда делаем что-то очень неправильное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...