ACCESS에서 SQL을 실행하는 2가지 방법

ACCESS에서 SQL을 실행하는 2가지 방법(DoCmd.RunSQL, currentDB().Execute)에 대해서 설명합니다.

ACCESS를 VBA를 이용해서 제어하는 가장 큰 장점은 데이터베이스를 컨트롤하는 것이기 때문에 쿼리를 이용한 데이터 정제가 가능하다는 것입니다. 실제로 엑셀에서 표를 이용하는 것이 아닌 DB를 이용해서 데이터를 관리할 때 얻을 수 있는 이점이 상당히 많이 있습니다.

주로 Form을 만들어 데이터 관리를 하게 되며 VBA를 이용하게 됩니다. 이번 글에서는 VBA에서 쿼리를 실행하는 두 가지 방법에 대해서 정리합니다.

ACCESS에서 SQL을 실행하는 2가지 방법

ACCESS VBA에서 sql을 실행하는 방법은 두 가지가 있습니다.

  1. DoCmd.RunSQL을 이용하는 방법
  2. currentDb().Execute를 이용하는 방법

예시 코드는 다음과 같습니다. 다음은 YourColumn의 데이터를 모두 일괄 삭제하는 예시 코드입니다.

DoCmd.RunSQL

Dim sql as String

sql = "UPDATE YourTable SET YourColumn = NULL;" 

DoCmd.RunSQL sql 

currentDb().Execute

Dim sql as string
Dim dbs as DAO.Database
set dbs = CurrentDb()

sql = "UPDATE YourTable SET YourColumn = NULL;" 
dbs.Execute sql, dbFailOnError

dbs.close
set dbs = nothing

차이점

동일한 기능을 수행하는 두 코드이지만 가장 큰 차이점은 1번 DoCmd를 이용할 경우 변경되는 내용에 대한 경고 메시지를 출력하지만 2번의 .Execute 메서드의 경우 별도의 경고메시지를 출력하지 않는다는 점입니다.

1번 방법의 경우 DoCmd.SetWarnings를 이용하여 경고 메시지를 나오지 않도록 하는 방법도 있지만 해당 설정은 향후 문제가 발생하였을 때 trouble-shooting이 힘들다는 단점이 있습니다.

References

clearing an entire column in access (stack overflow)

Remove confirmation when using DoCmd.RunSQL for INSERT and DELETE (stack overflow)

Leave a Comment