【问题标题】:Pass HTML Form Date to VB Variable for SQL insertion将 HTML 表单日期传递给 VB 变量以进行 SQL 插入
【发布时间】:2014-12-05 18:10:18
【问题描述】:

好的,我有这个简单的 ASP 页面 (summary.asp) - 查看代码:

<HTML>
<body>

<form action = "Summary.asp" method="post">
Select A day: <input type ="date" name = "selectedDate" />
<input type="submit" value = "Submit"/>
</form>

<%    
Dim SelectedDate
Set SelectedDate = Date
SelectedDate=Request.Form("selectedDate")

在此之后我想使用选择的日期作为 SQL 查询的一部分:

IF SelectedDate<>"" THEN
SQL = "select LOCATION_NAME, [Product Code], sum(SalesQuantity) As Units from [Sales Data] where   EventEndDate = convert(date, getdate()) Group by  [Product Code],LOCATION_NAME"
...
End IF
%>

我打算用表单中选择的日期替换“convert(date, getdate())”。

我还没有到将表单中的日期插入 SQL 字符串的部分。我知道 HTML 表单中的日期格式是正确的 SQL 格式(yyyy-mm-dd),但看起来 VB 不喜欢这种格式作为日期?也许我只是遗漏了一些东西,但我们将不胜感激。

谢谢...希望它有意义。

【问题讨论】:

  • "但是看起来 VB 不喜欢这种格式作为日期?"这是什么意思?
  • 就目前而言,我收到“需要对象 '12/5/2014' 消息。我在没有 SET SelectDatesection 的情况下尝试过,但是......它也不会那样做。
  • 您在哪里/何时收到该消息?如果您需要帮助,则必须更具体一些。
  • 这只是一个想法。我不确定是什么问题。
  • 当然!如果我在浏览器中访问 localhost/summary.asp,我会收到以下消息: Microsoft VBScript 运行时错误 '800a01a8' Object required: '12/5/2014' /pickadaysummary.asp, line 23

标签: html sql forms date asp-classic


【解决方案1】:

据我所知,您的主要问题是您正试图明确声明您的 SelectedDate 类型。不要这样做。在 VBScript 中,所有变量的类型都是 variant,所以你不需要声明它们的类型。这样您就可以删除该行:

Set SelectedDate = Date

之后,像这样使用CDate 转换字符串应该很简单

SelectedDate = CDate(Request.Form("selectedDate"))

然后对于您的 SQL 行,您可以像这样添加它

SQL = "select LOCATION_NAME, [Product Code], sum(SalesQuantity) As Units " &_
        "from [Sales Data] where EventEndDate = " &_
        SelectedDate  &_
        " Group by  [Product Code],LOCATION_NAME"

另外注意考虑参数化查询,因为这种格式对于 SQL 注入攻击来说已经成熟了。

【讨论】:

  • 天才。尽管它需要在 SelectedDate 周围加上单引号。补充说,就像一个chram。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-08
  • 1970-01-01
  • 1970-01-01
  • 2016-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多