使用复选框VBScript asp更新搜索过滤器

时间:2014-08-29 19:18:13

标签: sql checkbox vbscript hta

我在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'>&nbsp;</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">

2 个答案:

答案 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>