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
'======================================================================
'정보과학 IT' 카테고리의 다른 글
메인보드 교체방법과 수리비용 (0) | 2012.10.18 |
---|---|
Buffer exterminate (0) | 2012.10.10 |
HTML TAG - 게시글에 배경 그림 넣기 (background-image) (0) | 2012.10.04 |
DAO 야 고맙다~! Microsoft Access 2000 ▶ 2010 업그레이드 성공~!!! (0) | 2012.09.27 |
*.mdb 파일을 *.accdb 파일로 변환하기 (0) | 2012.09.27 |