公司是内网,不能安装编程软件和其他软件,access是之前装的,可以通过邮件发送接收外网文件。现在外网笔记本用的vscode,html5。
现在要做一件事,要做一个单机动态网页收集数据写入access,同时也读取其中的数据,放在公共文件夹里(好像是个存储服务器,地址是数字),能否实现,本人对前端和对接,asp,api什么的不是很懂,而且电脑啥都装不了,只能写好网页通过邮件发送。

前端加access数据库
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
29条回答 默认 最新
- 杨同学* 2024-07-24 19:54关注
获得0.15元问题酬金 该回答结合ChatGPT4o及杨同学*共同作答, 如有帮助,还请采纳。
在您的环境中,您希望通过单机动态网页进行数据收集,并将这些数据写入Access数据库,同时也能够从数据库中读取数据。由于内网电脑不能安装任何软件和外网访问受限,需要通过邮件传递文件。因此,我们需要找到一种在限制条件下实现这一目标的方法。以下是一个可能的解决方案。解决方案概述
使用纯HTML和JavaScript与Access交互
您可以使用HTML5和JavaScript构建一个网页,并通过内置的OLEDB驱动与Access数据库进行交互。由于您无法安装任何服务器软件,我们将使用VBS脚本来辅助进行数据库操作。
注意:该方案假设您可以在公司内网环境中运行VBS脚本,并且数据库文件位于本地或网络共享文件夹中。
实现步骤
准备Access数据库文件:确保Access数据库文件(
.mdb
或.accdb
)存放在公司内网的共享文件夹中,并确保用户具有读写权限。创建HTML页面:使用HTML5和JavaScript创建一个简单的前端页面用于数据输入和显示。
使用VBS脚本处理数据库交互:使用Visual Basic Script (VBS) 来处理与Access数据库的交互。JavaScript将通过ActiveX调用VBS脚本。
网页和脚本的结合:将HTML页面、JavaScript和VBS脚本组合在一起,通过HTML页面控制VBS脚本操作数据库。
实现步骤的详细说明
1. Access数据库准备
假设您的数据库文件是
data.accdb
,在数据库中有一个表Records
,包含以下字段:ID
: 自动编号Name
: 文本Email
: 文本Message
: 文本
2. 创建HTML页面
创建一个基本的HTML表单用于输入数据。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Access Database Interaction</title> <script type="text/javascript"> function insertData() { var name = document.getElementById('name').value; var email = document.getElementById('email').value; var message = document.getElementById('message').value; var vbsCode = ` Dim conn Set conn = CreateObject("ADODB.Connection") conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\\\your-server\\path\\data.accdb" Dim sql sql = "INSERT INTO Records (Name, Email, Message) VALUES ('${name}', '${email}', '${message}')" conn.Execute sql conn.Close Set conn = Nothing `; try { var shell = new ActiveXObject("WScript.Shell"); shell.run("cmd.exe /c echo " + vbsCode + " > temp.vbs && cscript temp.vbs && del temp.vbs"); alert("Data inserted successfully"); } catch (e) { alert("ActiveXObject not supported or an error occurred."); } } function fetchData() { var vbsCode = ` Dim conn, rs Set conn = CreateObject("ADODB.Connection") conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\\\your-server\\path\\data.accdb" Set rs = conn.Execute("SELECT * FROM Records") Dim output output = "" Do While Not rs.EOF output = output & "ID: " & rs("ID") & ", Name: " & rs("Name") & ", Email: " & rs("Email") & ", Message: " & rs("Message") & vbCrLf rs.MoveNext Loop rs.Close conn.Close Set rs = Nothing Set conn = Nothing WScript.StdOut.Write output `; try { var shell = new ActiveXObject("WScript.Shell"); shell.run("cmd.exe /c echo " + vbsCode + " > temp.vbs && cscript //nologo temp.vbs > result.txt && del temp.vbs", 0, true); setTimeout(() => { fetch('result.txt') .then(response => response.text()) .then(data => { document.getElementById('result').innerText = data; }); }, 1000); // delay to ensure file is written } catch (e) { alert("ActiveXObject not supported or an error occurred."); } } </script> </head> <body> <h1>Access Database Interaction</h1> <div> <h2>Insert Data</h2> <form onsubmit="event.preventDefault(); insertData();"> <label for="name">Name:</label> <input type="text" id="name" name="name" required><br><br> <label for="email">Email:</label> <input type="email" id="email" name="email" required><br><br> <label for="message">Message:</label> <textarea id="message" name="message" required></textarea><br><br> <input type="submit" value="Submit"> </form> </div> <div> <h2>Fetch Data</h2> <button onclick="fetchData()">Fetch Data</button> <pre id="result"></pre> </div> </body> </html>
关键步骤解释
- ActiveXObject:在IE中使用ActiveX对象允许在客户端执行脚本。这在现代浏览器中通常不可行,但在某些企业内部环境下,IE及ActiveX仍然可用。
- VBS脚本:用于在客户端执行对Access数据库的操作。
- cmd.exe命令:通过shell命令执行VBS脚本,并将结果存入文本文件,随后通过JavaScript读取。
注意事项
- 浏览器限制:此方案在现代浏览器(如Chrome、Firefox等)中不会运行,因为ActiveX仅在IE中支持。
- 安全问题:直接在客户端执行VBS脚本存在安全风险。建议在受信任的内网环境中进行,确保代码安全。
- 路径配置:在VBS脚本中调整Access数据库的路径以适配网络共享。
- 权限要求:确保用户在网络共享路径上拥有读写权限。
结论
在限制条件下,通过HTML和VBS结合,可以实现与Access数据库的简单交互。但需注意,这种方法在安全性和跨浏览器兼容性上存在限制,仅适用于特定企业内部环境。如果有其他资源可用(如安装IIS服务,或通过其他脚本语言如Python、PHP等),则建议考虑更现代化和安全的解决方案。
解决 1无用