2010-03-16 2 views
0

다음과 같은 함수를 사용하여 임시 테이블에서 크로스 탭 쿼리를 제거합니다. 그때 엑셀 임시 테이블을 위해 더 많은 VBA를 사용할 수 있도록MS Access 2003 - "SELECT * INTO tblTemp FROM tblMain"문 다음에 테이블을 변경하기위한 VBA

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 

내가 이렇게 엑셀의 일부 기능 사용 (공식과 같은) 다음 원래 테이블 (tblMain)로 값을 반환합니다. 내가 위로 넘어지고 있어요 간단한 자리를 선택 INTO 문 뒤에 내가 그 임시 테이블에 새로운 추가 열을 추가 할 필요가있다 나는이 작업을 수행하는 방법을 알고하지 않습니다

sql = "Create Table..." 

유일한 방법처럼 내가 이 작업을 수행하는 방법을 알고 있어야합니다. 물론 사실 이후에 이미 생성 된 테이블을 만들 수 없기 때문에 위의 방법과 잘 작동하지 않습니다. SELECT INTO 문 접근 방식이 반환되기 때문에 이전에 만들 수 없습니다. "table already exists"메시지가 표시됩니다.

어떤 도움이 필요합니까? 고마워!

+0

문제가있는 디자인처럼 들립니다. 우선, 애플리케이션의 프론트 엔드에 테이블을 생성해서는 안됩니다. 둘째, 반복되는 작업은 대상 테이블의 구조를 끊임없이 변경해야하는 것은 아닙니다. 때때로, 확실하지만, 당연한 것은 아닙니다. 가져 오기 형식을 정하자 그러면 문제를 완전히 피할 수 있습니다. –

+0

이것은 실제로 금융 기능을 호출하는 자동화 부분에 대한 것으로, 임시 액세스 응용 프로그램을 통해 만들어지며, 내 테이블에서 제공되는 테이블로 작성됩니다. 그러나 문제를 일으킨 것은 '커튼 엑셀'방식으로 작업을 시작하는 것이 었습니다. 결과는 다시 테이블로 돌아옵니다. 그래서 빈 필드를이 방식으로 생성하고 결과 데이터 필드를 실제 데이터베이스의 양식 (예 : 실제 데이터베이스) 또는 ppt 자동화 된 프레젠테이션 등에 보내야합니다. 왜냐하면이 Excel 아이디어가 실제로 작동하기 때문입니다. 내가 아는 유일한 방법은 ... – Justin

+0

...어떻게 작동하게 할 것인가? 요리 책에서 활용 기술을 익힌다. 또한 맞춤식 추가 기능이 내장되어있어 수식이 포함 된 스파크 라인 그래프를 만드는 기능을 제공하는 클래스 모듈 뷔페를 통해 Excel을 능가합니다. 그래서 나는 위의 개념을 그래프로 작업 할 수 있다고 믿는다. (그냥 MS 그래프가 아닌 기본적으로 셰이프로 생성한다.) rs.fields 대신 OLE.copy 메서드를 폼으로 반환하는 방법을 알아 내면된다. .... 그것이 훌륭하다면, 오 잘하지 않으면. 나는 당신이 말하는 것을 이해합니다. 이것은 모두 매우 일반적인 자동화 작업입니다. – Justin

답변

1

나는 다음

당신은 당신이 필요로하는 모든 열이있는 CREATE TABLE tblTemp을 할 수있는 삽입하거나 작성이

1을 달성 할 수있는 다음과 같은 방법으로 생각할 수 있습니다. 물론 TblMain보다 많은 열이 있으므로 삽입에 열 정의가 포함됩니다.

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

2. 속하고, 그런 다음 여러 가지 방법으로 VBA에서

  1. 를 사용하여 열을 추가로 삽입 할 수있는 열

    를 추가 할 수있는 TableDef 객체를 사용 tblTemp를 가리킨 다음 열을 추가하십시오.

  2. 실행 DoCmd.RunSQL "ALTER TABLE tblTemp Add Column MyNewColumn (OTTOMH)
+0

은 매력처럼 작동합니다 .... 감사합니다! – Justin

1

고양이는 항상 여러 가지 방법으로 피부를 관리합니다. DAO를 사용할 수 있습니까? 이것은 Access 내에서 사용자 인터페이스를 통해 새로운 필드를 생성 할 때 새로 생성 된 필드의 다양한 속성을 설정할 수 있다는 장점이 있습니다. 그냥 생각 :-)

이 하위 l은 작성 및 테스트되었지만 Access 2007에서는 어떤 버전과도 호환되어야합니다.

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 
+0

아 멋지다. 이런 식의 두려움도! 감사! – Justin

관련 문제