将 HTML 表单日期传递给 VB 变量以进行 SQL 插入
Posted
技术标签:
【中文标题】将 HTML 表单日期传递给 VB 变量以进行 SQL 插入【英文标题】:Pass HTML Form Date to VB Variable for SQL insertion 【发布时间】: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 【参考方案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。以上是关于将 HTML 表单日期传递给 VB 变量以进行 SQL 插入的主要内容,如果未能解决你的问题,请参考以下文章
将日期从 HTML 表单传递到 servlet 到 SQL 数据库
Zeppelin 动态表单:如何将变量传递给动态表单——或者——重用动态表单
如何将变量从外部 JavaScript 传递到 HTML 表单