2012-09-25 4 views
1

특정 ID가있는 레코드로 이동하려고합니다. 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, 

enter image description here

마침내, 나는 탐색 모음을 표시하는 경우, I 거기에 필터가 있다는 것을 알 수 있습니다. 나는 필터를 제거하면 나는이

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 
+1

당신의 레코드 원본은 무엇입니까? – Fionnuala

+0

감사합니다. 질문은 지금 업데이트됩니다. – Marc

+1

샘플 SQL Server가 연결된 SQL Server 테이블에서 작동합니다. 어떻게 테이블을 연결했고 폼의 레코드 소스 속성은 무엇입니까? 어떤 필터있어? – Fionnuala

답변

1

을, 당신은 형태의 문제를 고려할 수 있습니다. 필터는 액세스 2010 양식의 맨 아래에 표시됩니다에 의해 VBA에서 제거 될 수 있습니다

Me.FilterOn = False 

또는 필터 버튼을 클릭하여 :

form filter access 2010

이상한 일들이 앞에 일어나고을 끝은 종종 어떤 종류의 부패로 인한 것입니다. 개발 중에는 정기적으로 백업하고 압축하고 수리 및 디 컴파일해야합니다. 표를 링크 한 경우 링크를 새로 고치는 것이 좋습니다.

잃어 버리지 않으려는 양식을 만들면 손상된 모양이됩니다. 잘라내어 붙여 넣기로 새 양식에 복사하거나 텍스트로 내보내고 가져올 수 있습니다.

디 컴파일 :

"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"