MS Access 2003 -“Tblmain에서 tbltemp로 선택 *”이후 테이블 변경을위한 VBA

StackOverflow https://stackoverflow.com/questions/2455645

  •  20-09-2019
  •  | 
  •  

문제

나는 다음과 같은 기능을 사용하여 Crosstabs 쿼리에서 임시 테이블을 만듭니다.

Function SQL_Tester()
Dim sql As String

If DCount("*", "MSysObjects", "[Name]='tblTemp'") Then
   DoCmd.DeleteObject acTable, "tblTemp"
End If

sql = "SELECT * INTO tblTemp from TblMain;"

 Debug.Print (sql)

  Set db = CurrentDb
  db.Execute (sql)

End Function

그런 다음 더 많은 VBA를 사용하여 임시 테이블을 가져 와서 Excel 기능 (공식 등)을 사용한 다음 값을 원래 테이블 (TBLMAIN)으로 반환 할 수 있습니다. 내가 넘어지고있는 간단한 지점은 SELECT에 명세서 후에 해당 임시 테이블에 새로운 추가 열을 추가해야한다는 것입니다.이 작업을 수행하는 방법을 모릅니다.

sql = "Create Table..."

이 작업을 수행하는 방법을 아는 유일한 방법과 같습니다. 물론 이것은 사실 이후에 이미 만들어진 테이블을 만들 수 없기 때문에 위의 접근 방식과 잘 어울리지 않으며, 이전에 만들 수 없기 때문에이를 만들 수 없습니다. select inton 문 접근법은 "이미 존재하는 테이블"메시지를 반환합니다.

도움이 있습니까? 감사합니다!

도움이 되었습니까?

해결책

나는 당신이 이것을 달성 할 수있는 다음 방법을 생각할 수 있습니다

1. 생성 한 다음 삽입하십시오

당신은 할 수 있습니다 CREATE TABLE tblTemp 필요한 모든 열이 있습니다. 물론, tblmain이 포함하는 것보다 더 많은 열이 있으므로 삽입물에는 열 정의가 포함됩니다.

INSERT INTO tblTemp (Col1, Col2, Col3) SELECT Col1, Col2, Col3 from TblMain

2. 삽입 한 다음 열을 추가하십시오

삽입을 수행 한 다음 여러 가지 방법을 사용하여 열을 추가 할 수 있습니다.

  1. VBA에서 사용하십시오 TableDef TBLTEMP를 가리키고 열을 추가하려면 객체
  2. 실행하다 DoCmd.RunSQL "ALTER TABLE tblTemp Add Column MyNewColumn (Ottomh)

다른 팁

항상 고양이를 피부에 넣는 방법은 항상 여러 가지가 있습니다. Dao를 사용할 수 있습니까? 이는 액세스 내에서 사용자 인터페이스를 통해 새 필드를 만들 때 얻을 수있는 새로 생성 된 필드의 다양한 속성을 설정할 수 있다는 이점이 있습니다. 그냥 아이디어 :-)

이것은 Access 2007에서 생성 및 테스트 된 하위 L은 모든 버전과 호환 될 수 있어야합니다.

Public Sub AddField()

Dim dbs As DAO.Database
Dim tdf As DAO.TableDef
Dim fld As DAO.Field

Dim strTable As String

Set dbs = CurrentDb

strTable = "tblTemp"

'create the TableDef object that
'wish to change
Set tdf = dbs.TableDefs(strTable)
'create new field
Set fld = tdf.CreateField("Name", dbText)
'set property of new created field
fld.AllowZeroLength = True
'append the new field to the tabledef
tdf.Fields.Append fld

End Sub
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top