[엑셀 VBA] 예약 DB - 1. 엑세스, SQL, Recordset, ListObject 의 상관 관계

작성자
dra****
작성일
2022-07-29 23:31
조회
674

지금은 지인들의 부탁을 받으면, 모두 DB에 넣고,

엑셀은 단말기로만 쓰도록 코딩합니다. 그러면, 엑셀의 데이터가 실수로 지워져도 걱정이 없습니다.

네트워크, 특히, 웹 서버의 DB를 사용하면 언제 어디서나 접근이 가능하기에 그 편리성은 두말할 필요가 없습니다.

아래의 그림은 간단한 개념도 입니다.

 

저는 엑세스, MySQL 등등의 DB에 간편하게 접근하게 하기 위에 class로 만들어 사용하고 있습니다.

'액세스용 전역변수
Private AccessConnStr    As String
Private Conn As ADODB.Connection
Private fgAccessOpened   As Boolean
 
Private Sub Class_Initialize()
    If fgAccessOpened = True Then Exit Sub
    fgAccessOpened = False
 
    AccessConnStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & DBPath & ";Persist Security Info=False;"
 
   On Error GoTo Err_AccessOpen
      Set Conn = New ADODB.Connection
      Conn.CursorLocation = adUseClient
      Conn.Open AccessConnStr
 
      fgAccessOpened = True
 
   Exit Sub
Err_AccessOpen:
    fgAccessOpened = False
    Debug.Print "ACCESS OPEN CONNECTION ERROR" & vbNewLine & vbTab & Err.Number & vbNewLine & Err.Description
    MsgBox "ACCESS OPEN CONNECTION ERROR" & vbNewLine & vbTab & Err.Number & ": " & Err.Description, , "ACCESS OPEN CONNECTION ERROR"
 
    Conn.Close
    Set Conn = Nothing
End Sub
 
Private Sub Class_Terminate()
    Call AccessConnectionClose
End Sub
 
Sub AccessConnectionClose()
    If fgAccessOpened = False Then Exit Sub
    fgAccessOpened = False
    Conn.Close
    Set Conn = Nothing
End Sub

실제 코드로 사용하게 위해서 클래스를 인스턴스로 만들어 줍니다.

Dim access As clsAccess
Dim rs As ADODB.Recordset
Set access = New clsAccess
 
Set rs = access.ExecSQL_Recordset(<strong>strSQL</strong>)

자세한 코드는 차후에 설명 하겠습니다.

다음에는 access 테이블 생성에 관한 포스팅을 하겠습니다.

스크랩
공유
회원등급 : 29레벨
포인트 : 4348 EP
전체 9

  • 2022-09-18 15:26

    @dra**** 님 좋은 정보 감사합니다


  • 2023-01-17 16:22

    @dra**** 님 감사합니다


  • 2022-08-01 14:43

    @dra**** 님 엑세스가 같은 오피스도구라서 편리하긴 한데 클라우드에 띄워서 공유하지 못하고

    NAS나 네트워크 서버 형태로만 공유되는 것 같더라구요..

    혹시 엑세스 DB도 클라우드에 띄워서 공유하는 방법이 있을까요?


    • 2022-08-01 14:59

      @더블유에이 님 해보지는 않았는데요,

      파일을 열고 닫아야 하는 문제 때문에 클라우드에서 바로 데이터 갱신이 힘들지 않은가 하고 조심스럽게 추측해봅니다.

      엑셀의 경우도 웹에서 바로 열지 않은 이상, 무조건 다운 받아서 처리한 후 업로드하는 과정을 거쳐 자원 낭비가 심합니다.

      나중에 테스트할 기회가 있으면 해보고 알려 드릴게요... ^^


      • 2022-08-02 13:51

        @dra**** 님 아 그렇겠네요 ㅎㅎ 파일을 직접 수정하다보니 동시편집 문제가 있겠군요

        좋은 정보 감사합니다


      • 2023-05-16 00:45

        @dra**** 님 안녕하세요 저도 궁금했던 내용인데요. 설명해 주신 내용에 보면 웹서버에선 가능하다고 하셨는데 웹서버와 클라우드는 개념이 다른 건가요? 네트워크에 대해서 초보라 문의드리는 점 양해바랍니다.


  • 2023-03-02 10:45

    @dra****@dra**** 님 감사합니다!


  • 2023-01-15 13:51

    @dra**** 님 오..좋은 정보 감사합니다.


  • 2022-12-10 23:47

    @dra**** 님 ^^


