정보과학 IT

Visual Basic 으로 만든 함수

물곰탱이 2012. 10. 8. 14:30

Visual Basic 으로 만든 함수

 

'======================================================================
' MD_SKY : 공용 MODULE
'======================================================================
Option Compare Database   'Use database order for string comparisons
Option Explicit

'----------------------------------------------------------------------
' GLOBAL 변수 선언
'----------------------------------------------------------------------
Global G_DB As DAO.Database            ' DATABASE
Global G_FORM As Form                  ' FORM
Global G_SQL As String                 ' SQL 문
Global G_ERROR As String               ' ERROR MESSAGE
Global G_USER As String                ' LOGIN USER ID
'----------------------------------------------------------------------

 

'----------------------------------------------------------------------
' TOG_KE12.DLL    :   영문/한글/반각/배각 TOGGLE DLL
'----------------------------------------------------------------------
Declare Sub SETHANGLE Lib "C:\PHONEL\TOG_KE12.DLL" (ByVal HWND%, ByVal BMODE%)
Declare Sub SETSBCSCHAR Lib "C:\PHONEL\TOG_KE12.DLL" (ByVal HWND%, ByVal BMODE%)

 

'----------------------------------------------------------------------
' 공용 FUNCTION/SUB 목록
'----------------------------------------------------------------------
'   FC_WEEKDAY              한글 요일을 반환
'   FC_WEEKDAY_CHN          漢字 요일을 반환
'   FC_HEXA_KOR             한글의 SORT를 위해 HEXA CODE 값을 구함
'   FC_PRT_PREVIEW          인쇄작업시 미리보기 모드
'   FC_NULL_TO_EMPTY        NULL 값을 EMPTY STRING으로 치환
'   FC_NULL_TO_ZERO         NULL 값을 ZERO(0)로 치환
'   FC_TRIM_ALL             좌/우/내부 모든 SPACE를 제거
'   FC_ELIM_HYPHEN          좌/우/내부 모든 HYPHEN을 제거
'   FC_GET_SCORE            좌/우/내부 모든 |을 제거
'   FC_FILL_LEFT            왼쪽에 원하는 문자로 채워넣기
'   FC_FILL_RIGHT           오른쪽에 원하는 문자로 채워넣기
'   FC_TOG_KE12             영문/한글/반각/배각 TOGGLE
'   FC_RND                  난수를 반환
'----------------------------------------------------------------------
'   FC_TRIMSPACE            NULL 값을 SPACE(1)으로 치환
'   FC_TRIMSPACE_TRUE       NULL 값을 SPACE(1)으로 치환
'   FC_TRIMZEROINT          NULL 값을 0로 치환(INTEGER)
'   FC_TRIMZEROLNG          NULL 값을 0로 치환(LONG)
'   FC_TRIMZERODBL          NULL 값을 0로 치환(DOUBLE)
'   FC_TRIM19YYMMDD         YYMMDD의 앞에 19를 붙인 뒤 반환

'======================================================================

Function FC_WEEKDAY(AR_STRING As Variant)
'======================================================================
' FC_WEEKDAY
'======================================================================
' 1. 설명 :   한글 요일을 반환
'======================================================================
    If IsDate(AR_STRING) Then
    Else
        FC_WEEKDAY = "ERROR"
    End If
    Select Case WeekDay(DateValue(AR_STRING))
    Case 1: FC_WEEKDAY = "일"
    Case 2: FC_WEEKDAY = "월"
    Case 3: FC_WEEKDAY = "화"
    Case 4: FC_WEEKDAY = "수"
    Case 5: FC_WEEKDAY = "목"
    Case 6: FC_WEEKDAY = "금"
    Case 7: FC_WEEKDAY = "토"
    End Select
End Function

Function FC_WEEKDAY_CHN(AR_STRING As Variant)

'======================================================================
' FC_WEEKDAY_CHN
'======================================================================
' 1. 설명 :   漢字 요일을 반환
'======================================================================
    If IsDate(AR_STRING) Then
    Else
        FC_WEEKDAY_CHN = "ERROR"
    End If
    Select Case WeekDay(DateValue(AR_STRING))
    Case 1: FC_WEEKDAY_CHN = "日"
    Case 2: FC_WEEKDAY_CHN = "月"
    Case 3: FC_WEEKDAY_CHN = "火"
    Case 4: FC_WEEKDAY_CHN = "水"
    Case 5: FC_WEEKDAY_CHN = "木"
    Case 6: FC_WEEKDAY_CHN = "金"
    Case 7: FC_WEEKDAY_CHN = "土"
    End Select
