2010-02-12 3 views
1

Access 2003 형식으로 180 개의 테이블 중 175 개를 삭제해야합니다 (Access 2000 형식 데이터베이스 사용). 내가 시도한 첫 번째 일은 테이블 목록으로 이동하여 모든 항목을 선택하고 유지하려는 항목을 Control- 클릭하고 "삭제"를 선택하는 것이 었습니다. 그러나 한 번에 하나씩 만 선택할 수 있습니다. Access에서 많은 테이블을 선택적으로 삭제 하시겠습니까?

가 그럼 난 일반 텍스트로 모든 테이블 이름의 목록을 얻을 수있는 방법을 발견하고 빔을 사용하여 drop 문을 잔뜩 만들어 :

drop table table_1; 
drop table table_2; 
... 
drop table table_175; 

을 (물론, 그 진짜 이름이 아니다.)이 문은 자신 (즉, 단지 한 번에 하나씩 실행,하지만 그 중 2 개 이상을 실행하려고하면, 나는 오류 메시지가 잘 작동 :.

목적을 물리 칠 것
Syntax error in DROP TABLE or DROP INDEX. 

오 , 접근 ... 너는 항상 내 머리카락을 꺼내고 싶다.

이 작업을 수행하기 위해 누락 된 사항은 무엇입니까? 내 목적에 필요한 몇 가지 테이블을 유지할 수있는 프로세스는 훌륭합니다. (나는 비주얼 베이직을 배울 필요가 없다.)

답변

2

Remou는 문제에 대한 해답을 가지고 있지만, 제안 사항으로 유지하려는 테이블을 새 파일로 가져오고 싶을 수 있습니다. 여러 개의 파일과 해당 데이터를 선택할 수 있습니다. 남아있는 테이블이 많지 않으면 클리너 파일로 끝날 수 있습니다.

+0

좋은 아이디어. char – Fionnuala

+0

그래, 좋은 생각이야. 나는 이것을 시도 할 것이다. –

2

VBA를 사용한다.

For Each tbl In CurrentDb.TableDefs 
    If Left(tbl.Name,4) <> "Msys" Then 
     s = "DROP TABLE " & tbl.Name 
     CurrentDb.Execute s 
    End If 
Next 

For i = (CurrentDb.TableDefs.Count - 1) To 0 Step -1 
    If Left(tbl.Name,4) <> "Msys" Then 
     ''Debug.Print CurrentDb.TableDefs(i).Name 
     CurrentDb.TableDefs.Delete CurrentDb.TableDefs(i).Name 
    End If 
Next 

당신은 배열을 제공하거나 레코드 집합 및 특정 테이블을 삭제하려는 경우 또는 테이블이 관련되는 경우 것을 통해 반복 할 수 있습니다.

+0

관계는 어떻습니까? –

+0

마지막 줄? char – Fionnuala

+0

어떤 테이블을 삭제해야하는지, 어떤 순서로해야 할지를 결정할 수 있다고 생각하지만 원래 게시물의 범위를 약간 벗어나는 것처럼 보입니다 :) – Fionnuala

1

일반적으로 위에서 설명한 것처럼 개체 모델과 VBA를 사용하여 테이블 정의와 해당 데이터를 제거합니다.

Access에서 SQL 배치를 실행할 수 없습니다. 다시 말하면 여러 SQL 문을 반복하는 방법은 VBA에 있습니다.

액세스는 콘솔 기반 RDBMS가 아니며 SQL Plus에서 할 수있는 것처럼 일괄 처리 스크립트를 실행할 수 없으므로 시도 할 경우 확실히 머리카락을 꺼내야합니다.

액세스는 응용 프로그램 컨테이너 및 분석 도구이며 모든 절차 응용 프로그램은 VBA보다 유연성이 적은 VBA 또는 매크로를 사용합니다. 할 경우 일부 VBA를 배우면 당신은 액세스에서 최대한 얻을거야. VBA 없이는 액세스가 극히 제한되며 액세스 할 수있는 기능은 단순한 임시 쿼리입니다.