通过Javascript请求MS访问数据

通过Javascript请求MS访问数据,javascript,ms-access,settimeout,Javascript,Ms Access,Settimeout,我想连接到数据库并每隔1秒从字段检索数据。这将加载第一条记录,但不会请求/显示任何新记录。有什么想法吗 function test() { var adOpenForwardOnly = 0, adLockReadOnly = 1; var conn = new ActiveXObject("ADODB.Connection"); conn.open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\path

我想连接到数据库并每隔1秒从字段检索数据。这将加载第一条记录,但不会请求/显示任何新记录。有什么想法吗

function test() {
  var adOpenForwardOnly = 0,
    adLockReadOnly = 1;
  var conn = new ActiveXObject("ADODB.Connection");
  conn.open("Provider=Microsoft.Jet.OLEDB.4.0;Data          Source=C:\\path\\Data.mdb;Persist Security Info=False");
  if (conn) {
    var rs = new ActiveXObject("ADODB.Recordset");
    rs.Open("SELECT Table1.* FROM Table1 where Time1 = time()", conn, adOpenForwardOnly, adLockReadOnly);
    value1 = rs.fields("Value1").value;
    document.write(value1);
  }
  rs.Close();
  conn.Close();
}
setTimeout(test(), 1000);

如果你这样尝试会发生什么

function test() {
  var adOpenForwardOnly = 0,
      adLockReadOnly = 1;

  try {
    var conn = new ActiveXObject("ADODB.Connection");
    conn.open("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=C:\\path\\Data.mdb;Persist Security Info=False");
    if (conn.State > 0) {
      var rs = new ActiveXObject("ADODB.Recordset");
      rs.Open("SELECT Table1.* FROM Table1 where Time1 = time()", conn, adOpenForwardOnly, adLockReadOnly);
      value1 = rs.fields("Value1").value;
      document.write(value1);
    } else {
      throw new Error('conn not open...');
    }
    rs.Close();
    conn.Close();
  } catch (someError) {
    alert(someError.message);
  }
}

var i = 0;
while (i === 0) {
  setTimeout(test, 1000);
}

如果你这样尝试会发生什么

function test() {
  var adOpenForwardOnly = 0,
      adLockReadOnly = 1;

  try {
    var conn = new ActiveXObject("ADODB.Connection");
    conn.open("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=C:\\path\\Data.mdb;Persist Security Info=False");
    if (conn.State > 0) {
      var rs = new ActiveXObject("ADODB.Recordset");
      rs.Open("SELECT Table1.* FROM Table1 where Time1 = time()", conn, adOpenForwardOnly, adLockReadOnly);
      value1 = rs.fields("Value1").value;
      document.write(value1);
    } else {
      throw new Error('conn not open...');
    }
    rs.Close();
    conn.Close();
  } catch (someError) {
    alert(someError.message);
  }
}

var i = 0;
while (i === 0) {
  setTimeout(test, 1000);
}

您的代码有两个问题:

  • 您使用的是
    setTimeout
    而不是
    setInterval
    ,因此它只执行一次
  • 您使用括号
    ()
    将函数作为参数发送,但您应该只命名函数,例如:
    setInterval(test,1000)

  • 另一个选项

    我建议您使用递归的
    setTimeout
    (数据库延迟的原因)。例如:


    您的代码有两个问题:

  • 您使用的是
    setTimeout
    而不是
    setInterval
    ,因此它只执行一次
  • 您使用括号
    ()
    将函数作为参数发送,但您应该只命名函数,例如:
    setInterval(test,1000)

  • 另一个选项

    我建议您使用递归的
    setTimeout
    (数据库延迟的原因)。例如:


    删除(),只需要函数名我能得到它给我新数据的唯一方法是点击refresh:(使用setInterval(test,1000);只刷新一次并停止删除(),只需要函数名我能得到它给我新数据的唯一方法是点击refresh:(使用setInterval(test,1000);只刷新一次就停止谢谢!我照你说的做了,但它只刷新了一次就停止了。:(还有其他建议吗?谢谢!我照你说的做了,但它只刷新了一次就停止了。:)(还有其他建议吗?您打算如何使用此代码?它将仅在IE中运行,并且在具有
    数据.mdb
    有效路径的客户端上运行。如果我们有更多信息,也许我们可以提供更好的解决方案。我通常不会推荐
    ActiveX
    设置超时
    、或
    设置间隔
    进行任何操作……是的,我知道,这是非常有用的。)真的很棘手。我需要它在本地连接到MS Access数据库以收集信息并每秒刷新一次。我知道如何使用PHP,但在这种情况下,我只是在本地使用一个数据库和一台windows PC,因此PHP是不可能的:(.我读到在本地重新查询数据库是非常棘手的,这就是为什么我试图关闭连接并每秒再次打开它…当然它没有按我需要的方式工作!你需要我提供什么信息?我甚至不知道是否有办法使用javascript连接到chrome或firefox中的MS Access数据库(为避免使用activex):(完全可以使用JavaScript连接到Access,只是不了解上下文。这是您想在自己的计算机上运行的维护程序吗?VBA可能是另一个选项,或者如果您只想监控,则可以使用Excel查询…?Access数据库会附加由监控电压的设备创建的csv文件中的信息。这个想法是我已经在一个html页面中创建了图形监视器,只需要解析数据和“重新查询”它每秒钟运行一次。但我想我在这里遇到了一个死胡同,我无法让它工作!看起来很简单,但它就是不工作!您计划如何使用此代码?它将只在IE中运行,并且在具有有效路径的客户端上运行到
    Data.mdb
    。如果我们有更多信息,也许我们可以提供更好的解决方案。我通常不会推荐
    ActiveX
    setTimeout
    、或
    setInterval
    等等……是的,我知道,这真的很棘手。我需要它在本地连接到MS Access数据库以收集信息并每秒刷新一次。我知道如何使用PHP,但在这种情况下,我只是在本地使用数据库和windows PC,所以PHP是不可能的:(.我读到在本地重新查询数据库非常棘手,这就是为什么我试图关闭连接并每秒再次打开它…当然它没有按我需要的方式工作!你需要我提供什么信息?我甚至不知道是否有方法使用javascript连接到chrome或firefox中的MS Access数据库(为避免使用activex):(完全可以使用JavaScript连接到Access,只是不了解上下文。这是您想在自己的计算机上运行的维护程序吗?VBA可能是另一个选项,或者如果您只想监控,则可以使用Excel查询…?Access数据库会附加由监控电压的设备创建的csv文件中的信息。这个想法是显示每秒的V波动。我在html页面中创建了图形监视器,只需要解析数据并每秒“重新查询”它。但我认为我在这里遇到了死胡同,我无法使它工作!看起来很简单,但它就是不工作!