从 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 插入一些数据的表中读取数据的问题的主要内容,如果未能解决你的问题,请参考以下文章