배움터  
  HOME > 배움터 > Daily Tip
Daily Tip

제품:   Access 버전:   2003
검색어:   undo, 되돌리기
제목:   제한적인 Undo 이용하기
     
 

새 페이지 1

  Q&A>

※ 아래 Daily Tip은 염기웅 강사님이 제공해주신 내용입니다.

얼마 전 액세스 교육시간에 한 분이 질문하셨습니다.

‘액세스에서는 엑셀과 같은 Undo 기능은 사용할 수 없나요?’

결론은 엑셀과 같은 Undo 기능은 액세스에서 사용할 수 없다는 것입니다. 이것 말고도 많이 받는 질문으로는 다음과 같은 것이 있습니다.

‘일련번호 필드에서 값이 무조건 증가되는데, 빈 번호를 찾아 해당하는 값으로 일련번호 값이 채워질 수는 없나요?’

‘데이터베이스 파일이 너무 큽니다. 실제 데이터는 얼마 되지 않는데 말이죠..’ (이 질문에 대한 문제 해결은 이전 데일리 팁에 소개되어 있습니다.)

이러한 질문에 대한 답은 모두..

‘액세스는 원래 그렇게 생겼으므로 그냥 써야 한다’
라는 것으로 귀착됩니다.
 

  STEP> 따라하기

왜 다른 오피스 프로그램에는 없는 이런 문제(사실 문제는 아니죠)가 발생할까요? 사실 있으면 좋은 기능인데 말이죠. 마이크로소프트가 기술력이 없어서 그렇게 하였을까요?

이러한 문제(?)점은 모두 액세스가 ‘다중 사용자 환경’을 고려하여 만들어 졌기 때문입니다. 다중 사용자 환경에서 수 단계의 Undo 기능이 구현된다면 상당한 혼란이 올 수 있습니다.

일련번호 필드도 빈 번호를 찾는 것은 엑셀과 같은 단일 사용자 환경에서는 큰 문제가 되지는 않지만 액세스와 같은 다중 사용자 환경에서는 데이터베이스에 과부하를 발생시키는 주범이 될 수 있습니다.

데이터베이스 파일이 자동으로 최적화 되지 않고 무한정 커지기만 하는 것 역시 다중 사용자 환경에서 자동 최적화는 데이터베이스에 엄청난 부하를 발생시킬 수 있습니다. (이러한 문제에 대한 자세한 논의는 다음 데일리 팁에서 하도록 하겠습니다. 지금은 지면상 결론만 말씀 드립니다.)

그러므로 ‘액세스가 생긴 대로 그냥 사용’하는 것이 좋습니다. 하지만 Undo 같은 기능은 상당히 아쉬운 부분이 많이 있습니다. 그래서 액세스에서는 제한적인 Undo 기능을 제공합니다.


다음과 같은 입력폼을 살펴보기 바랍니다. (여러분들이 테스트할 때에는 아무 입력폼이나 사용해도 무방합니다. 그래서 샘플파일은 제공하지 않습니다.)

(버전: 공통)

좌측 상단의 검정색 삼각형이 보입니다. 이것이 현재의 레코드 상태를 표시해 줍니다. 검정색 삼각형일 때에는 ‘현재 레코드 조회 중’이라는 의미입니다.


이제 ‘담당자 이름’ 필드와 ‘담당자 직위’ 필드 그리고 ‘도시명’ 필드에 약간의 변경을 가해 보겠습니다.

그러면 검정색 삼각형이 ‘연필모양 아이콘’으로 변경됩니다. 이것은 ‘현재 레코드 편집 중’이라는 표시입니다.

이 표시가 나타날 때는 실제로 데이터베이스에 변경사항이 기록된 것은 아닙니다. 메모리에서만 작업이 이루어 지고 있는 것이죠. 따라서 이 표시가 나타날 때는 Undo가 가능합니다.

지금은 커서(액세스 용어로 포커스)가 ‘도시명 필드에 있습니다. 이 때, ESC 키를 누르면 다음과 같이 바뀝니다.

‘도시명’ 필드의 값이 원래 값으로 되돌아 갔지요? 그렇습니다. 액세스 입력폼에서 데이터를 편집중에 ESC 키를 한 번 누르는 것은 ‘현재 편집중인 필드 되돌리기’를 수행합니다. 이 상태에서 ESC 키를 한번 더 눌러 볼까요?

이번에는 어떻게 되었습니까? ‘담당자 이름’ 필드와 ‘담당자 직위’ 필드가 동시에 원래 값으로 환원되었습니다. 아울러 연필모양 아이콘도 검정색 삼각형 모양으로 되돌아 왔구요.

액세스 입력폼에서 데이터를 편집 중에 ESC 키를 누르는 것은, 현재 필드가 편집중이 아닐 때에는 현재 레코드에 가해진 모든 변경사항을 되돌립니다. 따라서 액세스 데이터 편집작업 중에 ESC 키를 연속해서 두 번 누르면 현재 레코드에 가해진 모든 변경사항이 Undo 됩니다.

오늘의 데일리 팁 제목이 ‘제한적인 Undo 이용하기’ 입니다. 액세스에서 데이터 입력 작업을 수행할 때, 엑셀과 같은 다단계 Undo 기능은 이용할 수 없습니다.

하지만, 제한적으로나마 현재 입력중인 ‘레코드’에 한해서는(보다 엄밀히 이야기하자면 데이터베이스에 기록되지 않은 레코드) ESC 키를 이용하여 Undo 기능을 이용할 수 있습니다. 아울러 현재 레코드가 조회 상태인지, 편집 상태인지 표시하는 것도 더불어 알아두기 바랍니다.