我正在尝试移动到具有特定ID的记录。
我在这篇文章中尝试了解决方案:MS Access search for record by textbox instead of dropdown
但没有成功
这是我的代码
Private Sub btnShowPrevious_Click()
Dim rs As DAO.Recordset
Set rs = Me.RecordsetClone
rs.FindFirst "[ID]=" & ParentID
If rs.NoMatch Then
MsgBox "Sorry, no such record '" & ParentID & "' was found.", _
vbOKOnly + vbInformation
Else
Me.Recordset.Bookmark = rs.Bookmark
End If
rs.Close
End Sub
它始终没有匹配,但是parentID = 1并且有一条ID = 1的记录。
任何人都知道出了什么问题?
谢谢
记录来源是此表:
CREATE TABLE [dbo].[ProposalFollowUp](
[ID] [int] IDENTITY(1,1) NOT NULL,
[ProposalID] [int] NOT NULL,
[MillID] [int] NULL,
[ClientID] [int] NULL,
[Comment] [nvarchar](max) NULL,
[Method] [nvarchar](128) NULL,
[Contact] [int] NULL,
[ContactDate] [datetime] NULL,
[Done] [bit] NOT NULL,
[CreatedBy] [nvarchar](50) NULL,
[CreatedDate] [datetime] NULL,
[ModifiedBy] [nvarchar](50) NULL,
[ModifiedDate] [datetime] NULL,
[EAIEmployee] [nvarchar](50) NULL,
[PersonInCharge] [nvarchar](50) NULL,
[ParentID] [int] NULL,
这是表单属性的截图
最后,如果我显示导航栏,我可以看到有一个过滤器。 可能是因为我打开了这样的表格
DoCmd.OpenForm "ProposalsFollowUp", , , "[ID] = " & txtID, acFormEdit, acDialog
如果我删除了过滤器,它就能正常工作。
好的 这是最终的代码
Private Sub btnShowPrevious_Click()
Dim parent As Integer
parent = ParentID
Me.Filter = ""
Dim rs As DAO.Recordset
Set rs = Me.RecordsetClone
rs.FindFirst "[ID]=" & parent
If rs.NoMatch Then
MsgBox "Sorry, no such record '" & parent & "' was found.", _
vbOKOnly + vbInformation
Else
Me.Recordset.Bookmark = rs.Bookmark
End If
rs.Close
End Sub
答案 0 :(得分:1)
在检查了所有明显的内容后,例如确保记录集包含您要搜索的数据以及没有过滤器,您可以考虑表单的问题。过滤器显示在Access 2010中表单的底部,可以通过以下方式在VBA中删除:
Me.FilterOn = False
或点击过滤按钮:
前端发生的奇怪事情通常是由于某种形式的腐败。在开发过程中,您需要定期备份,压缩,修复和反编译。如果您有链接表,刷新链接通常是个好主意。
如果您创建的表单不想丢失而且已损坏,您可以使用剪切和粘贴复制到新表单,也可以导出到文本并导入。
反编译:
"c:\Program Files\Microsoft office\office\msaccess.exe" /decompile "c:\My Documents\MyDatabase.mdb"
- http://allenbrowne.com/ser-47.html
另存为文字:
Application.SaveAsText acForm, "FormName", "z:\docs\tmp.txt"
Application.LoadFromText acForm, "restoredForm", "z:\docs\tmp.txt"