我见过几个例子,但都是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表格中使用这些信息。
答案 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>