使用1个MySQL表进行访问以要求提供凭据

ril*_*131 6 mysql ms-access vba access-vba ms-access-2016

我有一个使用本地SQL Server后端的访问数据库,用于除1个基于Web的MySQL表以外的所有表。MySQL表有大约50行,3个字段,一点也不大。我有一个odbc连接设置,该表与保存的密码链接。该表每天最多更新30次...有时连接中断,并且将显示MySQL连接弹出窗口...单击test将导致成功,单击ok将允许代码继续。它正在执行1行更新(SET LastUpdatedDate =#”&now()&“#WHERE ItemID ='xyz')。

我想捕获一个错误,或者如果它不可用,请让它继续而不连接。。。但是似乎没有错误生成。发生这种情况时,我宁愿不更新表,而必须实际选择确定以使其再次运行。在美国各地的多台PC上,存在多个位置的此问题。我假设这是MySQL数据库托管的服务器,但出现了问题-我只想知道如何忽略它们并继续使用其他代码...再次,没有错误产生(因此出现错误...不会工作)。有任何想法吗?使用Access 2016。

更新:我当前的设置是要对服务器执行ping操作...如果ping获得响应,我认为它已启动...然后运行'CurrentDb。执行“ UPDATE XYZ SET ABC ='DEF'WHERE GHI ='JKL '”。这么简单。如果尝试查询表XYZ且该表不可用,则会出现相同的连接弹出窗口。我应该如何刷新表格?删除链接并重新创建?

新更新终于开始尝试下面由Andre提出的无DSN直通查询。当我进入“执行”步骤时,出现一条错误消息,提示我无法执行选择查询...但这是一个更新查询。这是SQL字符串....SQL = "UPDATE [Status] SET ItemDate = NOW() WHERE PlantID = '" & PlantID & "' AND ItemID = '" & ItemID & "'"

And*_*dre 5

我建议您不要在链接表上运行Access查询,而应使用动态创建的无DSN 直通查询

这应该始终有效,或者引发可捕获的错误。

Const ConnectString = "ODBC;DRIVER={MySQL ODBC 5.1 Driver};SERVER=your.server.com;PORT=3306;DATABASE=mydatabase;UID=myuserid;PWD=mypassword"

Dim qdf As DAO.QueryDef
Set qdf = CurrentDb.CreateQueryDef("")
With qdf
    ' Setting .Connect turns it into a Pass-Through query
    .Connect = ConnectString
    ' Need to set this for non-SELECT queries
    .ReturnsRecords = False
    ' Note: you need to use MySql syntax here, not Access SQL, especially the correct date format
    .SQL = "UPDATE XYZ SET ABC = 'DEF' WHERE GHI = 'JKL'"
    ' or since MySql has a NOW() function too, just this:
    .SQL = "UPDATE foo SET LastUpdatedDate = NOW() WHERE ItemID = 'xyz'"
    .Execute
End With
Run Code Online (Sandbox Code Playgroud)

您也可以尝试保存的直通查询,它也可能会起作用。然后,您只需要提供current .Sql,而不是connect字符串。