달력

05

« 2018/05 »

  •  
  •  
  • 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
  •  
  •  

'엑셀VBA 이야기'에 해당되는 글 28

  1. 2015.01.11 [ 엑셀VBA 13] 불량관리 프로그램 만들기 - SQL의 프로그램 적용하기

 

 

 

[ 엑셀VBA 13] 불량관리 프로그램 만들기 - SQL의 프로그램 적용하기

 

오랜만에 불량관리 프로그램 13강을 설명을 드리는데 연말이다 연초다 해서 강좌를 올릴 시간이 없어

이제서야 올리는 것을 미안스럽게 생각한다.

 

자 오늘을 본격적인 SQL의 프로그램 적용 여기서는 전체 입력항목중의 공정별 불량합계를 구해보도록

한다.

 

 

우선 상세내용을 먼저 설명해보면 아래의 입력된 데이터베이스로 부터 불량을 조회하여

 

 

 

 

아래 우측의 불량수량 항목에 공정1,공정2,공정3,공정4에 해당하는 불량수량을 합계 후

 

불량수량란에 자동으로 입력되는 프로그램이다.

 

물론, 집게되는 불량수량의 우측상단에 분석이라는 버튼을 누르면 실행이 되는 것이다.

 

 

 

이 프로그램을 만들기 위해서는  데이터베이스 함수인 SQL을 사용설정을 한 후

 

 VBA작성을 해서 데이터를 자동으로 받아 오는 것이다.

 

 

시트텝의 코드보기를 통해 아래과 같이 모듈1을 생성한다.

 

하단에 모듈1의 주기능을 설명하기로 한다.

 

 

 

 

 

Sub Analysis()          'Analysis라는 프로시져를 생성한다.
Dim db As Database   ' 데이터베이스를 설정한다.
Dim rs As Recordset   ' 레코드셋을 설정한다.
Dim str As String        ' SQL을 사용하기 위한 문장을 str로 설정한다.
Dim i, j, k                 ' 변수i,j,k를 설정한다.
Set db = OpenDatabase(ThisWorkbook.Path & "\" & ThisWorkbook.Name, False, True, "Excel 8.0;")

                              ' 엑셀로부터 가져오는 db를 설정한다.

 

For i = 1 To 4            '반복수를 4까지 증가 데이터를 공정1 부터 공정4까지 넣을 계획임.
   str = "SELECT  SUM(수량) "     ' 모든 수량을 선택
   str = str & " FROM [Data$]  " '  ' Data라는 이름을 가진 db가 경로이다.
   str = str & " WHERE 공정 = '" & ActiveSheet.Cells(4 + i, 7) & "'"   '공정은 셀의 값인데 공정1~ 4의 이름이

                                                                                         목적어 이다.
   str = str & " AND 처리결과 LIKE '*폐기*' "                                '처리결과는 폐기항목이다.
   Set rs = db.OpenRecordset(str)                                             '레코드셋은 str로 db에 연결한다.
   
   ActiveSheet.Select                   ' 현재시트를 선택하고
   With ActiveSheet
       .Cells(4 + i, 8).CopyFromRecordset rs ' 셀에다 1씩증가하면 값을 넣는다.(공정1의 값, 공정2의값...)
   End With
   rs.Close                                 '레코드셋을 닫고
   Set rs = Nothing                      '레코드셋을 없앤다.
Next i                                       'i에대한 루프 종료

   db.Close                                'db를 닫고
   Set db = Nothing                      'db를 없앤다.
End Sub

 

 

 

Q-분석_데이터베이스_2014.12.17.xlsm

 

 

 

 

불량율관리 프로그램 만들기 시리즈

 

1. 매크로의 이해

2. 절대참조와 상대참조

3. 조건절 if

4. 반복문 for - next

 

5. 조건문 select case

6. 데이터베이스의 구성

7. 유효성검사를 통한 입력 규칙만들기

8. 이중유효성검사 적용

 

9. 엑셀 데이터베이스 사용설정 적용하기

10. 분석툴 만들기

11. 데이터입력 행삽입 모듈만들기

12. 대용량 DB사용을 위한 SQL함수 알아보기

13. SQL 합수 프로그램에 적용하기

 

Posted by mapagilove