2016-06-01 3 views
1

MS Access 데이터베이스 및 양식에 대한 업데이트 작업이 수행되었습니다. 각 양식이 쿼리에 연결되어있는 것 같습니다. 양식의 텍스트 상자에 데이터를 입력 한 다음 레코드 저장 단추를 누르지 않고 양식을 닫으면 새로운 레코드가 여전히 데이터베이스에 추가되어 의미가 없습니다.MS Access - 양식에 입력 된 데이터

모든 통찰력은 좋지만 필자는 프로그래머이지만 액세스 양식 및 데이터베이스 작업 경험이 거의 없습니다.

감사합니다.

답변

4

Microsoft Access는 기본적으로 양식을 데이터에 바인딩하고 레코드간에 이동하거나 작업중인 양식을 닫으면 자동으로 데이터를 저장합니다. 평범한 사용자의 경우 실제로 실수로 데이터를 잃어 버리기 쉽습니다. 실수로 편집 한 후에 양식을 닫은 경우에도 마찬가지입니다.

이 기능을 원하지 않는 경우 폼에서 바인딩을 제거하는, 즉 레코드 원본 속성을 비워 둔 다음 언 바운드 컨트롤을 사용하여 코드의 모든 데이터를 조작하는 것이 좋습니다. 더 까다 롭지 만 더 많은 통제력을 제공합니다.

다른 옵션은 양식의 BeforeUpdate 이벤트를 사용하여 변경 사항을 저장하기 전에 변경 사항을 저장할지 묻는 것입니다.

실수로 새 레코드를 추가하는 경우 추가 허용 속성을 false로 설정하고 프로그래밍 방식으로 새 레코드를 만듭니다.

BeforeUpdate 이벤트 프로 시저 (같은 코드가 BeforeInsert 이벤트를 작동합니다)의 샘플 :

Private Sub Form_BeforeUpdate(Cancel As Integer) 

    Dim intAns As Integer 

    intAns = MsgBox("Are you sure you want to save this record?", vbQuestion + vbYesNo, "Save Record") 
    If intAns = vbNo Then Cancel = 1 

End Sub 

위의 방법을 사용했다, 사용자가 "아니오"를 클릭 한 경우, 그들이 가지고있는 것 를 누른 다음 ESC 키를 눌러 입력 한 변경 사항을 취소하십시오. 그렇지 않으면 레코드를 벗어날 때 계속 대화를 표시합니다.

+1

대단히 감사합니다. 정확히 알아 내려고 노력했습니다. 언급 한 BeforeUpdate 메서드를 사용할 수도 있습니다. 다시 한 번 감사드립니다! – JasonR

+0

BeforeUpdate 플래그를 사용하면 해당 이벤트를 사용하여 DB에 새 데이터를 추가하는 가장 좋은 방법은 무엇입니까? – JasonR

+0

도움이 될만한 BeforeUpdate 이벤트 프로 시저 샘플을 추가했습니다. BeforeInsert 이벤트 프로 시저에 대해 동일한 코드를 사용할 수 있습니다.이 프로 시저에서는 새 레코드를 추가하기 전에 사용자에게 묻습니다. 두 경우 모두 사용자가 "아니요"를 선택하면 ESC 키를 사용하여 변경 사항을 취소 할 때까지 레코드에서 벗어날 수 없습니다. 새 레코드를 추가 할 때 고려해야 할 다른 사항은 일시적으로 명령 단추를 사용하여 폼의 DataEntry 속성을 true로 변경하는 것입니다. 그것을 올바르게하는 것은 조금 더 복잡합니다. – Billious

관련 문제