Sql server 如何在.hta代码中添加日期范围?

Sql server 如何在.hta代码中添加日期范围?,sql-server,vbscript,hta,Sql Server,Vbscript,Hta,我编写了一个hta应用程序,它使用一个搜索参数 使用此搜索参数,用户可以按firstname、lastname或两者进行搜索 这真的很有效 今天,管理层决定添加日期范围作为搜索的一部分 我尝试构建WHERE子句,用户可以在其中使用lastname、firstname或两者都搜索,或者使用日期范围搜索,但不能同时使用两者 换句话说,一方面,用户可以使用名为txtsrch的表单变量按lastname、first name或两者进行搜索 或者他们可以只使用日期范围,使用fromMDY作为fromDat

我编写了一个hta应用程序,它使用一个搜索参数

使用此搜索参数,用户可以按firstname、lastname或两者进行搜索

这真的很有效

今天,管理层决定添加日期范围作为搜索的一部分

我尝试构建WHERE子句,用户可以在其中使用lastname、firstname或两者都搜索,或者使用日期范围搜索,但不能同时使用两者

换句话说,一方面,用户可以使用名为txtsrch的表单变量按lastname、first name或两者进行搜索

或者他们可以只使用日期范围,使用fromMDY作为fromDate,toMDY作为toDate

到目前为止,效果并不理想

无论是在“名称搜索”框中输入搜索还是选择日期范围,都会出现类型不匹配错误

当它只是一个搜索框时,我没有得到类型不匹配错误

非常感谢您的帮助

这是最低限度的,我认为相关的代码

日期为2013年1月1日

'*
Const cOPT=“?”
'*
从MDY变暗(2)
昏暗的汤米(2)
Dim optMDY(2)
optMDY(0)=“”
optMDY(1)=“
optMDY(2)=“
昏暗的我
'*
对于i=1到12
optMDY(0)=optMDY(0)&vbCrLf&Replace(cOPT,“?”,i)
下一个
对于i=1到31
optMDY(1)=optMDY(1)&vbCrLf&Replace(cOPT,“?”,i)
下一个
对于i=年(日期)+1到年(日期)-4步骤-1
optMDY(2)=optMDY(2)&vbCrLf&Replace(cOPT,“?”,i)
下一个
子选择(什么)
选择案例什么
案例“FromMonth”
fromMDY(0)=FromMonth.Value
案例“FromDay”
fromMDY(1)=FromDay.Value
案例“FromYear”
fromMDY(2)=FromYear.值
“明天”一案
toMDY(0)=第n个值
案例“今天”
toMDY(1)=今天。价值
案例“ToYear”
toMDY(2)=今年的价值
结束选择
端接头
子显示日期()
MsgBox“From:”&vbTab&Join(fromMDY,“/”&vbCrlf)_
&收件人:“&vbTab&Join(toMDY,”/”)
端接头
第一:我们在WHERE中使用AND或or或between子句吗?
'和或=和或值
子无线电检查()
对于在和或中的每个b
如果b.已检查,则与或=b.值
下一个
端接头
“现在在何处建立:
where=“”
tsrch=txtsrch.Value
如果tsrch为“”,则
where=where&“Name=”&Replace(tsrch,”,“”)&“
如果结束
如果fromMDY“”和toMDY“”,则
其中=where&“转换(datetime,(left(dispdt,2)+'/'+子字符串(dispdt,3,2)+'/'+case-when-cast-cast-cast(right(dispdt,2)as-int)>=70然后是'19'否则'20'结束+右(dispdt,2)),101)介于'&fromMDY&''和'&toMDY&'”
如果结束
“注意sql注入策略
SQL_query=“从PCS60418中选择TOP 1000名称、Rel、Estno、dtfild、pub、[文档类型]文档类型、btyp、bkno、disp、dispdt、PGNO外部参照,其中”\u
&在哪里
msgBox sql\u查询

VBScript不区分大小写<代码>和或与
和或
完全相同,因此如果要执行此操作:

Sub radiocheck()
    for each b in ANDOR
        if b.checked Then AndOr = b.Value
    next
End Sub
您正在为
和或
分配一个原语,该原语与
和或
类型的
数组或
可迭代对象冲突。只需重命名两个变量中的一个,然后再试一次


为防止将来出现此类错误:使用
Option Explicit
,使用正确的(一致的)变量命名和正确的作用域:尽可能在本地将变量传递给子例程,而不是将其用作全局变量。

感谢您的回复。对不起,我错过了这么久。我很感激你的解释,但这不是问题所在。即使在评论了这一点之后,我仍然得到同样的错误。这与“where”有关,我建议您在问题中添加SQL标记,以便熟悉该领域的专家也能看到问题。并添加一些由HTA组装的无法工作的查询。不是每个知道SQL的人都能够(或愿意)阅读你文章中的VBScript。嗨@Cheran,我看到你完全编辑了我的问题。非常感谢。我可以知道你改变了什么,为什么吗?谢谢您可以单击我名字上方的时间戳(例如,“21小时前编辑”)查看修订历史记录。我只是删除了问候语(这并没有给问题增加任何价值),并添加了一个语言提示,以便语法颜色正确。