나는 두 개의 액세스 getData_join
및 getData_static
조회 한 가정Access에서 하위 쿼리 SQL을 동적으로 수정하는 방법은 무엇입니까?</p> <p><code>getData_static</code> :
select * from someTable where someTable.property="value"
getData_join
:
select * from someTable inner join otherTable on someTable.property=otherTable.property
데이터베이스는 getData_join
전화 쿼리, 예를 들어, items_getData
많이 있습니다
select * from items inner join getData_join on items.property=getData_join.property
프런트 엔드에 스위치를 설정하여 사용자가 getData_static
또는 getData_join
을 호출할지 여부를 선택할 수있게하려고합니다. 지금처럼 된 QueryDef를 사용하여 즉석에서 SQL을 정의하는 다음
select * from someTable [insertClause]
과 :
을하기보다는 어쩌면 같은 더미 절 일반적인getData
쿼리를하는 것에 대한 생각, 쿼리의 두 개의 세트를 만들
Function modify_getData(isJoin As Boolean) As QueryDef
Dim qdf As QueryDef
Set qdf = CurrentDb.QueryDefs("getData")
If isJoin Then
qdf.sql = Replace(qdf.sql, "[insertClause]", "inner join otherTable on someTable.property=otherTable.property")
Else
qdf.sql = Replace(qdf.sql, "[insertClause]", "where someTable.property=""value""")
End If
Set modify_getData = qdf
End Function
프런트 엔드에서 getData
을 직접 호출하지 않으며 items_getData
을 호출하므로 수정 된 getData
QueryDef를 만드는 것이 여기에서 사용되지 않습니다. 수정 된 SQL을 호출하는 다른 쿼리에서 사용하도록 Access에서 하위 쿼리의 SQL을 동적으로 수정하는 방법이 있습니까?
특히 다른 많은 쿼리가 양식/보고서조차도이를 사용하기 때문에 두 개의 별도 쿼리를 유지하는 것이 어떻습니까? 코드가 손상 될 수 있으며 쿼리를 사용하는 모든 개체가 실패합니다. 검색어는 비 데이터 응용 프로그램 항목이므로 너무 많은 공간을 차지하지 않습니다. Plus Access의 엔진은 VBA 스크립팅 된 쿼리가 아닌 저장된 쿼리를 컴파일하고 최적화합니다. – Parfait
@ Parfait : 문제는 공간이 아닌 모든 검색어의 유지 관리라고 생각합니다. – Andre
대체는 qdf.sql에'[insertClause]'가 더 이상 없으므로 replace가 한 번만 작동합니다. – Andre