출처 : http://blog.naver.com/chchcom?Redirect=Log&logNo=3156879
◆ Second 함수
초를 나타내는 0에서 59 사이의 정수 Variant (Integer) 값을 반환합니다.
▶ 구문 : Second(time)
time 인수는 시간을 표시할 수 있는 Variant, 숫자 식, 문자열 식, 또는 조합형을 사용합니다. time이 Null을 포함하면, Null을 반환
합니다.
Second 함수 예제 이 예제는 Second 함수를 사용하여 지정된 시간으로부터 분의 초를 얻습니다. 개발 환경에서 시간 문자는 사
용자 코드를 지역 설정하여 간단한 날짜 형식으로 나타냅니다.
Dim MyTime, MySecond
MyTime = #4:35:17 PM# ' 시간을 지정합니다.
MySecond = Second(MyTime) ' MySecond가 17을 포함하고 있습니다.
◆ Seek 함수
Open 문으로 열린 파일 안의 현재 읽기/쓰기 위치를 지정하는 Long을 반환합니다.
▶ 구문 : Seek(filenumber)
필수 항목인 filenumber 인수는 유효한 파일 번호가 들어 있는 Integer를 사용합니다.
▶ 참고 : Seek는 1에서 2,147,483,647(2^31 - 1와 동일함) 사이의 값을 반환하며 포괄적입니다.
다음은 각 파일 액세스 모드에 대한 반환값에 대해 설명합니다.
모드
반환값
Random
Binary
Output
Append
Input
읽거나 쓸 다음 레코드 번호입니다.
다음 연산이 발생하는 바이트 위치로 파일의 첫째 바이트는 위치 1에, 둘째 바이트는 위치 2에, 그 이하도 마찬가지
방법으로 위치합니다.
Seek 함수 예제 다음은 현재 파일 위치를 반환하기 위해 Seek 함수를 사용하는 예제입니다.
이 예제에서 TESTFILE은 사용자 정의 형식인 레코드(Record)형으로 된 레코드를 포함하는 파일로 가정합니다.
Type Record ' 사용자 정의 형식을 정의합니다.
ID As Integer
Name As String * 20
End Type
랜덤 모드로 열려진 파일에 대해서 Seek는 다음 레코드 번호를 반환합니다.
Dim MyRecord As Record ' 변수를 선언합니다.
Open "TESTFILE" For Random As #1 Len = Len(MyRecord)
Do While Not EOF(1) ' 파일의 끝을 만날 때까지 반복합니다.
Get #1, , MyRecord ' 다음 레코드를 읽습니다.
Debug.Print Seek(1) ' 디버그 창에 레코드 번호를 출력합니다.
Loop
Close #1 ' 파일을 닫습니다.
Random 모드 이외의 다른 모드로 열려진 파일에 대해서는 Seek는 다음 동작이 일어날 바이트 위치를 반환합니다. TESTFILE은 수
줄의 문자열을 포함한 파일로 가정합니다.
Dim MyChar
Open "TESTFILE" For Input As #1 ' 입력을 위해 파일을 엽니다.
Do While Not EOF(1) ' 파일의 끝까지 반복합니다.
MyChar = Input(1, #1) ' 데이터의 다음 문자를 읽어 들입니다.
Debug.Print Seek(1) ' 디버그 창에 바이트 위치를 출력합니다.
Loop
Close #1 ' 파일을 닫습니다.
◆ Sgn 함수
특정 숫자의 부호를 가리키는 Variant (Integer)를 반환합니다.
▶ 구문 : Sgn(number)
필수 항목인 number 인수에는 유효한 숫자 식을 사용합니다.
반환값
number
Sgn 값
▶ 참고 : 양수
0
음수
1
0
-1
number의 부호는 Sgn 함수의 반환값을
결정합니다.
Sgn 함수 예제 다음은 수의 부호를 결정하기 위해 Sgn 함수를 사용하는 예제입니다.
Dim MyVar1, MyVar2, MyVar3, MySign
MyVar1 = 12: MyVar2 = -2.4: MyVar3 = 0
MySign = Sgn(MyVar1) ' 1을 반환합니다.
MySign = Sgn(MyVar2) ' -1을 반환합니다.
MySign = Sgn(MyVar3) ' 0을 반환합니다.
◆ Shell 함수
프로그램을 수행하고 성공적으로 종료되었을 경우는 프로그램의 작업 ID를 나타내는 Variant(Double) 값을 반환하고, 비정상적으
로 종료되었을 경우는 0값을 반환합니다.
▶ 구문 : Shell(pathname[,windowstyle])
Shell 함수는 다음과 같은 명명된 인수를 사용합니다.
▶ 인수
설명
pathname
Windowstyle
필수; Variant(String). 실행할 프로그램의 이름이나 필요한 인수 또는 명령줄 스위치. 디렉토리나 폴더 또는 드라
이브 포함 가능.
선택. 실행할 프로그램이 있는 창의 유형에 대응하는 Variant(Integer)값. windowstyle을 생략할 경우, 프로그램은
포커스를 갖고 최소화된 상태로 시작.
windowstyle의 명명된 인수의 값은 다음과 같습니다.
상수
값
설명
▶ 참고 : Shell 함수가 지정된 파일을 성공적으로 실행
하고 나면, 시작된 프로그램의 작업 ID를 반
환합니다. 작업 ID는 실행 중인 프로그램을
지정하는 유일한 숫자를 의미합니다. Shell 함
수가 지정된 프로그램을 시작할 수 없을 경
우 오류가 발생합니다.
▶ 메모 Shell 함수는 다른 프로그램을 비동기적
으로 실행시킵니다. 즉 Shell 함수로 시작한
프로그램은 Shell 함수 다음의 문을 수행되기
전까지도 실행을 종료하지 않습니다.
vbHide
vbNormalFocus
vbMinimizedFocus
vbMaximizedFocus
vbNormalNoFocus
vbMinimizedNoFocus
0
1
2
3
4
6
창이 숨겨진 상태이며 포커스가 숨겨진 창으로 전달
창이 포커스 상태이며 창 원래 상태의 크기와 위치
로 복귀.
창이 포커스 상태의 아이콘으로 표시.
창이 포커스 상태로 최대화.
창이 최근의 창 크기와 위치로 복귀. 현재 활성화된
창이 계속 활성창으로 남아있게 됨.
창이 아이콘으로 표시. 현재 활성화된 창이 계속 활
성창으로 남아있게 됨
Shell 함수 예제
이 예제는 Shell 함수를 사용하여 사용자에 의해 지정된 응용 프로그램을 실행합니다. Macintosh에서는, MacID 함수를 사용하면 응
용 프로그램의 파일 이름이 변경되어도 그 응용 프로그램을 시작할 수 있습니다. System 7.0 이전의 Macintosh 버전에서는 Shell 함
수를 사용할 수 없습니다.
' Microsoft Windows에서는 다음과 같습니다.
' 1을 두 번째 인수로 지정하면 응용 프로그램을 보통 크기로 열고
' 포커스를 줍니다.
Dim RetVal
RetVal = Shell("C:\WINDOWS\CALC.EXE", 1) ' 계산기를 실행합니다.
' Macintosh에서는 다음과 같습니다.
' 두 개의 문이 모두 Microsoft Excel을 시작합니다.
RetVal = Shell("Microsoft Excel") ' 파일 이름을 지정합니다.
RetVal = Shell(MacID("XCEL")) ' 서명을 지정합니다.
◆ Sin 함수
각도의 사인값을 지정하는 Double을 반환합니다.
▶ 구문 : Sin(number)
필수 항목인 number 인수에는 Double 또는 유효한 숫자 식 을 사용합니다.
▶ 참고 : Sin 함수는 각도를 직각 삼각형의 두 변의 비율로 반환합니다. 이 비율은 빗변의 길이를 각을 마주 보는 변의 길이로 나눈
값을 뜻합니다.
결과치는 - 1과 1 사이에 있습니다.
각도를 라디안으로 환산하려면, 각도에 pi/180를 곱합니다. 라디안을 각도로 환산하려면 라디안에 180/pi을 곱합니다.
Sin 함수 예제 다음은 각의 사인 값을 반환하기 위해 Sin 함수를 사용하는 예제입니다.
Dim MyAngle, MyCosecant
MyAngle = 1.3 ' 라디안 값의 각을 정의합니다.
MyCosecant = 1 / Sin(MyAngle) ' 코세컨트(cosecant)를 계산합니다.
◆ SLN 함수
단일 기간 동안의 정액법을 지정하는 Double을 반환합니다.
▶ 구문 : SLN(cost, salvage, life)
SLN 함수는 다음과 같이 명명된 인수로 구성되어 있습니다.
구성 요소
설명
▶ 참고 : cost
Salvage
Life
필수. 초기 자산 비용을 지정하는 Double 입니다.
필수. 유용 기간이 끝나는 시점의 자산 액수를 지정하는 Double 입니다.
필수. 자산의 유용 기간 길이를 지정하는 Double 입니다.
감가상각 기간은 life 인수와 같은 단위
로 표시되어야 하고, 인수들은 모두 양
수이어야 합니다.
SLN 함수 예제
다음은 자산의 초기 비용(InitCost), 자산 유효 기간 말기의 공제액(SalvageVal), 자산의 연 단위 총 기간(LifeTime)등이 주어진 단일
분기에 대한 지정된 분기에 대한 자산의 감가상각 직선법을 반환하기 위해 SLN 함수를 사용하는 예제입니다.
Dim Fmt, InitCost, SalvageVal, MonthLife, LifeTime, PDepr
Const YEARMONTHS = 12 ' 1년 동안의 달 수.
Fmt = "###,##0.00" ' 금액 유형을 정의합니다.
InitCost = InputBox("자산의 처음 가격은 얼마입니까?")
SalvageVal = InputBox("사용 가능한 유효 기간이 끝날때의 자산 값은 얼마입니까?")
MonthLife = InputBox("몇달 내에서 자산의 사용 가능한 유효 기간은 언제입니까?")
Do While MonthLife < YEARMONTHS ' 기간이 1년 이상인 가를 검사합니다.
MsgBox "자산 유효 기간은 1년 또는 그 이상이어야 합니다."
MonthLife = InputBox("몇달 내에서 자산의 사용 가능한 유효 기간은 언제입니까?")
Loop
LifeTime = MonthLife / YEARMONTHS ' 달을 년으로 변환합니다.
If LifeTime <> Int(MonthLife / YEARMONTHS) Then
LifeTime = Int(LifeTime + 1) ' 가장 최근의 해로 반올림합니다.
End If
PDepr = SLN(InitCost, SalvageVal, LifeTime)
MsgBox "감가상각은 " & Format(PDepr, Fmt) & " 년 당입니다."
◆ Space 함수
지정된 수의 공백으로 구성된 Variant(String)값을 반환합니다.
▶ 구문 : Space(number)
number 인수는 문자열 내에서 원하는 공백의 수입니다.
▶ 참고 :
Space 함수는 출력을 형식화 하거나 고정된 크기의 문자열을 지우는 데 유용합니다.
Space 함수 예제
다음은 Space 함수를 사용하여 지정된 수 만큼의 공백 문자로 이루어진 문자열을 반환하는 예제입니다.
Dim MyString
MyString = Space(10) ' 10 공백을 가진 문자열을 반환합니다.
MyString = "Hello" & Space(10) & "World" ' 두 문자열 사이에 10 공백을 삽입.
◆ Spc 함수
Print # 문이나 Print 메서드와 함께 사용되어 출력 위치를 정합니다.
▶ 구문 : Spc(n)
필수 항목인 n 인수는 목록에 있는 다음 식을 표시 또는 인쇄하기 전에 삽입할 공백 수입니다.
▶ 참고 : n이 출력 줄 너비보다 작으면 인쇄된 공백 수 바로 뒤에 다음 인쇄 위치가 따라 나옵니다. n이 출력 줄 너비보다 크면 Spc는 아
래 공식을 사용하여 다음 인쇄 위치를 계산합니다.
currentprintposition + (n Mod width)
예를 들어 현재 인쇄 위치가 24, 출력 줄 너비가 80이고, Spc(90)이라고 지정하면 다음 인쇄는 위치 34 (현재 인쇄 위치 + 90/80의
나머지)에서 시작될 것입니다. 현재 인쇄 위치와 출력 줄 너비 사이의 차이가 n (또는 n Mod width)보다 작으면 Spc 함수는 다음
줄이 시작하는 곳으로 건너 뛰어 n - (width - currentprintposition)만큼 공백을 만듭니다.
주의 도표 열이 넓은 문자를 수용할 만큼 넓은지 확인하도록 하십시오.
비례적으로 공백이 주어지는 글꼴과 함께 Print 메서드를 사용할 때, Spc 함수로 인쇄되는 공백 문자들의 너비는 항상 선택한 글
꼴의 포인트 크기로 된 모든 문자 너비의 평균이 됩니다. 그러나 인쇄되는 문자 수와 그 문자들이 차지하는 고정 너비 열 수 사
이에는 아무런 관계가 없습니다. 예를 들어 대문자 W는 하나 이상의 고정 너비 열을 차지하고 소문자 I 는 하나 이하의 고정 너
비 열을 차지합니다.
Spc 함수 예제
다음은 파일과 [디버그] 창에서 출력의 위치를 지정하기 위해 Spc 함수를 사용하는 예제입니다.
' Spc 함수는 Print # 문과 함께 사용할 수 있습니다.
Open "TESTFILE" For Output As #1 ' 출력을 위해 파일을 엽니다 .
Print #1, "10 spaces between here"; Spc(10); "and here."
Close #1 ' 파일을 닫습니다.
다음 문은 Print 메서드를 사용해 30개의 공백 다음에 문자열을 [디버그] 창에 출력시킵니다.
Debug.Print Spc(30); "Thirty spaces later..."
◆◆ SQL 계산 함수
SQL 계산 함수를 사용하여 일련의 값에 대한 다양한 통계를 구할 수 있습니다. 질의에서 이 함수를 사용 할 수 있고 QueryDef
개체의 SQL 속성에서 계산식을 사용할 수 있으며 SQL 질의를 원본으로 하는 Recordset을 작성할 때도 사용할 수 있습니다.
계산 함수
합계를 구하는 데 사용하는 Sum, Count, Avg, Var 등의 함수입니다. 식을 쓰거나 프로그래밍을 할 때 앞의 네 함수를 포함한 SQL 계산 함수나
도메인 계산 함수를 사용하여 다양한 통계값을 구할 수 있습니다.
QueryDef 도움말 파일 참조 (vb5.hlp 파일내의 SQL 계산함수 참조)
SQL 도움말 파일 참조
Recordset 도움말 파일 참조
Avg 함수
Count 함수
Min, Max 함수
StDev, StDevP 함수
Sum 함수
Var, VarP 함수
■■■■■■■■■■■
1. Avg 함수
의에서 지정 필드에 있는 값의 산술 평균을 구합니다.
▶ 구문 : Avg(expr)
expr는 평균을 구할 숫자 데이터가 있는 필드를 알려주는 문자열 식 또는 그 필드의 데이터를 사용하여 계산을 수행하는 식을 나
타냅니다. expr의 피연산자는 테이블 필드의 이름, 상수, 함수(고유 함수나 사용자 정의 함수는 가능하지만 다른 SQL 계산 함수는
사용할 수 없음) 등을 포함할 수 있습니다.
▶ 참고 :
Avg 함수로 계산한 평균은 수학적인 평균입니다.(즉, 합계를 값의 개수로 나눈 값입니다). 예를 들어, Avg 함수를 사용하여 평균
운송비를 계산할 수 있습니다. Avg 함수는 계산 시 Null 필드를 제외합니다.
Avg 함수는 질의 식 및 QueryDef 개체의 SQL 속성에 또는 SQL 질의를 원본으로 하는 Recordset 개체를 작성할 때 사용할 수 있
습니다.
Avg 함수 예제
다음 예제는 Orders 테이블을 사용하여 수송료가 $100가 넘는 주문에 대해 평균 수송료를 계산합니다.
다음 예제는 SELECT 문 예제에서처럼 EnumFields 프로시저를 호출합니다.
Sub AvgX()
Dim dbs As Database, rst As Recordset
Set dbs = OpenDatabase("Northwind.mdb") ' 사용자 컴퓨터의 Northwind경로를 나타내도록 다음 행을 수정하십시오.
' 수송료가 $100가 넘는 주문에 대한 평균 수송료를 계산합니다.
Set rst = dbs.OpenRecordset("SELECT Avg(Freight)" & " AS [Average Freight]" _
& " FROM Orders WHERE Freight > 100;")
rst.MoveLast ' Recordset을 만듭니다.
' EnumFields를 호출하여 Recordset의 내용을 출력합니다.
EnumFields rst, 25 ' Recordset 개체와 원하는 필드 너비를 전달합니다.
dbs.Close
End Sub
2. Count 함수
질의가 반환하는 레코드 수를 계산합니다.
▶ 구문 : Count(expr)
expr는 개수를 셀 데이터가 있는 필드를 나타내는 문자열 식 또는 그 필드의 데이터를 사용하여 계산을 수행하는 식을 나타냅니
다. expr의 피연산자는 테이블 필드의 이름, 상수, 함수(고유 함수나 사용자 정의 함수는 가능하지만 다른 SQL 계산 함수는 사용
할 수 없음) 등을 포함할 수 있습니다. 텍스트를 포함한 모든 형식의 데이터를 셀 수 있습니다.
▶ 참고 : Count 함수를 사용하여 원본으로 사용하는 질의의 레코드 수를 셀 수 있습니다. 예를 들어, Count 함수를 사용하여 특정 국
가로 운송할 주문서의 수를 셀 수 있습니다.
expr은 필드에서 계산을 수행하지만 Count 함수는 단순히 레코드 수만 셉니다. 레코드에 저장된 값과는 무관합니다.
Count 함수는 expr에 별표(*) 대표 문자를 사용한 경우에만 Null 필드가 있는 레코드 수를 계산합니다. 별표를 사용하면 Count 함
수는 Null 필드가 있는 레코드를 포함한 전체 레코드 수를 계산합니다. Count(*) 함수는 Count([Column Name]) 함수에 비해 수행
속도가 훨씬 빠릅니다. 별표를 작은 따옴표(' ') 안에 사용하지 마십시오.
다음 예제는 Orders 테이블의 레코드 수를 계산합니다.
SELECT Count(*)
AS TotalOrders FROM Orders;
expr가 여러 필드를 확인하면, Count 함수는 적어도 하나의 필드가 Null이 아닐 경우에만 레코드를 셉니다. 지정한 필드가 모두
Null일 경우 레코드를 세지 않습니다. 필드 이름은 & 기호로 구분합니다. 다음 예제는 ShippedDate 또는 Freight가 Null이 아닌 레
코드만을 세도록 제한 하는 방법을 보여 줍니다.
SELECT
Count('ShippedDate & Freight')
AS [Not Null] FROM Orders;
질의 식에 Count를 사용할 수 있습니다. QueryDef 개체의 SQL 속성에 또는 SQL 질의를 원본으로 하는 Recordset 개체를 작성할
때 이 식을 사용할 수 있습니다.
Count 함수 예제
다음 예제는 Orders 테이블을 사용하여 영국으로 선적된 주문수를 계산합니다.
다음 예제는 SELECT 문 예제에서처럼 EnumFields 프로시저를 호출합니다.
Sub CountX()
Dim dbs As Database, rst As Recordset
Set dbs = OpenDatabase("Northwind.mdb") ' 사용자 컴퓨터의 Northwind경로를 나타내도록 다음 행을 수정하십시오.
' 영국으로 선적된 주문 수를 계산합니다.
Set rst = dbs.OpenRecordset("SELECT" & " Count (ShipCountry)" _
& " AS [UK Orders] FROM Orders" & " WHERE ShipCountry = 'UK';")
rst.MoveLast ' Recordset을 만듭니다.
' EnumFields를 호출하여 Recordset의 내용을 출력합니다.
' Recordset 개체와 원하는 필드 너비를 전달합니다.
EnumFields rst, 25
dbs.Close
End Sub
3. Min, Max 함수
질의의 지정된 필드에 있는 값 중 최소값이나 최대값을 반환합니다.
▶ 구문 : Min(expr)
Max(expr)
expr는 사용할 데이터가 있는 필드를 나타내는 문자열 식 또는 그 필드의 데이터를 사용하여 계산을 수행하는 식을 나타냅니다.
expr의 피연산자는 테이블 필드의 이름, 상수, 함수(고유 함수나 사용자 정의 함수는 가능하지만 다른 SQL 계산 함수는 사용할
수 없음) 등을 포함할 수 있습니다.
▶ 참고 : Min 및 Max를 사용하여 계산 또는 그룹화 된 필드의 최소값과 최대값을 구할 수 있습니다. 예를 들어, 이 함수를 사용하
여 최저 운임과 최대 운임을 계산할 수 있습니다. 지정한 그룹이 없으면 전체 테이블을 사용합니다.
QueryDef 개체의 SQL 속성과 질의 식에 또는 SQL 질의를 원본으로 하는 Recordset 개체를 작성할 때 Min과 Max 함수를 사용할
수 있습니다.
Min, Max 함수 예제
다음 예제는 Orders 테이블을 사용하여 영국으로 선적되는 주문에 대해 최저 수송료와 최고 수송료를 반환합니다.
다음 예제는 SELECT 문 예제에서처럼 EnumFields 프로시저를 호출합니다.
Sub MinMaxX()
Dim dbs As Database, rst As Recordset
' 사용자 컴퓨터의 Northwind경로를 나타내도록 다음 행을 수정하십시오.
Set dbs = OpenDatabase("Northwind.mdb")
' 영국으로 선적되는 주문에 대해 최저 수송료와
' 최고 수송료를 반환합니다.
Set rst = dbs.OpenRecordset("SELECT " & "Min(Freight) AS [Low Freight], " _
& "Max(Freight)AS [High Freight] " & "FROM Orders WHERE ShipCountry = 'UK';")
' Recordset을 만듭니다.
rst.MoveLast
' EnumFields를 호출하여 Recordset의 내용을 출력합니다.
' Recordset 개체와 원하는 필드 너비를 전달합니다.
EnumFields rst, 12
dbs.Close
End Sub
4. StDev, StDevP 함수
질의의 특정 필드에 포함된 값으로 모집단이나 모집단 표본에 대한 표준 편차의 결과를 반환합니다.
▶ 구문 : StDev(expr)
StDevP(expr)
expr는 사용할 데이터가 있는 필드를 나타내는 문자열 식 또는 그 필드의 데이터를 사용하여 계산을 수행하는 식을 나타냅니다.
expr의 피연산자는 테이블 필드의 이름, 상수, 함수(고유 함수나 사용자 정의 함수는 가능하지만 다른 SQL 계산 함수는 사용할
수 없음) 등을 포함할 수 있습니다.
▶ 참고 : StDevP 함수는 모집단을 구하고 StDev 함수는 모집단 표본을 구합니다.
원본으로 사용하는 질의에 두 개 미만의 레코드가 있으면(또는 StDevP 함수의 경우, 레코드가 없을 때) Null 값을 반환합니다. 이
는 표준 편차를 계산할 수 없음을 뜻합니다.
StDev와 StDevP 함수를 질의 식에 사용할 수 있습니다. QueryDef 개체의 SQL 속성에 또는 SQL 질의를 원본으로 하는 Recordset
개체를 작성할 때 이 식을 사용할 수 있습니다.
StDev, StDevP 함수 예제
다음 예제는 Orders 테이블을 사용하여 영국으로 선적되는 주문에 대한 수송료의 표준 편차를 계산합니다.
다음 예제는 SELECT 문 예제에서처럼 EnumFields 프로시저를 호출합니다.
Sub StDevX()
Dim dbs As Database, rst As Recordset
Set dbs = OpenDatabase("Northwind.mdb") ' 사용자 컴퓨터의 Northwind경로를 나타내도록 다음 행을 수정하십시오.
' 영구으로 선적되는 주문에 대한 수송료의 표준 편차를 계산합니다.
Set rst = dbs.OpenRecordset("SELECT " & "StDev(Freight) " _
& "AS [Freight Deviation] FROM Orders " & "WHERE ShipCountry = 'UK';")
' Populate the Recordset.
rst.MoveLast
' EnumFields를 호출하여 Recordset의 내용을 출력합니다.
' Recordset 개체와 원하는 필드 너비를 전달합니다.
EnumFields rst, 15
Debug.Print
Set rst = dbs.OpenRecordset("SELECT " & "StDevP(Freight) " _
& "AS [Freight DevP] FROM Orders " & "WHERE ShipCountry = 'UK';")
' Recordset을 만듭니다.
rst.MoveLast
' EnumFields를 호출하여 Recordset의 내용을 출력합니다.
' Recordset 개체와 원하는 필드 너비를 전달합니다.
EnumFields rst, 15
dbs.Close
End Sub
5. Sum 함수
질의에서 지정 필드에 있는 일련의 값의 합계를 반환합니다.
▶ 구문 : Sum(expr)
expr는 사용할 데이터가 있는 필드를 나타내는 문자열 식 또는 그 필드의 데이터를 사용하여 계산을 수행하는 식을 나타냅니다.
expr의 피연산자는 테이블 필드의 이름, 상수, 함수(고유 함수나 사용자 정의 함수는 가능하지만 다른 SQL 계산 함수는 사용할
수 없음) 등을 포함할 수 있습니다.
▶ 참고 : Sum 함수는 필드에 있는 값의 합계를 구합니다. 예를 들어, Sum 함수를 사용하여 총 운송 비용을 구할 수 있습니다.
Sum 함수는 Null 필드가 있는 레코드를 무시합니다.
다음 예제는 UnitPrice와 Quantity 필드의 합계를 구하는 방법을 보여 줍니다.
SELECT
Sum(UnitPrice * Quantity)
AS [Total Revenue] FROM [Order Details];
Sum 함수를 질의 식에 사용할 수 있습니다. QueryDef 개체의 SQL 속성에 또는 SQL 질의에서 Recordset 개체를 작성할 때 이 식
을 사용할 수 있습니다.
Sum 함수 예제
다음 예제는 Orders 테이블을 사용하여 영국으로 선적되는 주문에 대한 총 판매량을 계산합니다.
다음 예제는 SELECT 문 예제에서처럼 EnumFields 프로시저를 호출합니다.
Sub SumX()
Dim dbs As Database, rst As Recordset
Set dbs = OpenDatabase("Northwind.mdb") ' 사용자 컴퓨터의 Northwind경로를 나타내도록 다음 행을 수정하십시오.
' 영국으로 선적되는 주문에 대한 총 판매량을 계산합니다.
Set rst = dbs.OpenRecordset("SELECT" & " Sum(UnitPrice*Quantity)" _
& " AS [Total UK Sales] FROM Orders" & " INNER JOIN [Order Details] ON" _
& " Orders.OrderID = [Order Details].OrderID" & " WHERE (ShipCountry = 'UK');")
' Recordset을 만듭니다.
rst.MoveLast
' EnumFields를 호출하여 Recordset의 내용을 출력합니다.
' Recordset 개체와 원하는 필드 너비를 전달합니다.
EnumFields rst, 15
dbs.Close
End Sub
6. Var, VarP 함수
질의의 지정 필드에 포함된 일련의 값으로 모집단이나 모집단 표본에 대한 분산 결과를 반환합니다.
▶ 구문 : Var(expr)
VarP(expr)
expr는 사용할 데이터가 있는 필드를 나타내는 문자열 식이나 그 필드의 데이터를 사용하여 계산을 수행하는 식을 나타냅니다.
expr의 피연산자는 테이블 필드의 이름, 상수, 함수(고유 함수나 사용자 정의 함수는 가능하지만 다른 SQL 계산 함수는 사용할
수 없음) 등을 포함할 수 있습니다.
▶ 참고 : VarP 함수는 모집단을 계산하고 Var 함수는 모집단 표본을 계산합니다.
원본 질의에 두 개 미만의 레코드가 있을 때 Var 및 VarP 함수는 Nulldadefnull@JetDef35.hlp을 반환합니다. 이는 분산을 계산할
수 없음을 뜻합니다. 질의 식이나 SQL 문에 Var와 VarP 함수를 사용할 수 있습니다.
Var, VarP 함수 예제
다음 예제는 Orders 테이블을 사용하여 영국으로 선적되는 주문에 대한 수송료의 분산를 계산합니다.
다음 예제는 SELECT 문 예제에서처럼 EnumFields 프로시저를 호출합니다.
Sub VarX()
Dim dbs As Database, rst As Recordset
Set dbs = OpenDatabase("Northwind.mdb") ' 사용자 컴퓨터의 Northwind경로를 나타내도록 다음 행을 수정하십시오.
' 영국으로 선적되는 주문에 대한 수송료의 분산을 계산합니다.
Set rst = dbs.OpenRecordset("SELECT " & "Var(Freight) " _
& "AS [UK Freight Variance] " & "FROM Orders WHERE ShipCountry = 'UK';")
' Recordset을 만듭니다.
rst.MoveLast
' EnumFields를 호출하여 Recordset의 내용을 출력합니다.
' Recordset 개체와 원하는 필드 너비를 전달합니다.
EnumFields rst, 20
Debug.Print
Set rst = dbs.OpenRecordset("SELECT " & "VarP(Freight) " _
& "AS [UK Freight VarianceP] " & "FROM Orders WHERE ShipCountry = 'UK';")
' Recordset을 만듭니다.
rst.MoveLast
' EnumFields를 호출하여 Recordset의 내용을 출력합니다.
' Recordset 개체와 원하는 필드 너비를 전달합니다.
EnumFields rst, 20
dbs.Close
End Sub
◆ Str 함수
숫자의 Variant(String)값을 반환합니다.
▶ 구문 : Str(number)
number 인수는 임의의 유효한 숫자 식을 값으로 하는 Long값입니다.
▶ 참고 : 숫자들이 문자열로 변환되면 number의 부호를 위해 문자열 앞쪽에 한 개의 공간이 예약됩니다. number 가 양수이면 반환되는 문
자열은 앞쪽에 공간이 포함되고 양수 부호를 암시합니다.
숫자 값을 날짜, 시간, 화폐 단위나 다른 사용자 정의 형식으로 형식화하려면 Format 함수를 이용합니다. Str 함수와는 달리,
Format 함수는 number의 부호를 위한 앞쪽 공간을 포함하지 않습니다.
▶ 메모
Str 함수는 마침표(.)만 유효한 소수점 분리 기호로 인식합니다. 다른 소수점 분리 기호가 사용된다면(예: 다국적 응용 프로그램)
CStr 함수를 이용해서 숫자를 문자열로 변환합니다.
Str 함수 예제
다음은 Str 함수를 사용하여 숫자 형식의 데이터를 문자열 형식의 데이터로 변환하는 예제입니다. 숫자를 문자열로 변환할 때 앞
쪽 공백은 부호 표시용으로 보존됩니다.
Dim MyString
MyString = Str(459) ' " 459"를 반환합니다.
MyString = Str(-459.65) ' "-459.65"를 반환합니다.
MyString = Str(459.001) ' " 459.001"를 반환합니다.
◆ StrComp 함수
문자열 비교의 결과를 의미하는 Variant(Integer)값을 반환합니다.
▶ 구문 : StrComp(string1, string2[, compare])
StrComp 함수 구문은 다음과 같은 명명된 인수로 구성됩니다.
구성 요소
설명
string1
string2
Compare
필수. 모든 유효한 문자열 식.
필수. 모든 유효한 문자열 식.
선택. 문자열 비교의 유형을 지정함. Compare 인수 는 0, 1, 2 로 지정되거나 또는 생략될 수 있음. 0(기본값)으로 지정
되면 이진 비교가 수행됨. 1로 지정되면 문자별 비교가 이루어짐. 2 로 지정되면 사용자 데이터베이스에 기록된 정보
에 근거한 비교가 수행됨(Microsoft Access사용자에 한함). compare 값이 Null이면 오류가 발생함. compare 값이 지정되
지 않으면 Option Compare 설정 값에 따라 비교 형식이 결정됨.
반환값
StrComp 함수는 다음과 같은 반환값으로 되어있습니다.
다음 경우
StrComp 반환값
string1이 string2 보다 적으면
string1이string2와 같으면
string1이string2보다 크면
string1 또는 string2 이 Null이면
-1
0
1
Null
StrComp 함수 예제
다음은 StrComp 함수를 사용하여 문자열과 문자열을 비교하는 예입니다. 세 번째 인수가 1이라면 문자 비교가 수행되고, 세 번째
▶ 인수가 0이거나 생략되면 이진 비교가 수행됩니다.
Dim MyStr1, MyStr2, MyComp
MyStr1 = "ABCD": MyStr2 = "abcd" ' 변수 정의.
MyComp = StrComp(MyStr1, MyStr2, 1) ' 0을 반환합니다.
MyComp = StrComp(MyStr1, MyStr2, 0) ' -1을 반환합니다.
MyComp = StrComp(MyStr2, MyStr1) ' 1을 반환합니다.
◆ StrConv 함수
지정된 대로 변환된 Variant(String)값을 반환합니다.
▶ 구문 : StrConv(string, conversion)
StrConv 함수 구문은 다음과 같은 명명된 인수로 구성됩니다.
구성 요소
설명
string
Conversion
필수. 변환될 문자열 식.
필수; Integer. 수행될 변환 형식을 지정하는 값들의 합.
설정
conversion 인수 설정은 다음과 같습니다. (* 극동 지역에 해당. ** 일본에만 해당)
상수
값
설명
vbUpperCase
VbLowerCase
VbProperCase
VbWide*
VbNarrow*
VbKatakana**
VbHiragana**
VbUnicode
VbFromUnicode
1
2
3
4*
8*
16**
32**
64
128
문자열을 대문자로 변환.
문자열을 소문자로 변환.
문자열 내 모든 단어의 첫 글자를 대문자로 변환.
1바이트 문자를 2바이트 문자로 변환.
2바이트 문자를 1바이트 문자로 변환.
일본 히라가나 문자를 가다가나 문자로 변환.
일본 가다가나 문자를 히라가나 문자로 변환.
문자열 값을 시스템의 기본 코드 페이지를 통해 Unicode로 변환.
Unicode 문자열을 시스템의 기본 코드 페이지로 변환.
▶ 메모
이 상수들은 응용 프로그램을 위한 Visual Basic에서 지정되어 있습니다. 따라서 사용자의 코드 내 어디서나 사용될 수 있습니다.
상호 배타적인 경우(예: vbUnicode + vbFromUnicode) 만 아니면 대부분 통합될 수 있습니다(예: vbUpperCase + vbWide). vbWide,
vbNarrow, vbKatakana, vbHiragana 상수들은 그들이 적용될 수 없는 로케일에서 사용되면 런타임 오류가 발생합니다.
다음은 적절한 캐싱을 위해 유효한 단어 구분자들입니다:
Null(Chr(0)), 수평 탭(Chr(9)), 라인 피드(Chr(10)), 수직 탭(Chr(11)), 폼 피드(Chr(12)), 캐리지 리턴(Chr(13)), 공백(SBCS)
(Chr(32)). 공백의 실제 값은 나라별로 DBCS를 위해 다릅니다.
◆ String 함수
지정된 길이의 반복되는 문자열을 Variant(String)값으로 반환합니다.
▶ 구문 : String(number, character)
String 함수 구문은 다음과 같은 명명된 인수로 구성됩니다.
구성 요소
설명
number
Character
필수; Long 반환되는 문자열의 길이. number에 Null 값이 존재하면 Null이 반환됩니다.
필수; Variant. 문자를 지정하는 문자 코드나 반환 문자열을 구성하는 첫 문자로 사용되는 문자열 식. character에
Null, 값이 존재하면 Null이 반환됩니다.
▶ 참고 :255보다 큰 수를 character값으로 지정하면 String 함수는 다음 공식을 이용해서 그 수를 유효한 문자 코드로 변환합니다:
character Mod 256
String 함수 예제
다음은 String 함수를 사용하여 특정 문자가 지정된 길이만큼 반복되는 하나의 문자열을 만드는 예제입니다.
Dim MyString
MyString = String(5, "*") ' "*****"을 반환합니다.
MyString = String(5, 42) ' "*****"을 반환합니다.
MyString = String(10, "ABC") ' "AAAAAAAAAA"를 반환합니다.
◆ Switch 함수
식의 목록 식을 평가한 후 목록에서 True 값을 갖는 최초의 식과 관련된 Variant 값이나 식을 반환합니다.
▶ 구문 : Switch(expr-1, value-1[,expr-2, value-2 [,expr-n,value -n]])
Switch 문은 다음과 같은 구성 요소로 되어있습니다.
구성 요소
설명
expr
value
필수. 평가하고자 하는 Variant 식
필수. 대응하는 식이 True인 경우 식이나 값을 반환합니다.
▶ 참고 : Switch 함수의 인수 목록은 식과 값의 쌍로 구성됩니다. 식은 왼쪽에서 오른쪽으로 평가되며, True로 평가된 첫째 식과 관련된 값
을 반환합니다. 구성 요소들이 적절히 짝지워지지 않은 경우는 런타임 오류
가 발생합니다. 예를 들면, expression-1이 True면, Switch 문은 value-1을 반환하고, expression-1이 True이고, expression-2가 True인 경
우, Switch 문은 value-2를 반환합니다.
Switch 문은 다음의 경우에 Null 값을 반환합니다.
※ True인 식이 없는 경우.
※ True인 최초의 식이 Null에 대응하는 값을 갖는 경우.
Switch 문은 식 중에서 하나의 값만을 반환하지만 모든 식을 다 평가합니다. 이러한 이유때문에 예상치 않은 결과가 발생할 수
있으므로 주의해야 합니다. 예를 들면, 불능인 식의 계산은 오류를 발생시킵니다.
Switch 함수 예제
이 예제는 Switch 함수를 사용하여 도시의 이름과 일치하는 언어 이름을 반환합니다.
Function MatchUp (CityName As String)
Matchup = Switch(CityName = "London", "English", CityName = "Rome", "Italian", CityName = "Paris", "French")
End Function
◆ SYD 함수
지정된 기간 동안 자산의 감가상각을 지정하는 Double을 반환합니다.
▶ 구문 : SYD(cost, salvage, life, period)
SYD 함수는 다음과 같이 명명된 인수로 구성되어 있습니다.
구성 요소
설명
▶ 참고 : cost
Salvage
Life
Period
필수. 초기 자산 비용을 지정하는 Double 입니다.
필수. 유용 기간이 끝나는 시점의 자산 액수를 지정하는 Double 입니다.
필수. 자산의 유용 기간 길이를 지정하는 Double 입니다.
필수. 자산 감가상각을 계산하는 기간을 지정하는 Double 입니다.
life와 period 인수는 같은 단위로 표시해
야 합니다. 예를 들면 life의 단위가 달
이면 period도 달로 표시해야 합니다. 인
수들은 모두 양수이어야 합니다.
SYD 함수 예제
다음은 SYD 함수를 이용해 자산의 초기 비용(InitCost), 자산 유효 기간 말기의 공제액(SalvageVal), 자산의 연 단위 총 기간
(LifeTime) 등이 주어진 지정된 분기에 대한 자산의 감가상각액을 반환하기 위한 방법을 보여주는 예제입니다. 감가상각액이 계산
될 기간은 연 단위의 PDepr입니다.
Dim Fmt, InitCost, SalvageVal, MonthLife, LifeTime, DepYear, PDepr
Const YEARMONTHS = 12 ' 1 년 동안의 달 수.
Fmt = "###,##0.00" ' 금액 유형을 정의합니다.
InitCost = InputBox("자산의 처음 가격은 얼마입니까?")
SalvageVal = InputBox("유효 기간이 끝날때 자산의 값은 얼마입니까?")
MonthLife = InputBox("몇달 내에서 자산의 사용 가능한 유효 기간은 언제입니까?")
Do While MonthLife < YEARMONTHS ' 기간이 1 년 이상인가를 검사합니다.
MsgBox "자산 유효 기간은 1년 또는 그 이상이어야 합니다."
MonthLife = InputBox("몇달 내에서 자산의 사용 가능한 유효 기간은 언제입니까?")
Loop
LifeTime = MonthLife / YEARMONTHS ' 달을 년으로 변환합니다.
If LifeTime <> Int(MonthLife / YEARMONTHS) Then
LifeTime = Int(LifeTime + 1) ' 가장 최근의 해로 반올림합니다.
End If
DepYear = CInt(InputBox("감가상각을 원하는 년도는 언제입니까?"))
Do While DepYear < 1 Or DepYear > LifeTime
MsgBox "적어도 1 이하를 입력해야 합니다 " & LifeTime
DepYear = CInt(InputBox("감가상각을 원하는 년도는 언제입니까?"))
Loop
PDepr = SYD(InitCost, SalvageVal, LifeTime, DepYear)
MsgBox "년도 동안 감가상각은 " & DepYear & " 입니다 " & Format(PDepr, Fmt) & "."