난 당신이 원하는 생각 :
If Not IsNull(DLookup("Type", "MSYSObjects", "Name='MyNewQuery'")) Then
MsgBox "An object already exists with this name"
Else
CurrentDb.CreateQueryDef "MyNewQuery", "SELECT * FROM Table1"
End If
EDIT 다시는 존재하지 않는 쿼리를 삭제하면 오류가 발생합니다 것을
Sub UpdateQuery(QueryName, SQL)
''Using a query name and sql string, if the query does not exist, ...
If IsNull(DLookup("Name", "MsysObjects", "Name='" & QueryName & "'")) Then
''create it, ...
CurrentDb.CreateQueryDef QueryName, SQL
Else
''Other wise, update the sql.
CurrentDb.QueryDefs(QueryName).SQL = SQL
End If
End Sub
참고 코멘트.
DoCmd.DeleteObject acQuery, "NewQuery"
다소 효과가 있습니다. 개체의 exintance를 확인하는 문이 실행되고 있지 않습니다. 그것은 바로 그것을 통과하고 개체가 이미 존재한다는 오류를 제공합니다. 문제는이 오류가 생성하는 크래시입니다. 가능하다면 또 다른 단서를주세요. –
충돌로 인해 데이터베이스가 손상되었다고 생각합니다. 이것이 문제가되는지 확인하기 위해 새 데이터베이스로 확인할 수 있습니다. 그 후, http://www.granite.ab.ca/access/corruptmdbs.htm을 보면서 가치가있을 것입니다. – Fionnuala
아니요, 그것이 제가 의미하는 바가 아닙니다. "Query already exists"오류를 처리 할 수 없다는 코드의 오류입니다. If Not IsNull 행이 작동하지 않습니다. 하지만 어쨌든 고마워요 ... 제 코드에 정말 도움이되었습니다. –