MS Access 2003 -“Tblmain에서 tbltemp로 선택 *”이후 테이블 변경을위한 VBA
-
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. 삽입 한 다음 열을 추가하십시오
삽입을 수행 한 다음 여러 가지 방법을 사용하여 열을 추가 할 수 있습니다.
- VBA에서 사용하십시오
TableDef
TBLTEMP를 가리키고 열을 추가하려면 객체 - 실행하다
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