【发布时间】:2020-11-20 06:30:17
【问题描述】:
我正在尝试使用基于 frmPackingSlipHeader.JOB 和 .REL 控件的记录填充 frmPanelUnitEntryHeader.txtJOB_NUMBER 和 .txtRELEASE_NUMBER。在frmPackingSlipHeader 上导航记录时,.JOB 和.REL 被提交到gtxtCurrentJobNumber 和gtxtCurrentJobRelease 全局变量。我遇到了rs.FindFirst 方法,但需要大约一分钟或更长时间才能返回有效记录;找到正确的记录并按预期显示。在用.FindFirst 抱怨搜索了漫长的等待之后,我遇到了OpenRecordset 方法并使用strSQL 提取记录,但在Me.Bookmark = rs.Bookmark 上收到运行时错误“3159”消息。 frmPanelUnitEntryHeader 不是子源。
Private Sub txtJOB_NUMBER_GotFocus()
'Used to bring up existing jobs in SUB table
Dim rs As Object
Dim strSQL As String
' Set rs = Me.RecordsetClone
strSQL = "SELECT * FROM MAIN_SUB WHERE [JOB_NUMBER] = '" & gtxtCurrentJobNumber & "' And RELEASE_NUMBER = '" & gtxtCurrentJobRelease & "';"
Set rs = CurrentDb.OpenRecordset(strSQL)
With rs
If .RecordCount = 0 Then
DoCmd.GoToRecord , , acNewRec
Else
Me.Bookmark = .Bookmark
End If
End With
Set rs = Nothing
' With rs
' .FindFirst "JOB_NUMBER='" & gtxtCurrentJobNumber & "' And RELEASE_NUMBER='" & gtxtCurrentJobRelease & "'"
' If .NoMatch Then
' DoCmd.GoToRecord , , acNewRec
' Else
' Me.Bookmark = .Bookmark
' End If
' End With
'
' Set rs = Nothing
End Sub
注释的行放在一起。
我在搜索错误时注意到许多网站诉诸数据库损坏和修复,但我不认为这里是这种情况。 .FindFirst 有效,但速度很慢。为什么书签在这两种方法之间的工作方式似乎不同?这与我在txtJOB_NUMBER_GotFocus() 上执行此操作有关吗? TIA。
【问题讨论】:
-
警告,这是宽开放注入。您需要对查询进行参数化。#
-
ADO 允许使用参数化查询。
-
为什么我得到一个-1?
-
对问题投反对票的目的是表明投反对票的人认为您的问题没有帮助或缺乏研究,@Tim。我无法评论他们认为哪些是真实的(只有投反对票的人可以告诉你,他们不需要评论投反对票)。
标签: sql-server vba ms-access ms-access-forms