[엑셀 VBA] 예약 DB - 6. 폼 콘트롤과 DB 필드명 일치시키기
작성자
dra****
작성일
2022-10-21 23:11
조회
311
DB의 필드가 3개가 있다고 가정해 봅니다.
Dim arrFields(), arrValues() arrFields = Array('item', 'unit', 'price') Redim arrValues(LBound(arrFields) to UBound(arrFields))
그럼 폼의 textbox 컨트롤의 이름도 똑같이 'item', 'unit', 'price'으로 정합니다.
이렇게 하는 이유는,
폼 컨트롤의 이름을 안다면 아래와 같이 해서 그 값들을 배열에 쉽게 담을 수 있습니다.
for i = LBound(arrFields) to UBound(arrFields) arrValuse(i) = form.Controls(arrFields(i)).value next i
이렇게 배열에 담았으면 이를 가지고 DB에 INSERT or UPDATE를 할 수 있습니다.
Access의 경우, SQL문보다 Recordset 객체를 이용해서 Fields와 Values를 배열로 전달하면 쉽게 할 수 있습니다.
MySQL의 경우, Recordset 객체를 이용해서 전달하면 오류가 많이 납니다. 그래서 SQL문으로 전달하는 것이 좋습니다.
아래는 골프장 예약 관련 폼입니다.
이 폼의 DB Fields 들은 다음과 같습니다.
arrFields = Array("Ser", "MEM_Ser", "GCODE", "GUIDE", "GUEST", "GC_Ser", "PAX", "TOFF_DATE", "WEEK_DAY", "HOLES", _ "SELL_RATE", "SELL_TOTAL", "R_TIME", "RECHECK_DATE", "A_TIME", "GUEST_CONFIRM", "BOOK_DATE", "CONFIRM_CODE", "VCHER_DATE", _ "MEMO", "PROGRESS_Ser", "SELL_PAY_DATE", "NET_RATE", "INCOME", "NET_TOTAL", "MODIFIED", "ADMIN_Ser", "RECHECK", "LOC_INVOICE")
이런식으로 Field 이름과 폼컨트를의 이름을 일치 시키면 그 값을 쉽게 가져와서
배열이나 SQL문을 쉽게 만들 수 있습니다.
이렇게 만든것을 Recordset의 배열로 전달하면 Access로 쉽게 INSERT, UPDATE가 됩니다.
Public Function mysql_INSERT_Array(ByVal tbName As String, arrFields, arrValues) As Long On Error GoTo Error_Section 'rs.Open tbName, Conn, adOpenDynamic, adLockOptimistic, adCmdTable Dim rs As New ADODB.Recordset rs.ActiveConnection = conn rs.CursorType = adOpenDynamic rs.LockType = adLockOptimistic rs.Open tbName, , , , adCmdTable rs.AddNew arrFields, arrValues rs.UPDATE Dim Ser: Ser = conn.Execute("SELECT @@Identity")(0) mysql_INSERT_Array = IIf(Ser > 0, Ser, 0) Exit Function Error_Section: mdMessage.err_MSG "clsMySQL: mysql_INSERT_Array", Err, False mysql_INSERT_Array = 0 End Function
아니면 SQL문으로 만들었다면 MySQL로 쉽게 INSERT, UPDATE를 할 수 있습니다.
' SQL문으로 실행 : INSERT, UPDATE, DELETE Public Function mysql_ExecSQL_strSQL(strSQL As String) As Boolean Dim aff As Long On Error GoTo Error_Section Call conn.Execute(strSQL, aff) mysql_ExecSQL_strSQL = IIf(aff > 0, True, False) Exit Function Error_Section: mdMessage.err_MSG "clsMySQL: mysql_ExecSQL_strSQL", Err, False mysql_ExecSQL_strSQL = False End Function
다음에는 폼의 ListBox를 클릭하면 어떻게 각각의 컨트롤에 값을 뿌리는 지 포스팅 하겠습니다.
선을 다 그리기 힘들어서 몇 개만 ... ㅋ
전체 0
댓글을 남기려면 로그인하세요.
전체 74
번호 | 제목 | 작성자 | 작성일 | 추천 | 조회 |
[📚교재 출간 안내] 「진짜쓰는 실무엑셀」 , 드디어 출간되었습니다! (179)
![]() ![]() |
![]() ![]() |
2022.02.03 | 469 | 184806 | |
공지사항 |
[VBA] 구하라 그러면 주어질 것이다. - VBA 마스터 E-Book (영문판)
![]()
dra****
|
2022.07.19
|
추천 10
|
조회 772
|
![]() |
2022.07.19 | 10 | 772 |
45662 |
선택된 범위 정렬 단축키
(20)
![]() |
![]() |
2022.12.15 | 5 | 523 |
44293 |
[엑셀 VBA] 예약 DB - 9. 시트의 바우처&견적서 양식에 데이터 뿌리기
(15)
![]() |
![]() |
2022.11.11 | 4 | 888 |
![]()
blue_0313
|
2023.03.21
|
추천 0
|
조회 69
|
blue_0313 | 2023.03.21 | 0 | 69 | |
44227 |
[엑셀 VBA] 예약 DB - 8. Listbox 와 폼 컨트롤 연동하고 DB로 보내기
(1)
![]() |
![]() |
2022.11.09 | 3 | 566 |
44219 |
[엑셀 VBA] 예약 DB - 7. MySQL 클래스와 사용법
(3)
![]() |
![]() |
2022.11.09 | 2 | 514 |
43438 |
[엑셀 VBA] 예약 DB - 6. 폼 콘트롤과 DB 필드명 일치시키기
![]() |
![]() |
2022.10.21 | 2 | 311 |
43292 |
[엑셀 VBA] 예약 DB - 5. makeSQL() 함수 - INSERT, UPDATE문 자동 생성
(7)
![]() |
![]() |
2022.10.18 | 3 | 533 |
43091 |
[엑셀 VBA] 예약 DB - 4. 표 가지고 놀기
(17)
![]() |
![]() |
2022.10.13 | 1 | 695 |
43017 |
[엑셀 VBA] 예약 DB -3. 표(테이블, ListObject)을 사용해야 하는 이유1
(15)
![]() |
![]() |
2022.10.11 | 2 | 580 |
42998 |
[잡설] 엑셀이 웹으로 가야하는 이유2
(11)
![]() |
![]() |
2022.10.10 | 5 | 826 |
![]()
tin
|
2023.01.12
|
추천 0
|
조회 161
|
tin | 2023.01.12 | 0 | 161 | |
42982 |
[엑셀 VBA] 예약 DB - 2. 다시 웹으로 - Access에서 MySQL로 데이터 이식
![]() |
![]() |
2022.10.10 | 2 | 395 |
40590 |
[엑셀 VBA] 예약 DB - 1. 엑세스, SQL, Recordset, ListObject 의 상관 관계
(9)
![]() |
![]() |
2022.07.29 | 3 | 674 |
![]()
tin
|
2023.01.12
|
추천 0
|
조회 107
|
tin | 2023.01.12 | 0 | 107 | |
40511 |
[잡설] 엑셀의 꽃 파워 쿼리를 버리다.
(5)
![]() |
![]() |
2022.07.29 | 5 | 1152 |
40321 |
[경험담..해결했습니다.] &H80004005(-2147467259)시스템오류
(4)
![]() |
![]() |
2022.07.25 | 2 | 732 |
40074 |
M365 업데이트 이후 발생하는 H80004005 (-2147467259) 자동화 오류 해결방법
![]() ![]() |
![]() ![]() |
2022.07.23 | 1 | 511 |
39608 |
엑셀 그래프에 관한 유튜브 채널정보 입니다.
(16)
![]() |
![]() |
2022.07.15 | - | 395 |
36473 |
[엑셀VBA] 시트 이름을 변수로 설정하고 싶을때 간단한 방법
(3)
![]() |
![]() |
2022.06.27 | 2 | 1705 |
35196 |
Print_Area 동적 인쇄 영역설정
![]() ![]() |
![]() |
2022.06.21 | 4 | 1800 |
34607 |
셀레니움으로 개별공시지가 조회
![]() ![]() |
![]() |
2022.06.02 | 2 | 452 |
26273 |
엑셀 2021, M365 가로스크롤 기능
(39)
![]() ![]() |
![]() ![]() |
2022.01.23 | 17 | 1295 |
![]()
김학동
|
2022.01.23
|
추천 1
|
조회 353
|
김학동 | 2022.01.23 | 1 | 353 | |
![]()
김동희
|
2022.05.30
|
추천 0
|
조회 200
|
김동희 | 2022.05.30 | 0 | 200 | |
24189 |
[엑셀 VBA] Snippet - OCR: 이미지 파일을 텍스트 파일로 변환하기
(28)
![]() |
![]() |
2021.12.01 | 8 | 3516 |
![]()
tin
|
2023.01.12
|
추천 0
|
조회 90
|
tin | 2023.01.12 | 0 | 90 |