Значение Vb.net NO указано для одного или нескольких заданных параметров

Dim cmd As OleDbCommand = New OleDbCommand(Sql, con)
Dim strSql As String = "Select EmpName,Count(EmpName) from tblPO where OrderType='" &
                           "B2B" & "' and POExpireDate < @LogDate Group By EmpName"
Dim tstDate As DateTime = DateTime.Now
Dim dateAsString As String = tstDate.ToString("dd/MM/yy")
cmd.Parameters.AddWithValue("@LogDate", CType(dateAsString, String))
Dim dtb As New DataTable

Using dad As New OleDbDataAdapter(strSql, con)
    dad.Fill(dtb)
End Using
con.Close()

Я работаю в VB.NET

NO value given for one or more given parameters

возникает ошибка при заполнении таблицы данных..почему...как я могу это исправить. пожалуйста, помогите

Проверьте, не ошиблись ли вы в некоторых именах столбцов или даже в имени таблицы. Эта ошибка часто возникает из-за неправильного написания

Steve 10.02.2019 16:07

НЕТ, все правильно, после предоставления POExpireDate pblm Coming

Rose Jack 10.02.2019 16:11

Если столбец POExpireDate имеет тип даты или даты и времени, передайте дату как DateTime (псевдоним VB Date), а не как String: cmd.Parameters.AddWithValue("@LogDate", DateTime.Now). Параметры команды не вызывают конкатенацию строк SQL, а передаются в базу данных «как есть» вместе с неизмененным SQL.

Olivier Jacot-Descombes 10.02.2019 16:11

Dim strSql As String = "Выберите EmpName, Count (EmpName) из tblPO, где OrderType = '" & "B2B" & "' и POExpireDate < @LogDate Group By EmpName" cmd.Parameters.AddWithValue ("@LogDate", CType (Date .Сегодня, ДатаВремя))

Rose Jack 10.02.2019 16:14

дано так .... все тот же pblm

Rose Jack 10.02.2019 16:14

Dim strSql As String = "Выберите EmpName, Count (EmpName) из tblPO, где OrderType = '" & "B2B" & "' и POExpireDate < @LogDate Group By EmpName" cmd.Parameters.AddWithValue ("@LogDate", CType (Date .Today, DateTime)) Дано вот так еще Тот же pblm

Rose Jack 10.02.2019 16:16

Итак, если вы удалите и POExpireDate < @LogData (и, конечно, параметр), ваш код работает?

Steve 10.02.2019 16:20

OLEDB использует позиционные параметры. Попробуйте заменить @LogDate на ? в команде SQL. См. "Примечания" в Класс ОлеДбпараметр. Примечание: в CType(Date.Today, DateTime)CType бесполезен, так как Date.Today уже является DateTime.

Olivier Jacot-Descombes 10.02.2019 16:23
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
8
29
1

Ответы 1

Ваша проблема в том, что вы передаете свой strSql и соединение с адаптером данных, но не команду, которая содержит параметр. Вместо этого передайте команду

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    'Using blocks ensure that your database objects are 
    'Closed And Disposed even if there Is an error.
    Dim dtb As New DataTable
    Using con As New OleDbConnection("Your connection string")
        Dim strSql As String = "Select EmpName,Count(EmpName) from tblPO where OrderType = 'B2B' and POExpireDate < @LogDate Group By EmpName;"
        Using cmd As OleDbCommand = New OleDbCommand(strSql, con)
            cmd.Parameters.Add("@LogDate", OleDbType.Date).Value = DateTime.Now
            'On the next line pass the command, no need to pass connection
            'because it has already been passed to the constructor of the command
            Using dad As New OleDbDataAdapter(cmd)
                dad.Fill(dtb)
            End Using
        End Using
    End Using
End Sub

Если мой ответ был полезен, пожалуйста, примите его как ответ, нажав на галочку (галочку) слева от ответа.

Mary 11.02.2019 05:45

Другие вопросы по теме