End Function

 

Function FC_HEXA_KOR(AR_STRING As Variant)
'======================================================================
' FC_HEXA_KOR
'======================================================================
' 1. 설명 :   한글의 SORT를 위해 HEXA CODE 값을 구함
'======================================================================
    If IsNull(AR_STRING) Or AR_STRING = "" Then
        FC_HEXA_KOR = "00"
        Exit Function
    End If
   
    Dim STR_LENTH As Integer
    Dim STR_SEQ
    Dim STR_HEX As String
   
    STR_HEX = ""
    STR_LENTH = Len(AR_STRING)
    For STR_SEQ = 1 To STR_LENTH
        STR_HEX = STR_HEX & Hex(Asc(Mid$(AR_STRING, STR_SEQ, 1)))
    Next
    FC_HEXA_KOR = STR_HEX

End Function

 

Function FC_PRT_PREVIEW(KIND As Integer)
'======================================================================
' FC_PRT_PREVIEW
'======================================================================
' 1. 설명 :   PRINT PREVIEW
'======================================================================
  Dim I As Integer, CNT As Integer
  If Forms.Count = 0 Then
     Exit Function
  End If
  CNT = Forms.Count - 1
  If Forms(CNT)!PRT_PREVIEW.Caption = "미리보기" Then
     For I = 0 To CNT Step 1
         If KIND = 1 Then
            DoCmd.OpenForm Forms(I).FormName, , , , , A_NORMAL
         Else
            DoCmd.OpenForm Forms(I).FormName, , , , , A_HIDDEN
         End If
     Next I
  End If
  Exit Function
End Function

 

Function FC_NULL_TO_EMPTY(AR_STRING As Variant)
'======================================================================
' FC_NULL_TO_EMPTY
'======================================================================
' 1. 설명 :   STRING 변수의 NULL 값을 EMPTY STRING으로 치환
'======================================================================
    If IsNull(AR_STRING) Or AR_STRING = "" Then
        FC_NULL_TO_EMPTY = ""
    Else
        FC_NULL_TO_EMPTY = AR_STRING
    End If
End Function

 

Function FC_NULL_TO_ZERO(AR_DOUBLE As Variant)
'======================================================================
' FC_NULL_TO_ZERO
'======================================================================
' 1. 설명 :   DOUBLE 변수의 NULL 값을 ZERO(0)로 치환
'======================================================================
    If IsNumeric(AR_DOUBLE) = False Then
        FC_NULL_TO_ZERO = 0
    Else
        FC_NULL_TO_ZERO = AR_DOUBLE
    End If
End Function

 

Function FC_TRIM_ALL(AR_STRING As Variant)
'======================================================================
' FC_TRIM_ALL
'======================================================================
' 1. 설명 :   STRING 변수의 좌/우/내부 모든 SPACE를 제거
'======================================================================
    If IsNull(AR_STRING) Or AR_STRING = "" Then
        FC_TRIM_ALL = ""
        Exit Function
    End If
   
    Dim STR_LENGTH As Integer
    Dim STR_SEQ
    Dim SEQ_CHAR As String
    Dim STR_ALL_TRIM As String
   
    STR_ALL_TRIM = ""
    STR_LENGTH = Len(AR_STRING)
    For STR_SEQ = 1 To STR_LENGTH
        SEQ_CHAR = Mid$(AR_STRING, STR_SEQ, 1)
'        If SEQ_CHAR <> Space(1) Then
        If SEQ_CHAR <> Space(1) And SEQ_CHAR <> " " Then   ' 배각스페이스까지 제거
            STR_ALL_TRIM = STR_ALL_TRIM & SEQ_CHAR
        End If
    Next
    FC_TRIM_ALL = STR_ALL_TRIM
    Exit Function
End Function

 

