我有两个表 SupplierTable 和日历,两个表都有一个名为 SupplierName 的列。我在名为 SuppplierDetails.aspx 的页面上有一个asp日历功能。
此页面上的所有详细信息都从数据库连接调用 SupplierTable 并显示在标签中。我需要我的日历功能来突出显示 CalendarTable 中的日期,其中 SupplierName 等于当前页面上的 SupplierName 名称(等于当前标签)。
我的查询:
"SELECT Date FROM Calendar WHERE SupplierName= "+
Request.QueryString["SupplierName"] + "AND Date = @firstDate AND Date < @lastDate";
firstDate是当月的第一个日期,lastDate是当月的最后一个日期。 然后我使用DayRender方法将页面变为红色。
目前这给了我一个错误,我知道问题出在查询的WHERE部分,但找不到写代码来纠正它。如果我从WHERE子句中删除SupplilerName它可以工作 - 它只显示所有日历中的所有日期。我需要它只显示当前供应商的日期。 任何建议赞赏
答案 0 :(得分:1)
Using parameters应该解决这个问题。只需提出您的疑问:
"SELECT Date FROM Calendar WHERE SupplierName= @SupplierName AND Date = @firstDate AND Date < @lastDate";
您可以使用以下方式添加供应商名称参数:
oCMD.Parameters.Add("@SupplierName", SqlDbType.VarChar, 50).Value = Request.QueryString["SupplierName"];
也不是一个好主意
答案 1 :(得分:-1)
"SELECT Date FROM Calendar WHERE SupplierName= GeorgeAND Date = xx/xx/xx AND Date < yy/yy/yyy";
如果您的供应商名称是&#34; George&#34;,您将最终得到此查询:
layoutIfNeeded()
如您所见,您只需在AND之前有一个空格,否则它将被解释为一个单词。
答案 2 :(得分:-1)
我认为这可以解决您的问题
"SELECT Date FROM Calendar WHERE SupplierName= '"+
Request.QueryString["SupplierName"] + "' AND Date = @firstDate AND Date < @lastDate";
您应该使用debug mode
查看您的查询,以查看缺少单引号'
答案 3 :(得分:-2)
首先您需要使用连接操作加入两个表:
正确的查询是:SELECT Date FROM Calendar,SupplierTable WHERE SupplierName =“+ Request.QueryString [”SupplierName“] +”AND Date = @firstDate AND Date&lt; @lastDate