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
возникает ошибка при заполнении таблицы данных..почему...как я могу это исправить. пожалуйста, помогите
НЕТ, все правильно, после предоставления POExpireDate pblm Coming
Если столбец POExpireDate имеет тип даты или даты и времени, передайте дату как DateTime (псевдоним VB Date), а не как String: cmd.Parameters.AddWithValue("@LogDate", DateTime.Now). Параметры команды не вызывают конкатенацию строк SQL, а передаются в базу данных «как есть» вместе с неизмененным SQL.
Dim strSql As String = "Выберите EmpName, Count (EmpName) из tblPO, где OrderType = '" & "B2B" & "' и POExpireDate < @LogDate Group By EmpName" cmd.Parameters.AddWithValue ("@LogDate", CType (Date .Сегодня, ДатаВремя))
дано так .... все тот же pblm
Dim strSql As String = "Выберите EmpName, Count (EmpName) из tblPO, где OrderType = '" & "B2B" & "' и POExpireDate < @LogDate Group By EmpName" cmd.Parameters.AddWithValue ("@LogDate", CType (Date .Today, DateTime)) Дано вот так еще Тот же pblm
Итак, если вы удалите и POExpireDate < @LogData (и, конечно, параметр), ваш код работает?
OLEDB использует позиционные параметры. Попробуйте заменить @LogDate на ? в команде SQL. См. "Примечания" в Класс ОлеДбпараметр. Примечание: в CType(Date.Today, DateTime)CType бесполезен, так как Date.Today уже является DateTime.





Ваша проблема в том, что вы передаете свой 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
Если мой ответ был полезен, пожалуйста, примите его как ответ, нажав на галочку (галочку) слева от ответа.
Проверьте, не ошиблись ли вы в некоторых именах столбцов или даже в имени таблицы. Эта ошибка часто возникает из-за неправильного написания