vbscript在html表中显示数据库查询

时间:2014-04-17 17:38:32

标签: html mysql sql vbscript

我见过几个例子,但都是ASP或PHP。我工作的公司有很多安全性,我不允许在我的计算机上安装其中任何一个用于开发,因此,我需要在HTML中执行此操作。

我创建了一个表单,该表单从用户收集信息并通过VBScript将其提交到2010 Access数据库。我需要弄清楚的是如何在HTML表格中显示它。

这是VBScript子查询数据库中表中的所有内容:

Sub SelectFromDatabase()

    Dim strSQL, strConnect

    Dim conn, rs

    Set conn = CreateObject("ADODB.Connection")

    strConnect = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\My Stuff\MyData.accdb;Persist Security Info=False;"

    conn.Open strConnect

    strSQL = "SELECT * FROM SurveyData"

    ' Send the query to the database and save result
    Set rs = conn.Execute strSQL

    ' Close the connection to the database
    conn.Close
    strSQL = ""

end sub

我创建了一个单独的sub,它调用前一个sub并将数据存储在变量中:

sub PrintData
    call SelectFromDatabase()
    strFullName = FullName
    strAddress = Address
    strCity = City
    strState = State
    strZip = Zip
    strPhone = Phone
    strEmail = Email
    strComputer = Computer
    strOS = OS
    strShopping = Shopping
end sub

这是我用来将数据打印到HTML表格的HTML:

<html>
    <head>
        <title>My Web Site - Customer Data</title>
        <script language="vbscript" type="text/vbscript" src="Process.vbs">
        </script>
    </head>
    <body onLoad="SelectFromDatabase();">
        <h1 align=center>My Web Site</h1>
        <h2>Customer Data</h2>
        <p>Below is a list of the customer data that has been submitted.</p>
        <hr>
        <script language="vbscript" type="text/vbscript">
            document.writeln("<table border=1><tr><th>Name</th><th>Address</th><th>City</th><th>State</th><th>Zip</th><th>Phone</th><th>Email</th><th>Computer</th><th>OS</th><th>Shopping</th></tr>")
            Do Until rs.EOF
                document.writeln("<tr><td>" & rs(0) & "</td><td>" & rs(1) & "</td><td>" & rs(2) & "</td><td>" & rs(3) & "</td><td>" & rs(4) & "</td><td>" & rs(5) & "</td><td>" & rs(6) & "</td><td>" & rs(7) & "</td><td>" & rs(8) & "</td><td>" & rs(9) & "</td></tr>")
                rs.MoveNext
            Loop
            document.writeln("</table>")
        </script>
    </body>
</html>

我得到的错误在for each...行。这是说PrintData不是一个集合,我同意,但我不确定现在我会调用子PrintData并能够在HTML表格中使用这些信息。

1 个答案:

答案 0 :(得分:2)

请参阅上面的评论,将其转换为HTA。完成后,您可以创建ActiveX控件(Connection对象,Recordset对象等),以便在没有Internet Explorer抱怨的情况下查询数据库。

您的SelectFromDatabase函数无法保存生成的记录集。您正在进行查询,这很好,但您没有保存结果集。 Connection.Execute()会返回Recordset个对象。

' in SelectFromDatabase()...
strSQL = "SELECT * FROM SurveyData"

' Send the query to the database AND save the result!
Set rs = conn.Execute(strSQL)

现在rs包含从查询返回的记录。 rs(0)是第一列的值,rs(1)是第二列的值,依此类推。您可以像这样遍历这些记录:

Do Until rs.EOF
    ' Write to page...
    document.writeln("<tr><td>" & rs(0) & "</td><td>" & rs(1) & "</td></tr>")
    rs.MoveNext
Loop

作为循环的替代方法,您还可以使用GetString()类的Recordset函数将所有记录格式化为表格:

document.write("<table><tr><td>" & rs.GetString(, , "</td><td>","</td></tr><tr><td>") & "</td></tr></table>")

这是一份完整的工作样本:

<html>
<body>
<script language="vbscript">
    Sub SelectFromDatabase()

        Dim cn, rs, e

        Set cn = CreateObject("ADODB.Connection")
        cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\My Stuff\MyData.accdb;Persist Security Info=False;"

        Set rs = cn.Execute("SELECT * FROM SurveyData")

        Set e = document.getElementById("content")
        e.innerHTML = "<table><tr><td>" & rs.GetString(2, , "</td><td>", "</td></tr><tr><td>") & "</td></tr></table>"

        rs.Close
        cn.Close

    End Sub
</script>
<body onload="SelectFromDatabase()">
    <div id="content"></div>
</body>
</html>