2011-05-12 3 views
0

Access 2007 : 100 개의 레코드가 표시된 하나의 양식이 있습니다. 나는 새로운 기록을 편집하거나 창조하기위한 두 번째 형식을 가지고있다. 새 레코드를 추가 한 후 첫 번째 양식으로 돌아 가면 On Activate : Me.Requery를 실행하여 새 레코드가 목록에 추가되지만 레코드 선택기가있는 새 레코드에 화면에 표시하고 싶습니다. 이것을 할 수있는 방법이 있습니까? ID를 전역 변수에 저장한다고 가정하고 있지만 다음에 수행 할 작업을 확신 할 수 없습니다. 감사.액세스 : 두 번째 양식을 만든 후 한 양식에 새 레코드를 표시하는 방법

응답 : 감사합니다. // t. 당신의 대답은 저에게 올바른 방향으로 가고 있습니다. 나는 해결 방안을 더 많이 내 솔루션으로 올릴 것이다. 더 나은 해결책이 있어야하지만 이것이 효과가있는 것 같습니다.

양식 1 (목록) -> 양식 2 (수정/새로 만들기)를 선택하고 새 레코드를 만듭니다.

Private Sub Form_Current() 
    glngID = Me.ID.Value 
End Sub 

Private Sub Form_Close 
    gstrLastForm = "Form2" 
End Sub 

양식 2를 닫으면 양식 1이 활성화됩니다.

Private lngSelectedRecord as Long 

Private Sub Form_Activate() 
    Me.Requery 
    FindSelectedRecord 
    If gstrLastForm = "Form2" Then 
    DoCmd.GoToRecord acDataForm, "Form1", acGoTo, lngSelectedRecord 
    End If 
End Sub 

Private Sub FindSelectedRecord() 
    ... 
    Open recordset, move through records, increment counter, exit when ID found 
    ... 
    lngSelectedRecord = intCounter 
    ... 
End Sub 

답변

1

뭔가처럼 삽입 한 레코드로 이동하여 팝업 창에서 ON_CLOSE-방법을 사용 :

private sub on_close() 
    'maby first check we're not undoing.. 
    docmd.gotoRecord yourform,yournewid 
    me.close 

(현재 OSX에,하지만 난 당신이 개념을 얻을 희망을 ...)

1

이것은 대개 대화 상자 모드에서 열린 양식으로 수행됩니다. 대부분의 경우, 새로운 레코드를 추가하여 기본 폼에 명령 단추를 가질 것, 그 같은 코드 실행됩니다 클릭 할 때 :이 새에 새 레코드를 추가하기 위해 사용하는 양식을 엽니 다

DoCmd.OpenForm "MyAddForm", , , , acFormAdd, acDialog 

을, 빈 레코드를 만들고 코드를 일시 중지합니다.

그러나 추가 된 레코드의 PK를 알아야 양식을 닫고 코드를 계속 진행할 수 있습니다.

대화 형태에서
Dim lngPK As Long 
    DoCmd.OpenForm "MyAddForm", , , , acFormAdd, acDialog 
    If Forms!MyAddForm.Tag <> "Cancel" Then 
    lngPK = Forms!MyAddForm!PK 
    Application.Echo False 
    Me.Requery 
    With Me.RecordsetClone 
     .FindFirst "[PK]=" & lngPK 
     If Not .NoMatch Then 
      If Me.Dirty Then 
      Me.Dirty = False 
      End If 
      Me.Bookmark = .Bookmark 
     End If 
    End With 
    Application.Echo True 
    End If 
    DoCmd.Close acForm, "MyAddForm" 

, 당신이이 : 그래서, 평소 연습은, 당신이 필요로하는 그것에서 데이터를 얻을 False로 대화 형태의 Visible 속성을 설정을 닫고 당신이 원하는 일을하는 것입니다 사용자가 닫지 않도록 기본 윈도우 컨트롤을 숨 깁니다. 대신 두 개의 명령 단추 SAVE 및 CANCEL이 있어야합니다. 저장 버튼이 수행합니다

If Me.Dirty Then 
    Me.Dirty = False 
    End If. 
    Me.Visible = False 

... 버튼을 취소하려면이 수행합니다

Me.Undo 
    Me.Tag = "Cancel" 
    Me.Visible = False 

결과는 당신이 원하는하지 않도록 레코드가 저장되지 않았 음을 알고있다 부름 양식에 무엇이든.

이것은 모두 표준 Access 사용자 인터페이스 디자인이며, 이런 종류의 작업을 수행하는 데있어 가장 쉽고 가장 방탄적인 방법입니다.

관련 문제