Function FC_ELIM_HYPHEN(AR_STRING As Variant)
'======================================================================
' FC_ELIM_HYPHEN
'======================================================================
' 1. 설명 :   STRING 변수의 좌/우/내부 모든 HYPHEN을 제거
'======================================================================
    If IsNull(AR_STRING) Or AR_STRING = "" Then
        FC_ELIM_HYPHEN = ""
        Exit Function
    End If
   
    Dim STR_LENGTH As Integer
    Dim STR_SEQ
    Dim SEQ_CHAR As String
    Dim STR_ELIM_HYPHEN As String
   
    FC_ELIM_HYPHEN = ""
    STR_LENGTH = Len(AR_STRING)
    For STR_SEQ = 1 To STR_LENGTH
        SEQ_CHAR = Mid$(AR_STRING, STR_SEQ, 1)
        If SEQ_CHAR <> "-" Then
            STR_ELIM_HYPHEN = STR_ELIM_HYPHEN & SEQ_CHAR
        End If
    Next
    FC_ELIM_HYPHEN = STR_ELIM_HYPHEN
    Exit Function
End Function


Function FC_GET_SCORE(AR_STRING As Variant)
'======================================================================
' FC_GET_SCORE
'======================================================================
' 1. 설명 :   STRING 변수의 좌/우/내부 모든 |을 제거
'======================================================================
    If IsNull(AR_STRING) Or AR_STRING = "" Then
        FC_GET_SCORE = ""
        Exit Function
    End If
   
    Dim STR_LENGTH As Integer
    Dim STR_SEQ
    Dim SEQ_CHAR As String
    Dim STR_GET_SCORE As String
   
    FC_GET_SCORE = ""
    STR_LENGTH = Len(AR_STRING)
    For STR_SEQ = 1 To STR_LENGTH
        SEQ_CHAR = Mid$(AR_STRING, STR_SEQ, 1)
        If SEQ_CHAR <> "|" Then
            STR_GET_SCORE = STR_GET_SCORE & SEQ_CHAR
        End If
    Next
    FC_GET_SCORE = STR_GET_SCORE
    Exit Function
End Function

 

Function FC_FILL_LEFT(AR_ORG_STRING As Variant, AR_LENGTH As Integer, AR_FILL_CHAR As String)
'======================================================================
'   FC_FILL_LEFT
'======================================================================
'   1. 설명 :   STRING 변수의 왼쪽에 전체길이보다 적은 갯수만큼
'               원하는 문자로 채워넣기
'======================================================================
    If AR_FILL_CHAR = " " Then
    ElseIf Len(FC_NULL_TO_EMPTY(AR_FILL_CHAR)) = 1 Then
    Else
        FC_FILL_LEFT = "ERROR"
        Exit Function
    End If
   
    Dim ORG_LENGTH As Integer
    Dim CHAR_COUNT As Integer
    Dim STR_LENTH As Integer
    Dim REPEAT As Integer
    Dim SEQ_CHAR As String
    Dim STR_FILLED As String
   
    If IsNull(AR_ORG_STRING) Or AR_ORG_STRING = "" Then
        ORG_LENGTH = 0
    Else
        ORG_LENGTH = Len(AR_ORG_STRING)
    End If

    CHAR_COUNT = AR_LENGTH - ORG_LENGTH
   
    STR_FILLED = ""
    STR_LENTH = Len(AR_ORG_STRING)
    For REPEAT = 1 To CHAR_COUNT
        STR_FILLED = STR_FILLED & AR_FILL_CHAR
    Next
    FC_FILL_LEFT = STR_FILLED + AR_ORG_STRING
End Function

 

