2016-07-18 1 views
1

데이터베이스 Database과 테이블 Table이 있습니다. 온라인에서 MS Access의 VBA에서 새로 생성 된 데이터베이스 및 테이블의 필드를 만드는 방법을 온라인에서 찾았지만 매크로가 실행되기 전에 데이터베이스와 테이블이 이미 존재할 때이를 수행하는 방법을 알지 못합니다. 이미 존재하는 데이터베이스와 테이블없이 그것을 할MS Access 용 VBA를 사용하여 기존 테이블에 필드를 만드는 방법은 무엇입니까?

, 내가 실행 할 수있는 사항은 다음과 같습니다

Sub CreateTable() 

    Dim db As DAO.Database 
    Dim table1 As DAO.TableDef 

    Set db = CurrentDb 

    Set table1 = db.CreateTableDef("ExampleTable") 

    With table1 
     .Fields.Append.CreateField("newField", String) 
    End With 

하지만 어떻게 내가 이미 존재하는 테이블에 같은 필드를 추가하려면이 적응할 수 있을까?

또는 더 구체적으로, 내가 어떻게 db 데이터베이스에서 기존 테이블에

Set table1 = db.CreateTableDef("ExampleTable") 

그래서 table1 점을 수정하는 방법은 무엇입니까?

답변

4

Access DDL 문을 실행하여 기존 테이블에 필드를 추가 할 수 있습니다. TEXT(255)에서

Dim strDdl As String 
strDdl = "ALTER TABLE ExampleTable ADD COLUMN newField TEXT(255);" 
CurrentProject.Connection.Execute strDdl 

, 255 필드 크기 --- 그 필드에 포함 할 수있는 최대 문자 수입니다. 255는 Access 텍스트 필드의 절대 상한입니다. ADODB.Connection.Execute 메서드에서 TEXT 필드를 만들 때 필드 크기 값을 포함해야합니다. 원하는 경우 더 작은 값을 선택하십시오.

질문과 같이 DAO 방법을 사용하여 새 필드를 만들 때 텍스트 필드의 필드 크기는 선택 사항입니다. 그러나 크기를 지정하지 않으면 Access에서 액세스 옵션의 "기본 텍스트 필드 크기" 설정을 사용합니다.

+1

'TEXT (255)'의'255'는 무엇입니까? – Paradox

+0

설명이 추가되었습니다. – HansUp

2

이와 비슷한 것. TableDefs 컬렉션의 테이블 이름을 참조하기보다는 참조하십시오.

Public Sub CreateTable() 

Dim table1 As DAO.TableDef 
Dim fld As DAO.Field 
Dim tdf As DAO.TableDef 

' Create the new Table Def object 
Set table1 = New DAO.TableDef 

' Name the Table 
table1.Name = "Test" 

' Create the new Field 
Set fld = New DAO.Field 
fld.Name = "newField" 
fld.Type = DataTypeEnum.dbText 

' Append the Field to the table 
table1.Fields.Append fld 

' Append the table to the Table Def Collection 
' Without this the table just lives in memory 
CurrentDb.TableDefs.Append table1 

' Create another Field 
Set fld = New DAO.Field 
fld.Name = "newField2" 
fld.Type = DataTypeEnum.dbText 

' Append the New Field to the EXISTING table 
CurrentDb.TableDefs("Test").Fields.Append fld 

End Sub 
+0

도움 주셔서 감사합니다. 코드에 약간의 주석을 달아 주시겠습니까? 저에게 불분명 한 2 개 부품이있다 (나는 VBA에 아주 경험이 없다) – Paradox

+0

나는 응답을 지금 막 새롭게했다. 희망이 도움이됩니다! –