2014-10-01 2 views
0

У меня есть ASP Calendar. То, что я намереваюсь сделать, - это то, что когда пользователь нажимает дату из календаря, он обновляет gridview ниже, чтобы показать, что такое расписание в эту дату, но мой код бросает мне Поймать ех как исключениеИзвлечение данных из базы данных с помощью VB

Protected Sub calSched_SelectionChanged(sender As Object, e As EventArgs) Handles calSched.SelectionChanged 'Selecting a date 
    schedule.Value = calSched.SelectedDate.ToShortDateString() 

    Try 
     con = New MySqlConnection("Server=localhost;Database=;Uid=root;Pwd=;") 
     Using cmd = New MySqlCommand("SELECT sched_id, sched_date, sched_time, dent_lname FROM schedule_table INNER JOIN dentist_table WHERE sched_date = @p1", con) 
      cmd.Parameters.AddWithValue("@p1", schedule.Value.ToString) 
      con.Open() 
      dat = cmd.ExecuteReader() 
      Dim ds As New DataSet() 
      Dim a As New MySqlDataAdapter(cmd) 
      a.Fill(ds) 
      grdSched.DataSource = ds 
      While (dat.Read()) 
       grdSched.DataBind() 
      End While 
      con.Close() 
     End Using 
    Catch ex As Exception 
     lblMessage.Text = "Cannot recover schedule" 
    End Try 

End Sub 

Schedule.value.tostring является поле ввода, обновления, когда пользователь нажимает, любое предложение?

Schedule_table - sched_id (первичный ключ, автоматический Increment), sched_date (VARCHAR 25), sched_time (VARCHAR 9), dent_id (INT 6, Unsigned ZEROFILL, внешний ключ)

Dentist_table - dent_id (первичный ключ, Авто Приращение, Int 6, неподписанные ZEROFILL), dent_fname, dent_lname

+0

Если 'Schedule' это текстовое поле, почему я не' Schedule.Text' – OneFineDay

+0

было неправильно жаль, это было поле ввода – piece

+0

Вам не нужен читатель i f вы используете Fill, а dataSource должен быть DataTable, а не DataSet. – OneFineDay

ответ

0

Попробуйте что-то вроде этого:

Protected Sub calSched_SelectionChanged(sender As Object, e As EventArgs) Handles calSched.SelectionChanged 'Selecting a date 
schedule.Value = calSched.SelectedDate.ToShortDateString() 

Try 
    con = New MySqlConnection("Server=localhost;Database=;Uid=root;Pwd=;") 
    Using cmd = New MySqlCommand("SELECT sched_id, sched_date, sched_time, dent_lname FROM schedule_table WHERE sched_date = @p1", con) 
     cmd.Parameters.AddWithValue("@p1", schedule.Value.ToString) 
     con.Open() 
     Dim ds As New DataSet() 
     Dim a As New MySqlDataAdapter(cmd) 
     a.Fill(ds) 
     grdSched.DataSource = ds.Tables(0) 
     grdSched.DataBind() 
    End Using 
Catch ex As Exception 
    lblMessage.Text = "Cannot recover schedule" 
Finally 
    con.Close() 'this block will always run, close it here error or not 
End Try 

End Sub 
+0

Все еще дает мне возможность восстановить расписание – piece

+0

Я не думаю, что ваш SQL-оператор верен, можете ли вы показать структуры таблиц ?, – OneFineDay

+0

Типичные JOINS: 'Где table1.field = table2. поле ' – OneFineDay

Смежные вопросы