繁体   English   中英

MS Access链接表插入事务提交

[英]MS Access linked table insert transaction commit

我有一个Access 2016数据库,它最初是一个经典的Access MDB。 在此过程中,它被转换为.accdb,并链接到后端SQL Server。 使用的所有表都转换为链接表。

有一些代码可以执行如下代码:

sql = "insert into [TableA]..."
CurrentDB.Execute sql

DoCmd.OpenReport(...)

我发现的是,在OpenReport命令从同一表中选择数据之前,间歇性地插入后端SQL似乎没有完成。

通过使用来解决这个问题是否合理。 假设我的问题是数据没有及时提交到SQL表以供报表执行查看,下面的代码是否可以确保这一点?

sql = "insert into [TableA]..."
CurrentProject.Connection.BeginTrans
CurrentProject.Connection.Execute sql
CurrentProject.Connection.CommitTrans
DoCmd.OpenReport(...)

如果使用的是ADO,则可以使用RecordsAffected输出参数来确定是否插入了记录。

您可以使用以下内容:

sql = "insert into [TableA]..."
Dim recordsAffected As Long
CurrentProject.Connection.Execute sql, recordsAffected
If recordsAffected <> 0 Then
    DoCmd.OpenReport(...)
Else
    'Nothing got inserted
End If

或者,如果您不喜欢多余的变量,可以考虑使用辅助函数:

Public Function ADOExecute(Query As String) As Long
    CurrentProject.Connection.Execute Query, ADOExecute
End Function

sql = "insert into [TableA]..."
If ADOExecute(sql) <> 0 Then
    DoCmd.OpenReport(...)
Else
    'Nothing got inserted
End If

请注意,我强烈建议使用与SQL Server的连接,而不要使用CurrentProject.Connection ,它是Access的ADO连接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM