티스토리 뷰
토비3에 나오는 단위 Test에 관하여
간단한 VBA를 사용하던 중 애로사항이 발생하여 기록해 본다.
아래 VBA는 고급필터를 쉽게 사용하기 위한 VBA코드이다.
'####################################################### 'Final Release : 2012.12.6 '####################################################### Sub 통합DB필터() Dim rows1 As Integer Dim column1 As Integer Dim rowscount As Integer Dim columncount As Integer Dim fieldcount As Integer Dim recoardcount As Integer recoardcount = 0 'Db세팅 Filter기준열 = "A" db기준열 = "A" 행db필드명 = 1 column1 = 1 DbNameCell = "A6" FilterNameCell = "B6" DB_Sheet = Range(DbNameCell).Value filterSheet = Range(FilterNameCell).Value Range(DbNameCell).Font.Size = 1 'dbSize 계산 DbSize = Sheets(DB_Sheet).Range(db기준열 & 행db필드명).End(xlToRight).End(xlDown).Address DbRow = Sheets(DB_Sheet).Range(db기준열 & 행db필드명).End(xlDown).Address fieldcount = Range(Range(Filter기준열 & "1").Address & ":" & Range(Filter기준열 & "1").End(xlToRight).Address).Count FilterSize2 = Range(Filter기준열 & "7").End(xlToRight).Address ColumnSize = Range(Filter기준열 & "1").End(xlToRight).Address '조건수 column1을 구하는 프로시저 line1: For rows1 = Asc(Filter기준열) - 64 To Asc(Filter기준열) - 64 + fieldcount - 1 Cells(column1 + 1, rows1).Select If Cells(column1 + 1, rows1).Value <> "" Then rowscount = rowscount + 1 Else: rowscount = rowscount End If Next If rowscount > 0 And column1 < 4 Then column1 = column1 + 1 rowscount = 0 GoTo line1: End If '내용 지우기 nameOfCopyToRange = Range(Filter기준열 & "7").End(xlToRight).End(xlDown).Address Sheets(filterSheet).Range("d5").Value = nameOfCopyToRange Range(Filter기준열 & "8" & ":" & nameOfCopyToRange).Clear '고급필터 dbrange = db기준열 & 행db필드명 & ":" & DbSize 'CriteriaRange1 구하는 부분 Select Case (fieldcount \ 27) Case 0 CriteriaRange1 = Filter기준열 & "1" & ":" & _ Chr(Asc(Filter기준열) + fieldcount - 1) & column1 Case 1 CriteriaRange1 = Filter기준열 & "1" & ":a" & _ Chr(Asc(Filter기준열) + fieldcount - 27) & column1 Case 2 CriteriaRange1 = Filter기준열 & "1" & ":a" & _ Chr(Asc(Filter기준열) + fieldcount - 53) & column1 Case 3 CriteriaRange1 = Filter기준열 & "1" & ":a" & _ Chr(Asc(Filter기준열) + fieldcount - 89) & column1 End Select '고급필터 부분 Range(CriteriaRange1).Select Sheets(filterSheet).Range("c5").Value = CriteriaRange1 CopyToRange1 = Filter기준열 & "7" & ":" & FilterSize2 Range(CopyToRange1).Select Sheets(DB_Sheet).Range(dbrange).AdvancedFilter Action:=xlFilterCopy, _ criteriarange:=Range(CriteriaRange1), _ CopyToRange:=Range(CopyToRange1), _ Unique:=False Range(Filter기준열 & "1").Select 'Columns(Filter기준열 & ":" & Chr(fieldcount + 64)).EntireColumn.AutoFit End Sub
위와 같이 통으로 되어있는 Code이다. 점점 편하게 사용하려다 보니 계속 고치게 된다.
이번에 생긴 에러는 DB Size를 구하는 부분에서 에러가 생겼다. 이번에 이 VBA를 이용할 DB는 Data가 1000건 정도 되는 143건만 조회가 되었던 것.
DB Size를 구하는 부분을 Function으로 빼려고 하는데 이 Function이 DB Size를 제대로 Return해줄까 하는 Test이다.
DB Size라 함은 별거 없다. DB의 Column 수와 DB의 Row 수를 정확히 세주기만 하면 된다.
그러면 DB Column 수와 Row수를 따로 따로 구하도록 해야 될 듯 한데. 그러면 Function을 두개 만들어야겠군..
DB나 Web의 내용을 JSP를 이용하여 Excel, PDF 등으로 저장하기
이 세상에 모든 것은 미술품의 재료가 될 수 있듯이 프로그래밍 언어를 이용하면 어떤 기능이던 만들 수 있다고 생각한다.
요즘 하는 것은 내가 항상 만들면서 보람을 느끼는 Business Solution 중에서 Reporting 부분이다. Business Solution에서 Reporting이 빠질 수 없다.
난 현업이 아니고 개발자라 모든 데이터를 웹페이지에서만 보면 될 듯 한데 현업 분들은 Excel이나 PDF로 보는 것을 좋아한다.
항상 엑셀로 업무를 많이 보는 현업들과 달리 아래아 한글도 안깔아 쓰는 나는 굳이 리포팅을 Excel이나 PDF로 해야 할까 하는 생각을 해본다.
아아.. 결정을 해야 하는 분들은 한눈에 들어오는 레포트를 원하기 때문에 그런 걸지도 모르겠다.
암튼 요즘 만드는건 리포트 기능인데 DB에 있는 자료를 Excel이나 PDF로 가져오려고 하니 이건 뭐 프로그래밍이 아니고 그림을 그리는 것 같다.
보통은 엑셀이나 워드에서 키보드나 마우스로 매우 손쉽게 만들 수 있는 문서를 소스코드로 한땀한땀 그려드리는게 요즘 내가 하는 일이다.
현업분들이 사용하시는 페이지는 정적인 페이지 각각 한장일지 모르지만 그렇게 한 분, 열 분, 백 분이 사용하실 리포팅 기능을 오류 없이 최대한 이쁘게 그려드려야 하는 개발자는 또 얼마나 재미가 나는지 현업 분들은 아실라나 모르겠다.
일단 웹은 Java를 많이 쓰므로 Java Library를 이용할 수 있는 JSP로 개발을 많이 한다.
Excel로 뽑아낼 수 있는 기능을 제공하는 Library는 'Apach POI'이고, PDF로 뽑아낼 수 있는 Library는 'iText'다. 이런 Script를 잘 이용 할 수 있으면 현업 분들 업무 하는 시간이 많이 줄어들 것이라 생각한다.
흠.. 나도 언젠가는 현업을 하겠지만 예전에 군대에서 그랬 듯 내가 개발한 프로그램으로 현업 일을 매우 빨리 끝내고 나서 업무시간에 내가 쓸 프로그램을 계속 개발하고 있지 않을까 싶다.
'etc > 개발 Note' 카테고리의 다른 글
계속 막히는 부분 (1) | 2013.04.26 |
---|---|
Git으로 버젼 관리하고 Unit으로 Test하고 (0) | 2013.04.24 |
Editplus에서 Eclipse로 갈아타는데 애로사항 (0) | 2013.02.05 |
Access Token Input Part Refactoring (0) | 2013.02.05 |
Nate Open API Access Token문제에 대하여 (0) | 2013.02.02 |
- Total
- Today
- Yesterday
- 도커각티슈박스
- 도커컨테이너
- 개발자
- docker container whale
- 이직
- Sh
- docker container tissue
- 도커티슈박스
- shellscript
- Linux
- docker container tissue box
- vim
- docker container case
- 도커티슈케이스
- 싱가폴
- 2017 티스토리 결산
- 도커각티슈케이스
- docker container
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |