2013-01-14 2 views
0

6 필드가 들어있는 양식을 작성 중이며 양식을 제출하고 새 레코드를 작성하기 전에 필히 작성해야합니다.VBA 양식 제출시 새 레코드에 액세스하십시오.

Private Sub Form_Load() 

DoCmd.GoToRecord , , acNewRec 
Me.Username = CreateObject("WScript.Network").Username 

End Sub 

이 새로운 기록을 시작하지만 사용자가 양식을 완료하지 않고 닫을 때 그것은 불완전한 기록을 작성하고 던져 대신 빈 표시하기 위해 하드 코딩 각 필드에 양식을로드하는, 내가 사용했다.

사용자가 불완전한 양식으로 폐업 한 경우 어떻게 삭제할 수 있습니까? 또는 사용자가 제출하고 모든 필드가 기준과 일치 할 때만 새 레코드를 만들어야합니까? 가장 좋은 방법은 무엇입니까? 사전에

감사합니다.

답변

3

가장 간단하고 가장 효율적인 옵션은 제대로 기본 테이블의 필드 속성을 설정하는 것입니다.
프로그래밍이 필요하지 않으며 나중에 빌드하는 다른 인터페이스에도 적용됩니다.

+0

어떻게 도움이 될까요? Null은 일부 필드에서 완벽하게 수용 될 수 있습니다. 문제는 데이터가 이미 양식에 입력되어 사용자가 여러 가지 오류를 낳고 있다는 것입니다. 이것은 단지 또 다른 무리의 오류로 이어질 것입니다. – Fionnuala

+0

@Remou : 질문의 첫 번째 줄에는 분명히 다음과 같이 표시되어 있습니다. ** 6 개의 입력란을 포함하는 양식으로 양식을 제출하고 새 레코드를 만들기 전에 모두 입력해야합니다 **. 그래서 Null은 확실히 받아 들일 수 없으며, 여전히 내 제안이 가장 쉽고 효율적이라고 생각합니다. –

+0

몇 개의 입력란에 6 개의 입력란이 있습니까? 레코드를 시작했지만 포기했을 때 생성되는 오류에 대한 제안은 무엇입니까? – Fionnuala

2

텍스트 상자의 내용을 설정하는 대신 양식이로드 될 때 기본값을 관련 사용자 이름으로 설정하십시오.

DoCmd.OpenForm "MyForm",,,,acFormAdd 

참조 : http://msdn.microsoft.com/en-us/library/office/ff820845.aspx

당신은 다음과 같이 내용을 알고 모든 컨트롤에 대한 기본 값을 설정할 수 있습니다

당신과 처음에 추가 할 양식을 열 수 있습니다

Private Sub Form_Load() 
    Me.Username.DefaultValue = _ 
     """" & CreateObject("WScript.Network").Username & """" 
End Sub 

Date Created와 같은 것이 테이블 디자인의 기본값으로 설정 될 수 있으며 일부 컨트롤에 대해서는 기본값을 가질 수 있습니다. pply를 모든 사용자에게 제공 할 수 있으므로 폼 디자인에서 설정할 수 있습니다. True로 Required 속성을 설정
- - false로 Allow zero length 재산
:

+0

사용자 이름은 양식을 제출 한 사람을 추적하는 데 사용되는 별도의 필드입니다. 사용할 수 없지만 여전히 표시됩니다. 나는 날짜 시작, 총 분 등 6 개의 필드를 얻으려고하는데, 닫히고 완전히 채워지지 않은 경우 빈 칸으로여십시오. 나는 그것이 작동 할 수 있는지보기 위해 'Form_Close()'에서 작업 중입니다. – Grant

+0

기본 값 속성을 사용하여 겉으로 완성 된 폼을 표시하고 사용자에게 바인딩 된 컨트롤 하나를 채워 기본값을 커밋하도록 요청합니다. 불완전한 레코드가있는 이유는 데이터를 컨트롤에 채워서 폼이 시작되고 기본값은 데이터처럼 보이지만 일부 컨트롤이 편집 될 때까지 실제로 채워지지 않습니다. – Fionnuala

+0

나는 모든 질문에 대해 유감 스럽지만 vba를 처음 사용하기 때문에 각 필드에 기본값을 만드는 것은 의미가 있습니까? 나는 'DoCmd'를 주석 처리하고 다른 것을 수정했기 때문에 첫 번째 기록을 보여 주었고 나는 그것을 원하지 않습니다. – Grant