如何使用 Javascript 搜索 MS Access 数据库 Table?

How to search an MS Access Database Table using Javascript?

我有一个 MS Access 数据库 Table 'ImportFromExcel' 有 16 列。当在输入关键字后按下网页中的 'Search' 键时,它应该转到 table 并检查关键字 is/are 是否出现在 table 中的任何位置.如果关键字出现在一行中,则应打印该行。否则,它应该抛出一条消息。

代码:

<!doctype html>
<html>
<title>Search</title>

<script type="text/javascript">

function query()
{
    var pad = "C:\Users\azi!z\Desktop\Project\Test.accdb";
    var cn = new ActiveXObject("ADODB.Connection");
    var strConn = "Provider=microsoft.ace.oledb.12.0;Data Source=" + pad;
    cn.Open(strConn);
    var rs = new ActiveXObject("ADODB.Recordset");
    var SQL = “SELECT * FROM ImportFromExcel where TestCase ALIKE '%searchTerm%'”;
    rs.Open(SQL, cn);
    if(!rs.bof) 
    {
        rs.MoveFirst();
        if(!rs.eof)
        {
            document.write("<p>" + rs.fields(1).value + ", ");
            document.write(rs.fields(2).value + ", ");
            document.write(rs.fields(3).value + ", ");
            document.write(rs.fields(4).value + ", ");
            document.write(rs.fields(5).value + ", ");
            document.write(rs.fields(6).value + ", ");
            document.write(rs.fields(7).value + ", ");
            document.write(rs.fields(8).value + ", ");
            document.write(rs.fields(9).value + ", ");
            document.write(rs.fields(10).value + ", ");
            document.write(rs.fields(11).value + ", ");
            document.write(rs.fields(12).value + ", ");
            document.write(rs.fields(13).value + ", ");
            document.write(rs.fields(14).value + ", ");
            document.write(rs.fields(15).value + ", ");
            document.write(rs.fields(16).value + ".</p>");
        }
    }
    else
    {
        document.write("No data found");
    }
    rs.Close();
    cn.Close();
}

</script>
</head>

<body>
<form method="get" name="SearchEngine" target="_blank">
<p style="text-align: center;"><span style="font-family:times new roman,times,serif;"><span style="font-size: 36px;"><strong>EA Search Engine</strong></span></span></p>

<p style="text-align: center;">&nbsp;</p>

<p style="text-align: center;"><input maxlength="300" id="searchTerm" name="KeywordSearch" size="100" type="text" value="Enter Your Keyword Here" /></p>

<p style="text-align: center;">&nbsp;</p>

<p style="text-align: center;"><input name="Search" type="button" value="Search" onclick="query();" /></p>
</form>
</body>
</html>

在 MS Access 中尝试了查询,它给出了预期的结果(感谢@HansUp)。似乎是 JavaScript 部分的问题。请帮助:)

现在您已经获得了要实际执行的 JavaScript 函数,您需要进行以下更改:

  1. Hard-coding '%searchTerm%' 到脚本中将只搜索该文字文本。您想要将 "searchTerm" <input> 框的值合并到表单中。

  2. 为此,您需要使用 参数化查询

  3. 您还想遍历 Recordset 以检索返回的所有行,而不仅仅是第一行。

所以,您的 JavaScript 代码应该更像这样:

function query() {
    var adVarWChar = 202;
    var adParamInput = 1;

    var pad = "C:\Users\azi!z\Desktop\Project\Test.accdb";
    var cn = new ActiveXObject("ADODB.Connection");
    var strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + pad;
    cn.Open(strConn);
    var cm = new ActiveXObject("ADODB.Command");
    cm.ActiveConnection = cn;
    cm.CommandText = "SELECT * FROM ImportFromExcel where TestCase LIKE ?";
    cm.Parameters.Append(cm.CreateParameter(
            "?", 
            adVarWChar, 
            adParamInput, 
            255, 
            "%" + document.getElementById("searchTerm").value + "%"));
    var rs = cm.Execute();  // returns ADODB.Recordset object
    if (rs.EOF) {
        document.write("<p>No data found.</p>");
    } else {
        while (!rs.EOF) {
            document.write("<p>" + rs.fields(0).value + ", ");
            // (list of fields truncated for clarity)
            document.write(rs.fields(1).value + ".</p>");
            rs.MoveNext();
        }
    }
    rs.Close();
    cn.Close();
}