从 SQL Server 插入一些数据的表中读取数据的问题

Posted

技术标签:

【中文标题】从 SQL Server 插入一些数据的表中读取数据的问题【英文标题】:Problem to read data from table that is inserted some data from SQL Server 【发布时间】:2019-11-04 05:45:40 【问题描述】:

我有一个子表单,从 SQL Server 插入到表中以访问表后数据没有更新

我有带有一些对象(表、表单、子表单)的 MS Access 应用程序。 我的子表单记录源是其中一张表,当我打开表单时,包括显示的子表单数据。

我连接到 SQL Server 并从 dbo.telefone 获取一些数据并在单击按钮之类的事件后插入到我的表 (GetTelServer) 中,但是尽管我刷新或重新查询表单或子表单,但新数据并未在子表单中更新-形式。我真的很困惑为什么会这样?

Dim strSQL1 As String
Dim rst1, RstAccess As ADODB.Recordset
              strSQL1 = "SELECT * from dbo.telefone"
             Set rst1 = New ADODB.Recordset
                     With rst1
                        .CursorLocation = adUseClient
                        .CursorType = adOpenKeyset
                        .LockType = adLockOptimistic
                        .Open strSQL1, cn, adCmdText
                      End With
                Set RstAccess = New ADODB.Recordset
                RstAccess.Open "SELECT * from GetTelServer", cnAccess, adOpenKeyset, adLockOptimistic
                Do Until rst1.EOF
                        RstAccess.AddNew
                        RstAccess.Fields("Name").Value =         rst1.Fields("Name").Value
                        RstAccess.Fields("job").Value = rst1.Fields("job").Value
                        RstAccess.Update
                        rst1.MoveNext
                 Loop

      Me.Query_subform.Requery
      Me.Refresh
        RstAccess.Close
        Set RstAccess = Nothing
        cnAccess.Close
        Set cnAccess = Nothing
        Me.Query_subform.Form.RecordSource = "SELECT * from GetTelServer"
       'even 
        set Query_subform.Form.recordset= RstAccess 

我不知道为什么数据没有出现在我的子表单中。当然,如果重新打开表单一切正常,但我不想重新打开表单。我希望插入表格后立即更新子表单数据

【问题讨论】:

【参考方案1】:

我认为在将记录源分配给子表单后,您需要从源数据刷新。 您的最后一行看起来无效(如果有效,一旦语法被验证,记录集将有一个大写字母),请将其注释掉。

请添加新的最后一行:

 Me.Query_subform.Refresh 

即使是 Me.Refresh 也可以做到... 然后重新测试。

【讨论】:

是的,最后一行我的意思是我什至用 (set Query_subform.Form.recordset= RstAccess) 进行了测试,但这并不好。我不知道为什么,但显然在插入数据后,我们需要关闭和打开表以使用新数据,但我们该怎么做? 最后一行永远不会起作用,因为上面的几行已经关闭了 RstAccess。一些建议: 1. 在 Loop 行之后,换行:rst1.Close 2.如果子表单 Recordsource 已经设置为“SELECT * from GetTelServer”,那么您不需要在倒数第三行重新设置它,只需在 Me.Query_subform.Refresh 中添加一行 阅读有关锁类型乐观的信息 - 您想要查看的数据可能尚未到达数据库...不同的锁类型可能需要更长的时间,但请确保数据是阅读时可用。

以上是关于从 SQL Server 插入一些数据的表中读取数据的问题的主要内容,如果未能解决你的问题,请参考以下文章

在SQL SERVER 的表中,插入新的字段

使用存储过程将数据插入从其他表派生的表中

sql server简单查询

SQL Server - 如何根据将插入数据半小时的表中的几个参数来计算持续时间?

如何从 SQL Server 中的表中删除重复行 [重复]

使用查询从 Microsoft SQL Server 导出数据到目标数据