У меня есть страница, на которой я пытаюсь заполнить gridview (gvClockings) нажатием кнопки на основе выбора в раскрывающемся списке (cbLocation) и даты от/до, введенной в текстовые поля из календаряextender (txtFrom и txtTo).
Я протестировал оператор SQL, и он получает ожидаемые результаты, если я запускаю его в Access (и у меня есть аналогичный SQL, отлично работающий с gridview в другой форме в этом решении), однако в этой форме независимо от того, что я выбираю в 3 управления, gridview не будет отображать никаких записей.
cbLocation заполняется в Page_Load, как показано ниже:
If Not Page.IsPostBack Then
Dim ddl As DropDownList = cbLocation
Dim ir As ListItem = New ListItem
Dim ee As ListItem = New ListItem
ir.Text = "IR Room"
ir.Value = "IR Room"
ee.Text = "Employee Exit"
ee.Value = "Employee Exit"
ddl.Items.Add(ir)
ddl.Items.Add(ee)
End If
Затем у меня есть приведенный ниже код для получения данных и заполнения сетки:
Private Sub GetClockings(ByVal LLName As String, ByVal FromDate As String, ByVal ToDate As String)
Dim conclock As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; DATA SOURCE=\\xxx.xx.xxx.xx\AccuFace\pspcms.mdb;Jet OLEDB:Database Password=xxxxx;")
Dim daClocking As OleDbDataAdapter = New OleDbDataAdapter
Dim selectSQL As String = "SELECT efrLog.LFirstName, efrLog.LLastName, efrLog.LDepartment, efrLog.LDate, efrLog.LTime, efrLog.LType, efrLog.LLName FROM efrLog WHERE (((efrLog.LDate) Between [@FROMDATE] And [@TODATE]) AND ((efrLog.LLName)=[@LLName])) ORDER BY efrLog.LDepartment, efrLog.LTime"
Dim selectCMD As OleDbCommand = New OleDbCommand(selectSQL, conclock)
daClocking.SelectCommand = selectCMD
selectCMD.Parameters.AddWithValue("@LLName", LLName)
selectCMD.Parameters.AddWithValue("@FROMDATE", FromDate)
selectCMD.Parameters.AddWithValue("@TODATE", ToDate)
Dim dsClockings As DataSet = New DataSet
daClocking.Fill(dsClockings, "efrLog")
If dsClockings.Tables("efrLog").Rows.Count > 0 Then
gvClockings.DataSource = dsClockings.Tables("efrLog")
gvClockings.DataBind()
Else
lblNotFound.Text = "No clockings found for this location"
lblNotFound.Visible = True
Exit Sub
End If
End Sub
Приведенный выше код вызывается из Button_click, как показано ниже:
Dim LLName As String
Dim FromDate As String = txtFrom.Text
Dim ToDate As String = txtTo.Text
If cbLocation.SelectedValue = "IR Room" Then
LLName = "IR Room"
GetClockings(LLName, FromDate, ToDate)
End If
If cbLocation.SelectedValue = "Employee Exit" Then
LLName = "Employee Exit"
GetClockings(LLName, FromDate, ToDate)
End If
lblLocation.Text = "Clocking report for " & cbLocation.SelectedValue.ToString() & " generated on " & Date.Now
lblLocation.Visible = True
Я отлаживал локально, насколько это возможно (я использую базу данных доступа на удаленном сервере из IIS, поэтому получаю ошибки, связанные со строкой подключения/разрешениями, при попытке заполнить набор данных при локальном запуске. Я знаю, что это ужасная настройка, но это то, что Мне дали поработать, и я не знаю, как отлаживать удаленно) и, насколько я вижу, параметры получают правильные значения (см. Ниже)
Данные, которые я запрашиваю из базы данных, определенно существуют, поэтому я совершенно не понимаю, почему не заполняется gridview. Любая помощь будет принята с благодарностью. Спасибо