So I am trying to monitor events in my Log database using a semi-complex query, the query works in Access perfectly fine, but when I try to run it in my application, I get the same error every time.

Code:
The Microsoft Office Access database engine does not recognize '@user' as a valid field name or expression.
I get this error when I try to name my OleDbDataReader

I have never used a query like this in VB .Net before and am clueless as to why I can't get it to work

VB .net Code:
  1. Public Function GetUserDetail(ByVal user As String, ByVal ndate As Date) As DataTable
  2.         Dim dt As New DataTable
  3.         Using conn As New OleDbConnection(accessConn)
  4.             Dim cmdtext As String
  5.             cmdtext = "TRANSFORM Count(Log.ControlNumber) AS CountOfControlNumber "
  6.             cmdtext = cmdtext + "SELECT Log.User, Log.StartStatus, Log.EndStatus, Count(Log.ControlNumber) AS TOTAL "
  7.             cmdtext = cmdtext + "FROM(Log) "
  8.             cmdtext = cmdtext + "WHERE (((Log.User)=@user) AND ((DateValue([DateChanged]))=@date)) "
  9.             cmdtext = cmdtext + "GROUP BY Log.User, Log.StartStatus, Log.EndStatus "
  10.             cmdtext = cmdtext + "PIVOT Hour(Format([DateChanged],'Short Time'));"
  11.             Dim cmd As New OleDbCommand(cmdtext, conn)
  12.             cmd.Parameters.AddWithValue("@user", user)
  13.             cmd.Parameters.AddWithValue("@date", ndate.ToString("MM-dd-yyyy"))
  14.             conn.Open()
  15.             Dim rdr As OleDbDataReader = cmd.ExecuteReader
  16.             dt.Load(rdr)
  17.             conn.Close()
  18.             Return dt
  19.         End Using
  20.     End Function

I am getting the values for "user" and "ndate" as so

VB .net Code:
  1. Private Sub dgvGroupA_CellDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvGroupA.CellDoubleClick
  2.         dgvUserDetail.DataSource = GetUserDetail(dgvGroupA.SelectedCells.Item(0).ToString, dtpSearchDate.Value.Date)
  3.     End Sub