2009-08-04 5 views
0

액세스 데이터베이스의 특정 데이터로 보고서를 만들어야합니다. 나는 시각적 기본을 사용하여이 과정을 자동화하고 싶다. 이 문제를 해결하기 위해 쿼리를 만들었지 만 동일한 구조의 다른 데이터베이스를 가질 때마다 문제가 발생합니다.msaccess에서 런타임 중에 쿼리 생성

쿼리 "VB6에서 해당 쿼리를 직접 실행할 수 없기 때문에 테이블 만들기"가 있습니다. 이 문제를 해결할 수있는 방법이 있습니까?

답변

1

서로 다른 참조하는 SQL 쿼리에서 IN 절을 사용할 수 있습니다 MDB 파일의 예를 들면 다음과 같습니다.

"SELECT srpID, srpServiceRecordID, srpInvoiceDate, srpInvoiceNumber, srpParts " & _ 
"FROM ServiceRecordParts IN '" & strDatabasePathandName & "';" 
1

데이터 액세스 기술을 사용하여 VB6의 Access 데이터베이스 엔진에 대해 CREATE TABLE SQL DDL 문을 실행할 수 있습니다 (쿼리가 아닙니다!). ADO는 DDL에 가장 적합합니다 (예 : DAO보다 풍부한 구문).

당신은

SELECT * INTO MyTableClone FROM MyTable; 

를 사용하여 데이터를 포함하여 새 테이블을 만들 수 있지만 어떤 제약을 예를 들어, 복사하지 않습니다 모든 열은. 당신은 또한 VIEW 또는 PROCEDURE 당신은 '쿼리'가 무엇을 의미하는지에 따라 작성하는 SQL DDL을 사용하여 :(

널 (NULL)이 될 것입니다

+0

예. 하지만 "col1 = col"테이블에서 직접 "select * into table1"을 실행하면 알아 내려고했습니다. 테이블을 만든 다음 각 레코드 세트를 항상 이동합니다. :) – adbanginwar

+0

미안하지만 나는 "테이블을 만든 다음 각 레코드 세트를 항상 움직일 것입니다."라고 할 때 무슨 뜻인지 이해하지 못합니다. – onedaywhen

1

당신은 여기에서 VBA에서 두 쿼리와 SQL을 실행할 수있는 몇 가지주의 사항이 있습니다

Dim db As Database 
Dim strSQL As String 
Dim qdf As QueryDef 

''Execute 
Set db = CurrentDb 
strSQL = "SELECT EmpID, EmpName INTO NewT FROM tblT WHERE EmpName Is Not Null" 
''This will fail if the table already exists 
''Only Action queries can be Executed 
db.Execute strSQL, dbFailOnError 
Debug.Print db.RecordsAffected 

''This is not such a good approach 
''Open query, will give warning 
''that the table is about to be deleted. 
DoCmd.OpenQuery "qryUpdate" 

''Also not so good 
''Open query, skip warning 
DoCmd.SetWarnings False 
DoCmd.OpenQuery "qryUpdate" 
''This line is very important indeed 
''never set warnings off, unless you 
''set then on again 
DoCmd.SetWarnings True 

''Use query 
Set qdf = db.QueryDefs("qryUpdate") 
''The table in this SQL already exists, so 
''a small diversion 
db.Execute "DROP TABLE NewT", dbFailOnError 
''Back on track 
qdf.Execute dbFailOnError 
Debug.Print qdf.RecordsAffected 

''Change query SQL 
qdf.SQL = strSQL 

''Use SQL from query 
strSQL = qdf.SQL 
''The table in this SQL already exists, so 
''a small diversion 
db.Execute "DROP TABLE NewT", dbFailOnError 
''Back on track 
db.Execute strSQL, dbFailOnError 
Debug.Print db.RecordsAffected 

귀하의 datab을.. ase는 테이블과 쿼리를 정기적으로 추가하고 삭제할 때 압축이 많이 필요할 것이므로 일반적으로이를 피하는 것이 가장 좋습니다.

관련 문제