2009-06-04 2 views
1

빈 테이블에 519 행의 스프레드 시트에서 데이터를 가져온 경우 왜 자동 번호 키가 56,557,618에서 시작 되었습니까? 얼마나 큰데? 필자는 프로젝트에서 시작하지 않았고 스프레드 시트를 상당히 정기적으로 버릴 것으로 예상했기 때문에 기본 키 필드의 숫자가 부족한 상태로 끝나기를 원하지 않습니다.MS Access에서 일련 번호 가져 오기

답변

1

Access는 빈 테이블에서도 마지막으로 지정한 ID를 기억합니다. 당신이 소형에있는 일련 번호를 재설정하려면/

는 또한 일련 Access에서 당신은 압축 및 복구를 사용하지 않고 일련 번호를 재설정 할 수 있습니다 2,147,483,647

+0

빈 테이블이 있습니까? 이 스프레드 시트 덤프는 테이블이 처음 기록 된 때였습니다. – NickSentowski

+0

매번 테이블을 떨어 뜨리면됩니다. 아니면 테이블을 재사용하고 있습니까? –

+0

처음으로 테이블을 사용했을 때 제 열쇠는 56 밀이었습니다. 그 결과, 나는 테이블을 죽이고, 다시 만들고, 다시 버리고, 비슷한 결과를 얻었습니다. 압축하고 복구 할 때 "삭제 된"키가 다시 나타 납니까? – NickSentowski

3

까지 갈 수있는 긴 정수 테이블을 비우는 후 데이터베이스를 복구 :

CurrentDb.Execute "ALTER TABLE tblTable ALTER COLUMN ID COUNTER(1,1)" 

SQL을 실행하기 전에 테이블이 비어 있는지 확인해야합니다. 그렇지 않으면 Access에서 중복 자동 노드를 만들려고합니다.

+0

VBA에서 실행해야합니까? 나는 ALTER TABLE이 SQL 명령이라고 생각했지만 그것은 나를 위해 돌아 가지 않을 것이다. – NickSentowski

+0

위와 같이 작성되었으므로 VBA에서 실행되지만 ALTER TABLE tblTable ALTER COLUMN ID COUNTER (1,1)를 쿼리 디자인 창의 SQL 뷰에 붙여 넣으면 실행됩니다. 1, 100,1에서 다시 시작하기를 원하지 않는 한 Counter (1,1)를 사용할 필요가 없습니다. – Fionnuala

0

자동 번호 열을 포함하는 추가 쿼리를 만들어 자동 번호를 다시 설정할 수도 있습니다. 일단 행이 추가되면 숫자는 추가 된 값 + 1로 설정됩니다.

이렇게하면 값이 가장 높은 현재 값보다 작지 않도록주의해야합니다.

예 :

INSERT INTO tblName (id) 
SELECT [tblName]![id]+1 AS [New Value] 
FROM tblName 
GROUP BY [tblName]![id]+1, tblName.id 
HAVING (((tblName.id)=(Select max(id) from tblName))); 

자동 번호를 마지막 번호의 + 2로 재설정합니다. 참고로, 필수 열을 포함하고 나중에 새 행을 삭제해야합니다.