Function FC_FILL_RIGHT(AR_ORG_STRING As Variant, AR_LENGTH As Integer, AR_FILL_CHAR As String)
'======================================================================
' FC_FILL_RIGHT
'======================================================================
' 1. 설명 :   STRING 변수의 오른쪽에 전체길이보다 적은 갯수만큼
'             원하는 문자로 채워넣기
'======================================================================
    If AR_FILL_CHAR = " " Then
    ElseIf Len(FC_NULL_TO_EMPTY(AR_FILL_CHAR)) = 1 Then
    Else
        FC_FILL_RIGHT = "ERROR"
        Exit Function
    End If
   
    Dim ORG_LENGTH As Integer
    Dim CHAR_COUNT As Integer
    Dim STR_LENTH As Integer
    Dim REPEAT As Integer
    Dim SEQ_CHAR As String
    Dim STR_FILLED As String
   
    If IsNull(AR_ORG_STRING) Or AR_ORG_STRING = "" Then
        ORG_LENGTH = 0
    Else
        ORG_LENGTH = Len(AR_ORG_STRING)
    End If

    CHAR_COUNT = AR_LENGTH - ORG_LENGTH
   
    STR_FILLED = ""
    STR_LENTH = Len(AR_ORG_STRING)
    For REPEAT = 1 To CHAR_COUNT
        STR_FILLED = STR_FILLED & AR_FILL_CHAR
    Next
    FC_FILL_RIGHT = AR_ORG_STRING + STR_FILLED

End Function

 

Function FC_TOG_KE12(AR_TOGGLE_OPTION As String)
'======================================================================
' FC_TOG_KE12
'======================================================================
' 1. 설명 :   TOG_KE12.DLL 을 이용하여 영문/한글/반각/배각 TOGGLE
'    Call SETHANGLE(G_FORM.HWND, 0)         '영문
'    Call SETSBCSCHAR(G_FORM.HWND, 0)       '반각
'    Call SETHANGLE(G_FORM.HWND, 1)         '한글
'    Call SETSBCSCHAR(G_FORM.HWND, 1)       '배각
'======================================================================
   
    Set G_FORM = Screen.ActiveForm
   
    Select Case AR_TOGGLE_OPTION
    Case "E1"   '------------------------------- 영문/반각
        Call SETHANGLE(G_FORM.HWND, 0)
        Call SETSBCSCHAR(G_FORM.HWND, 0)
    Case "E2"   '------------------------------- 영문/배각
        Call SETHANGLE(G_FORM.HWND, 0)
        Call SETSBCSCHAR(G_FORM.HWND, 1)
    Case "K1"   '------------------------------- 한글/반각
        Call SETHANGLE(G_FORM.HWND, 1)
        Call SETSBCSCHAR(G_FORM.HWND, 0)
    Case "K2"   '------------------------------- 한글/배각
        Call SETHANGLE(G_FORM.HWND, 1)
        Call SETSBCSCHAR(G_FORM.HWND, 1)
    End Select

End Function

 

Function FC_RND(AR_SINGLE As Variant)
'======================================================================
' FC_RND
'======================================================================
' 1. 설명 :   난수를 반환
'======================================================================
    If IsNumeric(AR_SINGLE) = False Then
        FC_RND = 0
    Else
        FC_RND = Int((AR_SINGLE * Rnd) + 1)
    End If
End Function

 

Function FC_TRIMSPACE(AR_STRING As Variant)
'======================================================================
' FC_TRIMSPACE
'======================================================================
' 1. 설명 :   STRING 변수의 좌우 SPACE를 제거한 뒤
'             NULL이면 SPACE(1)을 반환하고
'             기타는 TRIM 값을 반환
'======================================================================
    If IsNull(AR_STRING) Or AR_STRING = "" Then
        FC_TRIMSPACE = Space(1)
        Exit Function
    End If
   
    Dim STR_TRIM
    STR_TRIM = Trim(AR_STRING)
   
    If IsNull(STR_TRIM) Or STR_TRIM = "" Then
        FC_TRIMSPACE = Space(1)
'    ElseIf STR_TRIM < Space(1) Then         '이상한 HEXA 값 때문에
    ElseIf STR_TRIM < "0" Then         '이상한 HEXA 값 때문에
        FC_TRIMSPACE = Space(1)
    Else
        FC_TRIMSPACE = STR_TRIM
    End If
    Exit Function
End Function

 

Function FC_TRIMSPACE_TRUE(AR_STRING As Variant)
'======================================================================
' FC_TRIMSPACE_TRUE
'======================================================================
' 1. 설명 :   STRING 변수의 좌우 SPACE를 제거한 뒤
'             NULL이면 SPACE(1)을 반환하고
'             기타는 TRIM 값을 반환
'======================================================================
    If IsNull(AR_STRING) Or AR_STRING = "" Then
        FC_TRIMSPACE_TRUE = Space(1)
        Exit Function
    End If
   
    Dim STR_TRIM
    STR_TRIM = Trim(AR_STRING)
   
    If IsNull(STR_TRIM) Or STR_TRIM = "" Then
        FC_TRIMSPACE_TRUE = Space(1)
    ElseIf STR_TRIM < Space(1) Then         '이상한 HEXA 값 때문에
