* Lo 1º que he hecho es comprobar que las variables de la query tengan valor, reciben el valor correcto.
* Lo 2º ha sido comprobar que la query funciona fuera de código. Funciona y además he provado con los mismo valores que recibiría. Me devuelve valores correctos.
Lo raro de lo que me sucede es que los días festivos me los marca bien pero los otros no, sin embargo estoy utilizando el mismo proceso.
He revisado el código muchas veces y no consigo encontrar el error.
Código:
Espero que me puedan ayudar ya que llevo un par de días con esto y no puedo perder más tiempo. Muchas gracias. '****************************************************************************************** '*************************************** CALENDARIO *************************************** '****************************************************************************************** Private dsHolidays As DataSet Private dsNoMoved As DataSet Protected Sub activarcalendario(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnusuariocalendario.Click MyCalendar.VisibleDate = Date.Today FillHolidayDataset() End Sub Protected Sub FillHolidayDataset() Dim firstDate As New DateTime(MyCalendar.VisibleDate.Year, MyCalendar.VisibleDate.Month, 1) Dim lastDate As DateTime = GetFirstDayOfNextMonth() Dim today As DateTime = Date.Today dsHolidays = GetCurrentMonthData(firstDate, lastDate) dsNoMoved = GetCurrentMonthNoMoved(firstDate, today) End Sub Protected Sub Calendar1_VisibleMonthChanged(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.MonthChangedEventArgs) Handles MyCalendar.VisibleMonthChanged FillHolidayDataset() End Sub Protected Function GetFirstDayOfNextMonth() As DateTime Dim monthNumber, yearNumber As Integer If MyCalendar.VisibleDate.Month = 12 Then monthNumber = 1 yearNumber = MyCalendar.VisibleDate.Year + 1 Else monthNumber = MyCalendar.VisibleDate.Month + 1 yearNumber = MyCalendar.VisibleDate.Year End If Dim lastDate As New DateTime(yearNumber, monthNumber, 1) Return lastDate End Function Function GetCurrentMonthData(ByVal firstDate As DateTime, ByVal lastDate As DateTime) As DataSet Dim dsFestivos As New DataSet Try Dim cs As ConnectionStringSettings cs = ConfigurationManager.ConnectionStrings("MiConexion") Dim connString As String = cs.ConnectionString Dim dbConnection As New SqlConnection(connString) Dim queryfestivos As String = "SELECT fecha_fest FROM fechas_festivos WHERE fecha_fest >= @firstDate AND fecha_fest < @lastDate" Dim dbCommand As New SqlCommand(queryfestivos, dbConnection) dbCommand.Parameters.Add(New SqlParameter("@firstDate", firstDate)) dbCommand.Parameters.Add(New SqlParameter("@lastDate", lastDate)) Dim sqlDataAdapter As New SqlDataAdapter(dbCommand) sqlDataAdapter.Fill(dsFestivos) Me.Label7.Text = lastDate Catch ex As Exception Me.lblerrorcalendario.Text = ex.ToString End Try Return dsFestivos End Function Function GetCurrentMonthNoMoved(ByVal firstDate As DateTime, ByVal today As DateTime) As DataSet Dim dsNoMovido As New DataSet Dim usuario As String = Me.tbusuariocalendario.Text Me.Label5.Text = usuario Me.Label6.Text = firstDate Me.Label8.Text = today Try Dim cs As ConnectionStringSettings cs = ConfigurationManager.ConnectionStrings("MiConexion") Dim connString As String = cs.ConnectionString Dim dbConnection As New SqlConnection(connString) Dim querynomovido As String = "SELECT no_movido.fecha FROM no_movido, (SELECT id_vehiculo AS id_veh FROM vehiculo_adapt WHERE vehiculo_adapt.usuario = @usuario) WHERE no_movido.fecha >= @firstDate AND no_movido.fecha < @today AND no_movido.id_vehiculo = id_veh" Dim dbCommand As New SqlCommand(querynomovido, dbConnection) dbCommand.Parameters.Add(New SqlParameter("@usuario", usuario)) dbCommand.Parameters.Add(New SqlParameter("@firstDate", firstDate)) dbCommand.Parameters.Add(New SqlParameter("@today", today)) Dim sqlDataAdapter As New SqlDataAdapter(dbCommand) sqlDataAdapter.Fill(dsNoMovido) Catch ex As Exception Me.lblerrorcalendario.Text = ex.ToString End Try Return dsNoMovido End Function Protected Sub Calendar1_DayRender(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DayRenderEventArgs) Handles MyCalendar.DayRender Dim nextDate As DateTime 'Deshabilitamos todos los días If e.Day.IsOtherMonth Or Not e.Day.IsOtherMonth Then e.Day.IsSelectable = False End If 'Pintamos los no movidos y los habilitamos If Not dsNoMoved Is Nothing Then For Each dr As DataRow In dsNoMoved.Tables(0).Rows nextDate = CType(dr("fecha"), DateTime) If nextDate = e.Day.Date Then e.Cell.BackColor = System.Drawing.Color.CornflowerBlue e.Day.IsSelectable = True End If Next End If 'Pintamos los festivos If Not dsHolidays Is Nothing Then For Each dr As DataRow In dsHolidays.Tables(0).Rows nextDate = CType(dr("fecha_fest"), DateTime) If nextDate = e.Day.Date Then e.Cell.BackColor = System.Drawing.Color.Tomato End If Next End If End Sub