SaintKev
SaintKev

Reputation: 33

Oledb No Value Given for one or more required parameters VB.NET

I can anyone tell me whats wrong with my code? I am a complete novice here and this is the first time I have tried writing something in quite a while,

The below code should be updating two fields in an access database

Private Sub TestButton_Click(sender As Object, e As EventArgs) Handles TestButton.Click
    'connects application to database
    Dim ConnString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\DatabasePath\database.accdb"
    Dim SqlString As String = "update SaintStaff set [StaffHours]=[@CAHours],[RecordedTime]=[@Time] where [StaffName] = " & Label2.Text & ""

    'updates record in  SaintStaff table.
    Using conn As New OleDbConnection(ConnString)
        conn.Open()
        Using cmd As New OleDbCommand(SqlString, conn)
            cmd.CommandType = CommandType.Text
            cmd.Parameters.AddWithValue("[@CAHours]", Label6.Text)
            cmd.Parameters.AddWithValue("[@Time]", Label10.Text)
            cmd.ExecuteNonQuery()
        End Using
        conn.Close()
    End Using
End Sub

I am getting the following error System.Data.OleDb.OleDbException: 'No value given for one or more required parameters.'

and its highlighting the cmd text on each line, I cant tell what I am doing wrong, can anyone help?

Thank you

Upvotes: 0

Views: 1350

Answers (1)

SaintKev
SaintKev

Reputation: 33

This Question was answered by MatSnow and olivier-jacot-descombes in the comments, the correct code looks as follows

Private Sub TestButton_Click(sender As Object, e As EventArgs) Handles TestButton.Click
    'connects application to database
    Dim ConnString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\DatabasePath\Database.accdb"
    Dim SqlString As String = "update SaintStaff set StaffHours = @CAHours, RecordedTime = @Time where StaffName = @staffname "

    'updates record in  SaintStaff table.
    Using conn As New OleDbConnection(ConnString)
        conn.Open()
        Using cmd As New OleDbCommand(SqlString, conn)
            cmd.CommandType = CommandType.Text
            cmd.Parameters.Add("@CAHours", OleDbType.VarChar).Value = Label6.Text
            cmd.Parameters.Add("@Time", OleDbType.VarChar).Value = Label10.Text
            cmd.Parameters.Add("@Staffname", OleDbType.VarChar).Value = Label2.Text
            cmd.ExecuteNonQuery()
        End Using
        conn.Close()
    End Using
End Sub

Upvotes: 2

Related Questions