'    ElseIf STR_TRIM < "0" Then         '이상한 HEXA 값 때문에
        FC_TRIMSPACE_TRUE = Space(1)
    Else
        FC_TRIMSPACE_TRUE = STR_TRIM
    End If
    Exit Function
End Function

 

Function FC_TRIMZEROINT(AR_STRING As Variant)
'======================================================================
' FC_TRIMZEROINT
'======================================================================
' 1. 설명 :   STRING 변수의 좌우 SPACE를 제거한 뒤
'             NULL이면 0를 반환하고
'             기타는 CINT 값을 반환
'======================================================================
    If IsNull(AR_STRING) Or AR_STRING = "" Then
        FC_TRIMZEROINT = 0
        Exit Function
    End If
   
    Dim STR_TRIM
    STR_TRIM = Trim(AR_STRING)
   
    If IsNumeric(STR_TRIM) = False Then
        FC_TRIMZEROINT = 0
    Else
        FC_TRIMZEROINT = CInt(STR_TRIM)
    End If
    Exit Function
End Function

 

Function FC_TRIMZEROLNG(AR_STRING As Variant)
'======================================================================
' FC_TRIMZEROLNG
'======================================================================
' 1. 설명 :   STRING 변수의 좌우 SPACE를 제거한 뒤
'             NULL이면 0를 반환하고
'             기타는 CLNG 값을 반환
'======================================================================
    If IsNull(AR_STRING) Or AR_STRING = "" Then
        FC_TRIMZEROLNG = 0
        Exit Function
    End If
   
    Dim STR_TRIM
    STR_TRIM = Trim(AR_STRING)
   
    If IsNumeric(STR_TRIM) = False Then
        FC_TRIMZEROLNG = 0
    Else
        FC_TRIMZEROLNG = CLng(STR_TRIM)
    End If
    Exit Function
End Function

 

Function FC_TRIMZERODBL(AR_STRING As Variant)
'======================================================================
' FC_TRIMZERODBL
'======================================================================
' 1. 설명 :   STRING 변수의 좌우 SPACE를 제거한 뒤
'             NULL이면 0를 반환하고
'             기타는 CDBL 값을 반환
'======================================================================
    If IsNull(AR_STRING) Or AR_STRING = "" Then
        FC_TRIMZERODBL = 0
        Exit Function
    End If
   
    Dim STR_TRIM
    STR_TRIM = Trim(AR_STRING)
   
    If IsNumeric(STR_TRIM) = False Then
        FC_TRIMZERODBL = 0
    Else
        FC_TRIMZERODBL = CDbl(STR_TRIM)
    End If
    Exit Function
End Function

 

Function FC_TRIM19YYMMDD(AR_STRING As Variant)
'======================================================================
' FC_TRIM19YYMMDD
'======================================================================
' 1. 설명 :   STRING 변수의 좌우 SPACE를 제거한 뒤
'             NULL이면 SPACE(1)을 반환하고
'             기타는 "19"&TRIM 값을 반환
'======================================================================
    If IsNull(AR_STRING) Or AR_STRING = "" Then
        FC_TRIM19YYMMDD = Space(1)
        Exit Function
    End If
   
    Dim STR_TRIM
    STR_TRIM = Trim(AR_STRING)
   
    If IsNull(STR_TRIM) Or STR_TRIM = "" Then
        FC_TRIM19YYMMDD = Space(1)
'    ElseIf STR_TRIM < Space(1) Then         '이상한 HEXA 값 때문에
    ElseIf STR_TRIM < "0" Then         '이상한 HEXA 값 때문에
        FC_TRIM19YYMMDD = Space(1)
    ElseIf STR_TRIM < "20" Then         '2000년대라고 가정한다
        FC_TRIM19YYMMDD = "20" & STR_TRIM
    Else
        FC_TRIM19YYMMDD = "19" & STR_TRIM
    End If
    Exit Function
End Function
'======================================================================