이번 포스팅에서는 매입처 관리폼에 만든 Listview에 데이터를 넣는 코드를 작성해 보겠습니다.
먼저 폼이 열릴때 실행되는 코드 입니다.
'폼 열릴때 실행
Private Sub UserForm_Initialize()
Call SetColumnHeaders
Call Load_Purchase_DB
Me.txtSearch.SetFocus
End Sub
Listview의 헤더를 설정해주고, 데이터를 불러온뒤 검색창으로 포커스를 맞춰줍니다.
SetColumnHeaders는 Listview의 헤더를 설정해 주는 모듈입니다.
코드는 아래와 같습니다.
'리스트뷰 헤더 설정
Private Sub SetColumnHeaders()
With Me.ListProduct.ColumnHeaders
.Add Text:="번호", Width:=0, Alignment:=lvwColumnLeft
.Add Text:="매입처명", Width:=190, Alignment:=lvwColumnLeft
.Add Text:="구분", Width:=80, Alignment:=lvwColumnCenter
.Add Text:="발주구분", Width:=80, Alignment:=lvwColumnCenter
End With
End Sub
리스트뷰의 헤더 설정시 첫번째 항목은 반드시 왼쪽 정렬로 해주셔야 제대로 표시가 됩니다.
여기서는 idx를 첫번째 컬럼으로 설정해 width를 0으로 해서 실제로는 보이지 않게 했습니다.
Load_Purchase_DB는 DB의 purchase테이블을 불러와 Listview에 데이터를 넣어주는 모듈 입니다.
코드는 아래와 같습니다.
'DB 불러오기
Private Sub Load_Purchase_DB(Optional SerchWord As String)
Dim i, j As Integer
Dim LstItem As ListItem
Me.ListProduct.ListItems.Clear
Call Connect_DB
'매입처 검색
SQL = "SELECT idx, purchaseName, sortation, orderSortation FROM purchase"
If SerchWord <> "" Then
SQL = SQL + " WHERE purchaseName LIKE '%" + SerchWord + "%'"
End If
SQL = SQL + " ORDER BY purchaseName"
rs.CursorLocation = adUseClient '★★★★★★★★★★★★★★★RecordCount를 뽑아내기위해 반드시 필요함
rs.Open SQL, Cn, adOpenStatic, adLockReadOnly
'자료가 없을경우 종료
If rs.RecordCount = 0 Then GoTo ex:
With Me.ListProduct
rs.MoveFirst
For j = 1 To rs.RecordCount '레코드 수만큼 입력
Set LstItem = .ListItems.Add(, , CStr(rs.Fields(0).Value))
For i = 1 To 3
If Not IsNull(rs.Fields(i)) Then
LstItem.SubItems(i) = CStr(rs.Fields(i).Value)
End If
Next i
rs.MoveNext '다음레코드로 이동
Next j
End With
ex:
rs.Close
Cn.Close
End Sub
차후에 검색시에도 사용할 예정이라 Optional로 SerchWord를 설정해 두었습니다.
현재 데이터가 없는 상태여서 유저폼을 실행시키면 아래와 같이 나오게 됩니다.
'엑셀 vba > 발주관리' 카테고리의 다른 글
매출처 관리 #1 테이블 만들기 (0) | 2021.02.16 |
---|---|
매입처 관리폼 #4 각 버튼의 코드 및 Listview 추가 코드 (0) | 2021.02.10 |
매입처 관리폼 #2 테이블 생성 (0) | 2021.02.09 |
매입처 관리폼 #1 라벨을 이용한 버튼 만들기 & Listview (0) | 2021.02.08 |
유저폼 만들기 #3 테이블 생성 (0) | 2021.02.04 |