如何返回更新行的详细信息?

Posted

技术标签:

【中文标题】如何返回更新行的详细信息?【英文标题】:How return details of updated row? 【发布时间】:2020-03-19 13:25:28 【问题描述】:

我在 MS Access 2016 中有数据库,并希望通过 Excel VBA 运行更新查询 - 这可行。在此之后,我想返回更新行的详细信息(来自两列的值 - ID、Col1)。现在我只有受影响的行数。如何做到这一点?

我的查询:

UPDATE 
(SELECT TOP 1 ID, Col1, Update_time, Update_user 
FROM Table1 
WHERE Update_user Is Null 
ORDER BY Col2 DESC , ID)  AS U_ROW 
SET U_ROW.Update_time = Now(), U_ROW.Update_user = [username];

在 Excel VBA 中,我通过 ADODB.Command 运行它:

    With baseRecordsetCommand
        .ActiveConnection = objectConnection
        .CommandType = adCmdStoredProc
        .CommandText = "qryTest"
        .NamedParameters = True
        .Parameters.Append .CreateParameter("@username", adVarChar, adParamInput, 255, LCase(Environ("Username")))
        .Execute recordsAffected
    End With

【问题讨论】:

【参考方案1】:

通常这类操作会进入存储过程,但在 Acces/Excel 女士中,您必须使用 VBA。最简单的方法是,在更新之前检索您要更新的 Id。

所以这是第一个:将它保存在一个变量中

SELECT TOP 1 ID
FROM Table1 
WHERE Update_user Is Null 
ORDER BY Col2 DESC , ID

然后

update Table1
SET Table1.Update_time = Now(), Table1.Update_user = @username where Id = @idFromFirstQuery;

紧随其后

select * from Table1 where Id = @idFromFirstQuery;

这样你就知道你要更新什么ID,行了。

或:

您也可以将now() 转换为参数并提供时间戳作为参数。 喜欢:

update (table selection ) set update_time = '2020-19-03 10:0=10:10', update_user = 'User1';

更新后,您可以执行以下操作: Select * from Table1 where update_user = 'User1' and update_time = '2020-19-03 10:0=10:10';

注意!!您高度假设您提供的时间戳 + 用户名是唯一的。我个人不会使用这种方法。

【讨论】:

【参考方案2】:

对此不确定,但如果你有一个唯一的 id,你可以做这样的事情。这是在 Access 中完成的,因此需要建立连接,因为我相信这没问题。

Function sqlret() As String

Dim c As ADODB.Connection
Dim s As String
Dim r As ADODB.Recordset
Dim l As Long

Set c = CurrentProject.Connection

c.Execute "insert into tblprojects(projecttitle) values ('code1')"
Set r = New ADODB.Recordset
r.Open "select @@identity", c, 1
l = r.Fields(0).Value
r.Close

r.Open "select * from tblprojects where [projectid]=" & l, c, 1
sqlret = r.GetString

End Function

【讨论】:

以上是关于如何返回更新行的详细信息?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Bootstrap-vue 切换单个行的详细信息

React - 在表格行上触发点击事件并在另一个页面中显示所选行的详细信息

Excel VBA获取选定数据透视表行的项目详细信息

显示表格特定行的详细信息

SwiftUI:如何更新 NavigationView 详细信息屏幕?

如果记录数小于详细信息部分中定义的行,如何插入空行