전체 74
번호 제목 작성자 작성일 추천 조회
알림
[📚교재 출간 안내] 「진짜쓰는 실무엑셀」 , 드디어 출간되었습니다! (179)
오빠두엑셀 | 2022.02.03 | 추천 469 | 조회 184806
오빠두엑셀 2022.02.03 469 184806
공지사항
[VBA] 구하라 그러면 주어질 것이다. - VBA 마스터 E-Book (영문판) 첨부파일 (13)
dra**** | 2022.07.19 | 추천 10 | 조회 772
dra**** 2022.07.19 10 772
45662
선택된 범위 정렬 단축키 (20)
Denise | 2022.12.15 | 추천 5 | 조회 523
Denise 2022.12.15 5 523
44293
[엑셀 VBA] 예약 DB - 9. 시트의 바우처&견적서 양식에 데이터 뿌리기 (15)
dra**** | 2022.11.11 | 추천 4 | 조회 888
dra**** 2022.11.11 4 888
Re:[엑셀 VBA] 예약 DB - 9. 시트의 바우처&견적서 양식에 데이터 뿌리기
blue_0313 | 2023.03.21 | 추천 0 | 조회 69
blue_0313 2023.03.21 0 69
44227
[엑셀 VBA] 예약 DB - 8. Listbox 와 폼 컨트롤 연동하고 DB로 보내기 (1)
dra**** | 2022.11.09 | 추천 3 | 조회 566
dra**** 2022.11.09 3 566
44219
[엑셀 VBA] 예약 DB - 7. MySQL 클래스와 사용법 (3)
dra**** | 2022.11.09 | 추천 2 | 조회 513
dra**** 2022.11.09 2 513
43438
[엑셀 VBA] 예약 DB - 6. 폼 콘트롤과 DB 필드명 일치시키기
dra**** | 2022.10.21 | 추천 2 | 조회 310
dra**** 2022.10.21 2 310
43292
[엑셀 VBA] 예약 DB - 5. makeSQL() 함수 - INSERT, UPDATE문 자동 생성 (7)
dra**** | 2022.10.18 | 추천 3 | 조회 533
dra**** 2022.10.18 3 533
43091
[엑셀 VBA] 예약 DB - 4. 표 가지고 놀기 (17)
dra**** | 2022.10.13 | 추천 1 | 조회 695
dra**** 2022.10.13 1 695
43017
[엑셀 VBA] 예약 DB -3. 표(테이블, ListObject)을 사용해야 하는 이유1 (15)
dra**** | 2022.10.11 | 추천 2 | 조회 580
dra**** 2022.10.11 2 580
42998
[잡설] 엑셀이 웹으로 가야하는 이유2 (11)
dra**** | 2022.10.10 | 추천 5 | 조회 826
dra**** 2022.10.10 5 826
Re:[잡설] 엑셀이 웹으로 가야하는 이유2
tin | 2023.01.12 | 추천 0 | 조회 161
tin 2023.01.12 0 161
42982
[엑셀 VBA] 예약 DB - 2. 다시 웹으로 - Access에서 MySQL로 데이터 이식
dra**** | 2022.10.10 | 추천 2 | 조회 395
dra**** 2022.10.10 2 395
40590
[엑셀 VBA] 예약 DB - 1. 엑세스, SQL, Recordset, ListObject 의 상관 관계 (9)
dra**** | 2022.07.29 | 추천 3 | 조회 674
dra**** 2022.07.29 3 674
Re:[엑셀 VBA] 예약 DB - 1. 엑세스, SQL, Recordset, ListObject 의 상관 관계
tin | 2023.01.12 | 추천 0 | 조회 107
tin 2023.01.12 0 107
40511
[잡설] 엑셀의 꽃 파워 쿼리를 버리다. (5)
dra**** | 2022.07.29 | 추천 5 | 조회 1152
dra**** 2022.07.29 5 1152
40321
[경험담..해결했습니다.] &H80004005(-2147467259)시스템오류 (4)
티엠프이 | 2022.07.25 | 추천 2 | 조회 732
티엠프이 2022.07.25 2 732
40074
M365 업데이트 이후 발생하는 H80004005 (-2147467259) 자동화 오류 해결방법
오빠두엑셀 | 2022.07.23 | 추천 1 | 조회 511
오빠두엑셀 2022.07.23 1 511
39608
엑셀 그래프에 관한 유튜브 채널정보 입니다. (16)
레몬네이드 | 2022.07.15 | 추천 0 | 조회 395
레몬네이드 2022.07.15 - 395
36473
[엑셀VBA] 시트 이름을 변수로 설정하고 싶을때 간단한 방법 (3)
알파고 | 2022.06.27 | 추천 2 | 조회 1705
알파고 2022.06.27 2 1705
35196
Print_Area 동적 인쇄 영역설정 첨부파일 (7)
sean | 2022.06.21 | 추천 4 | 조회 1800
sean 2022.06.21 4 1800
34607
셀레니움으로 개별공시지가 조회 첨부파일 (5)
나야 | 2022.06.02 | 추천 2 | 조회 452
나야 2022.06.02 2 452
26273
엑셀 2021, M365 가로스크롤 기능 (39)
더블유에이 | 2022.01.23 | 추천 17 | 조회 1295
더블유에이 2022.01.23 17 1295
Re:엑셀 2021, M365 가로스크롤 기능
김학동 | 2022.01.23 | 추천 1 | 조회 353
김학동 2022.01.23 1 353
Re:엑셀 2021, M365 가로스크롤 기능
김동희 | 2022.05.30 | 추천 0 | 조회 200
김동희 2022.05.30 0 200
24189
[엑셀 VBA] Snippet - OCR: 이미지 파일을 텍스트 파일로 변환하기 (28)
dra**** | 2021.12.01 | 추천 8 | 조회 3516
dra**** 2021.12.01 8 3516
Re:[엑셀 VBA] Snippet - OCR: 이미지 파일을 텍스트 파일로 변환하기
tin | 2023.01.12 | 추천 0 | 조회 90
tin 2023.01.12 0 90