使用预定义过滤器过滤SQL查询

时间:2015-05-03 21:31:19

标签: asp.net sql-server vb.net tsql filtering

我在下面粘贴了我的代码。我想要做的是使用当天过滤一组数据。 'day'字段存储为缩写的日期名称,因此星期四的“星期四”等。这完全正常,除非您将日期过滤器更改为其他内容,当天的选项不起作用。

例如,今天是星期天。当页面加载时,它会过滤掉所有不适用于星期日的列表。在一小组LinkButton控件上,如果您点击一周中的任何其他日期,它将更改并再次显示所选日期的选项。但是,当您尝试再次将过滤器设置为星期日,或单击“今天”按钮时,它将不会更改。

根据我的代码,任何人都可以看到有什么问题吗?如果有任何帮助,我的数据就在远程SQL服务器上。

VB代码:

Dim DateVal As Date = DateTime.UtcNow()
Dim DateName As String = DateVal.ToString("ddd")

Protected Sub btnMon_Click(sender As Object, e As EventArgs) Handles btnMon.Click
    SqlDataSource1.SelectParameters("FiltDay").DefaultValue = "Mon"
End Sub

Protected Sub btnTue_Click(sender As Object, e As EventArgs) Handles btnTue.Click
    SqlDataSource1.SelectParameters("FiltDay").DefaultValue = "Tue"
End Sub

Protected Sub btnWed_Click(sender As Object, e As EventArgs) Handles btnWed.Click
    SqlDataSource1.SelectParameters("FiltDay").DefaultValue = "Wed"
End Sub

Protected Sub btnThu_Click(sender As Object, e As EventArgs) Handles btnThu.Click
    SqlDataSource1.SelectParameters("FiltDay").DefaultValue = "Thu"
End Sub

Protected Sub btnFri_Click(sender As Object, e As EventArgs) Handles btnFri.Click
    SqlDataSource1.SelectParameters("FiltDay").DefaultValue = "Fri"
End Sub

Protected Sub btnSat_Click(sender As Object, e As EventArgs) Handles btnSat.Click
    SqlDataSource1.SelectParameters("FiltDay").DefaultValue = "Sat"
End Sub

Protected Sub btnSun_Click(sender As Object, e As EventArgs) Handles btnSun.Click
    SqlDataSource1.SelectParameters("FiltDay").DefaultValue = "Sun"
End Sub

Protected Sub btnAll_Click(sender As Object, e As EventArgs) Handles btnToday.Click
    SqlDataSource1.SelectParameters("FiltDay").DefaultValue = DateName
End Sub

Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
    SqlDataSource1.SelectParameters("FiltDay").DefaultValue = DateName
End Sub

TSQL(如果有帮助)

SELECT        Schedule.SlotID, RIGHT('00' + CONVERT(VARCHAR(2), Schedule.StartHr), 2) + ':' + RIGHT('00' + CONVERT(VARCHAR(2), Schedule.StartMin), 2) AS StartTime, 
                     Schedule.ProgrammeID, Schedule.Day, RIGHT('00' + CONVERT(VARCHAR(2), Schedule.EndHr), 2) + ':' + RIGHT('00' + CONVERT(VARCHAR(2), Schedule.EndMin), 2) 
                     AS EndTime, Programmes.ProgrammeName, Programmes.Description, Programmes.PresenterID, Presenters.PresenterName, Presenters.PhotoURL
FROM            Presenters CROSS JOIN
                     Programmes CROSS JOIN
                     Schedule
WHERE        (Schedule.Day = @FiltDay)

1 个答案:

答案 0 :(得分:0)

可能与您的问题没有100%相关,但您不应该在不同控件的情况下处理数据源初始化。

您需要填写sql参数,以便处理数据源的Selecting事件。

单击按钮为变量inputFile设置正确的值,并在选择数据源时使用变量填充sql参数。

以这种方式行事,您可以轻松发现投入电话的实际价值并确定问题。