我在HTA中制作了这个动态搜索脚本,显示了我的所有笔记。
我想添加一个动态过滤器,基于两个复选框,按类型过滤我的SQL字符串:A,U和两者(A或U)。
当脚本加载时,它会完美运行并显示两种类型(A或U)的所有注释。但是,当我单击复选框时,我收到一条错误消息:“对象不支持属性或方法”(从我的语言翻译)。
我认为脚本相当简单,但我看不出问题。脚本searchdata
通过另一个脚本count2
(onkeyup)动态运行。我希望复选框的内容相同,因此勾选复选框后,会立即显示相应的结果。
希望我已经清楚并感谢!
包含搜索过滤器的VBScript
sub searchdata
If acheck.Checked = True AND ucheck.Checked = False Then
Chkboxval = "A"
End If
If acheck.Checked = False AND ucheck.Checked = True Then
Chkboxval = "U"
End If
If acheck.Checked = True AND ucheck.Checked = True Then
Chkboxval = "U' OR Type='A"
End If
If acheck.Checked = False AND ucheck.Checked = False Then
MsgBox ("Select a filter")
End If
SQL_query = "SELECT * FROM arbejde WHERE Title LIKE '%"& txtsrch.value &"%' AND Type='" & Chkboxval & "' ORDER BY Title"
Set rsData = conn.Execute(SQL_query)
strHTML2 = strHTML2 & "<table class='detail' cellpadding='0' cellspacing='0' id='detail' border=0 width='97%'><col style='width: 60%;'><col style='width: 31%;'><col style='width: 9%;'><thead><tr><th colspan='4' align='left'></th></tr></thead>"
If rsData.EOF = True Then
strHTML2 = strHTML2 & "<span style='color: red'>Ingen resultater!</span><br><a onClick='addNotat()' style='cursor: hand'>Klik her for at oprette et nyt notat</a>"
End If
Do Until rsData.EOF = True
If (rsData("Length") <> "") Then
infopic = "info-on"
infolink = "onclick=window.open('" & rsData("Length") & "')"
ELSE
infopic = "info-off"
infolink = ""
End IF
strHTML2 = strHTML2 & "<tbody id='bodytext'><tr class='parent' id='trparent' style='font-weight: bold;'><td id='title' height='21'>" & rsData("Title") & "</td><td id='kategori'>" & rsData("Cat") & " (" & rsData("Type") & ")</td><td align='right' id='tools'><img src='images/icons/"& infopic & ".png' width='13' height='13' title='Gå til forretningsgangen' "& infolink & "> <img src='images/icons/edit1.png' width='13' height='13' title='Rediger' onclick='editUser("& rsData("ID") &")' language='vbscript'> <img src='images/icons/slet1.png' width='13' height='13' onclick='deleteUser("& rsData("ID") &")' title='Slet' language='vbscript'> </td></tr><tr class='child'><td colspan='5' id='notat' height='21'>" & rsData("Notes") & "</td></tr></tbody>"
rsData.moveNext ' go to next record
Loop
strHTML2 = strHTML2 & "</table>"
searchIT.innerHTML = strHTML2
end sub
复选框:
<input type="checkbox" name="acheck" onclick="searchdata" id="acheck" checked>
<input type="checkbox" name="ucheck" onclick="searchdata" id="ucheck" checked>
搜索输入:
<input language="vbscript" onload="searchdata" onkeyup="count2" name="txtsrch" id="searchbar" width="15%" tabindex="0" size="35" type="text">
答案 0 :(得分:0)
对于初学者,请确定数据库引擎或VBscript中是否出现错误。为了测试第一种可能性,我会查看你的SQL字符串:
SQL_query = "SELECT * FROM ... WHERE ... Type='" & Chkboxval & "' ..."
Set rsData = conn.Execute(SQL_query)
如果设置SQL(而不是使用表单)会发生什么?只有三个复选框变体,因此测试很简单:
Chkboxval = "A"
Chkboxval = "U"
Chkboxval = "U' OR Type='A"
我在这里粘贴它们指出你填充Chkboxval
的方法很尴尬,我想知道数据库引擎是否在窒息。所以,试试:
SQL_query = "SELECT * FROM arbejde WHERE Title LIKE '%test%' AND Type='A'"
如果您的三个变体都运行良好,那么请查看脚本。这应该很容易解决问题:只需“手动编码”测试值,直到找到运行的东西。从简单到复杂的工作,孤立问题。
答案 1 :(得分:0)
自己想出来。显然,必须像searchdata
一样调用函数searchdata()
。这解决了这个问题,但带来了其他问题,我现在必须面对:-)感谢Smandoli的建议。
<强>之前强>
<input type="checkbox" name="acheck" onclick="searchdata" id="acheck" checked>
<强>解决方案强>
<input type="checkbox" name="acheck" onclick="searchdata()" id="acheck" checked>