나눔터  
  HOME > 나눔터 > 묻고답하기 > 액세스
액세스
액세스에 대한 질문과 답변을 올려주세요. 단, 취지에 맞지 않는 글은 운영자가 삭제합니다.
 "000 님, 도와주세요", "부탁 드립니다.", "급합니다!" 등과 같이 막연한 제목을 달지 말아주세요.
[필독] 빠르고 정확한 답변을 얻는 16가지 Tip !
[필독] 저작권법 개정에 따른 이용안내
작성자:  

 황동준 (bogri2000)

추천:  1
파일:     조회:  5471
제목:   [RE]폼에서 이전 레코드값 참고하여 자동 입력하기
     
  * 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.

 - 액세스 버전(95,97,2000,xp,2003,2007):

* 아래줄에 질문을 작성하세요 >> 07


안녕하세요. 

'이벤트'로  '필드'값을 자동 입력하게 하려고 합니다. 
방법을 잘 모르겠어서 질문해요.  

질문1) 이전 레코드에 숫자 1 더한 값 출력

[상황] 단일폼에서
참고할 필드명 : 숫자  (직전 레코드 값, 값이 숫자로 되어있습니다,)
참고하여 입력될 필드명 : 숫자   (바운드 된 컨트롤 박스명은 "번호")
필요한 연산 :  이전 레코드 "숫자"필드 + 1 = 현재 레코드 "숫자"필드

DefaultValue 많이 쓰시는거 같은데 문법을 몰라서요


질문2) 현재 같은 레코드에서 다른 필드 값 복사

[상황] 단일폼에서
참고할 필드명 : 이름  (현재 레코드 값, 값이 문자로 되어있습니다,)
참고하여 입력될 필드명 : 담당자  (바운드 된 컨트롤 박스명은 "담당")
필요한 연산 :  복사
 

읽어주셔서 감사합니다.
==============[조병민님 글에 대한 답변입니다]==============

설명드리기에 앞서 특별한 이유가 있지 않다면 컨트롤 원본명과 폼내 컨트롤이름은 같이 써주세요. 구분하실려는 의도이신듯 한데 오히려 더 헷갈립니다.

질문1)

일련번호 처리를 위함으로 이해 됩니다.
폼에서 입력하는 방법에 따라 간단할수도 복잡할 수도 있습니다. 모든 조건을 염두해 두고 작성 했습니다.
테이블에 일련번호 필드가 필수로 있어야 합니다.(여기서는 ID )

    Dim prevNo
    
    '현재 레코드 바로 앞의 숫자를 구한다.
    If Me.NewRecord Then
        prevNo = DMax("숫자", "테이블1")
    Else
        prevNo = Nz(DMax("숫자", "테이블1", "ID < " & Me.ID))
    End If

    '이전 숫자가 없으면 메세지를 띄우고 명령을 중단한다.(처음레코드일경우)
    If prevNo = "" Then
        MsgBox "처음 레코드 입니다."
        Exit Sub
    Else
    '아니면 이전 레코드의 숫자에 1을 더한다.
        prevNo = prevNo + 1
    End If

    '현재 레코드에 숫자필드에 값이 부여 되었는지 확인하고
    If Me.숫자 > 0 Then
        '정확한 값이면 명령을 중단한다.
        If Me.숫자 = prevNo Then
            Exit Sub
        Else
        '아니면 물어보고 처리한다.
            If MsgBox("이미 다른번호가 부여되어 있습니다." & vbLf & "교체하시겠습니까?", vbYesNo) = vbYes Then
                Me.숫자 = prevNo
            Else
                Exit Sub
            End If
        End If
    Else
        '아니면 값을 넣어준다.
        Me.숫자 = prevNo
    End If

질문2)

앞서 이전 질문에 있던 내용입니다만,,

    me.복사될필드 = me.복사할필드

로 하시면 됩니다.


추가로,

DefaultValue 는 현재 컨트롤의 기본값을 지정해주는 vba명령입니다.

새레코드 상태에서 각 컨드롤의 값이 미리 타이핑 되어지게 됩니다. 특정 필드에서 항상 같은 값을 사용하는 경우 속성창에서 기본값에 지정해주시면 되구요. 코드를 사용한다는 의미로는 종종 변하지만 연속으로 같은 값을 자주 입력할때ㅡ이전 값을 참조하여ㅡ AfterUpdate때 아래처럼 사용합니다.

필드명.DefaultValue = "'" & Me.필드명 & "'"
 
[불량 게시물 신고]  
조병민네 잘알겠습니다. 
답변감사드립니다.
11-06 (12:47)
삭제 ■신고
        
  

작성일 : 2016-11-06(03:35)
최종수정일 : 2016-11-06(03:49)
 


 ◎ 관련글

  제 목   작성자   날짜
폼에서 이전 레코드값 참고하여 자동 입력하기 조병민 2016-11-05
[RE]폼에서 이전 레코드값 참고하여 자동 입력하기 황동준 2016-11-06