将 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表单变量传递给Django中的python函数

将日期从 HTML 表单传递到 servlet 到 SQL 数据库

Zeppelin 动态表单:如何将变量传递给动态表单——或者——重用动态表单

如何将变量从外部 JavaScript 传递到 HTML 表单

如何将 vb.net 中日期的空值传递给 sql 存储过程?

onchange事件如何将日期值传递给javascript