루프

2012-07-12 3 views
1

나는 그런 table_0, 된 table_1 많은 유사한 동일과 테이블과 모두 순차적으로 지정됩니다 그들의 이름을 가질 것이다 Access에서 데이터베이스를 만드는거야 ...루프

나는 원 VBA에서 루프를 만들어 테이블을 만들고 필드를 쉽게 추가하는 등의 방법이 있는지 알아야합니다. 나는 테이블을한다면

그래서,이 과정 수 있지만 VBA에서

while(i=0, i<20,i++){ 
CREATE TABLE table_i(
field_1 int PRIMARY KEY, 
field_2 CHAR(255)); 
} 

답변

2

VBA에서, 당신이 할 수있는이 같은 당신의 번호 테이블 이름을 반복 ...

Dim strTable As String 
Dim i As Long 
For i = 0 To 20 
    strTable = "table_" & CStr(i) 
    Debug.Print strTable 
Next i 

하지만 각 테이블 이름을 인쇄하는 것 외에 다른 작업을 수행하려고합니다. 따라서 귀하가 이미 CREATE TABLE 성명서를 작성했다고 가정 해보십시오. 아마

CREATE TABLE table_name (
field_1 INTEGER PRIMARY KEY, 
field_2 TEXT(255)); 

그래서 당신은 당신의 For 루프를 때마다 strTable의 현재 값으로 table_name 교체 문자열 변수에 그 DDL 문을로드하고 DDL 문을 실행할 수 있습니다 ... 다음과 같습니다.

당신이 이전 Access 버전을 사용하는 경우 Replace() 기능을 먼저 액세스 2000과 함께 사용할 수되었다고
Dim strTable As String 
Dim i As Long 
Dim strSql As String 
strSql = "CREATE TABLE table_name (" & vbCrLf & _ 
    "field_1 INTEGER PRIMARY KEY," & vbCrLf & _ 
    "field_2 TEXT(255));" 
For i = 0 To 20 
    strTable = "table_" & CStr(i) 
    CurrentProject.Connection.Execute Replace(strSql, _ 
     "table_name", strTable) 
Next i 

, 당신은 당신의 SQL 문자열을 처리 할 수있는 다른 방법이 필요합니다.

ALTER TABLE 문을 실행하려는 경우 대신 수행 할 수 있습니다.

그래서 나는 VBA로 당신이 원하는 것을 쉽게 할 수 있다고 생각합니다. 그러나 나는 이되어야하는지 확신 할 수 없습니다. 동일한 구조를 가진 여러 테이블은 일반적으로 디자인 오류를 알리는 빨간색 플래그입니다. 귀하의 경우에 설계상의 오류라고 결론 지을 증거는 없습니다. OTOH, 그것의 결론은 이 아니며,의 설계 오류입니다. ;-)

+1

+1. 내가 할 수만 있다면 마지막 단락을 추가하기 위해 여분의 upvote를 추가 할 것입니다. :-) –

+0

@KenWhite 마지막 단락이이 대답을 제출할 진정한 동기였습니다. :-) 건배. – HansUp

+0

철저한 답변을 주셔서 감사합니다 :-) 그리고 마지막 단락에 대해서는 올바른 구조인지 잘 모릅니다. 그러나 이것이 올바른 것인지 물어볼 수는 없습니다. 동일한 필드와 행을 액세스 할 수있는 동일한 테이블을 Excel에서 구성하고 있습니다. 모든 데이터를 하나의 테이블에 넣을 수는 있지만 큰 스프레드 시트가 하나만 있습니다. – user1290426