ASP 로 개발을 하면서 정말로 불편했던 PHP 의 배열과 같이

데이터를 키, 값 형태로 할수가 없었는데.. 있었구나..

이미 비쥬얼베이직에서는 존재하고 있었는데.. 자꾸 잊게되는건..

ASP 과 '비쥬얼베어직 스크립트' 를 기반으로 한다는거다.

하지만 기본적으로 ASP 자체적으로 지원해주는 것은 아니다. 


그러므로 CreateObject 메소드를 통해서만 참조하여 사용할 수 있다.

암튼.. 그래서.. 있다.ㅋㅋ


Dictionary 객체. 그냥 배열처럼 인덱스, 값 형태로도 사용이 가능하지만, 무엇보다 좋은건

명시적으로 키, 값 형태로 사용할 수 있다는 것이다.

그러니 의미 그대로. 사전. 단어와 뜻 만으로 사용하겠다는 의미가 되는것 같다.


아래 CODE EX 를 참조하여 속성과 메소드를 테스트해보면 좋겠다.

무엇보다 난 제일 활용하기 좋은건 클래스의 멤버들에게 할당할때인데 참으로 편리하고,

유지보수에 용이하다.ㅎㅎㅎ


속 성

CompareMode

키 값을 이진비교(0) 또는 텍스트비교(1)중 하나 택일. 1이면 "A"와"a"는 같은 문자로 취급. 0 이면 다른 문자. 상수값 :vbBinaryCompare(0), vbTextCompare(1)

Count

Dictionary 안에 저장된 멤버수

Item

Key 에 해당하는 값(의미)

Key

단어가 되는. Item 을 상징하는 Key

메소드

Add

추가할당

Exists

존재여부로 True / False 반환

Items

Item 을 배열로 반환

Keys

Key 를 배열로 반환

Remove

해당 멤버 제거

RemoveAll

전체 제거


※ CODE EX

Set oDic = Server.CreateObject("Scripting.Dictionary")

'/* 할당 */

oDic.Add "MyName", "JKUN"

oDic.Add "BlogDomain", "http://www..jkun.net"


'/* 출력 */

oDicKeyList = oDic.Keys

oDicItemList = oDic.Items


For i = 0 To (oDic.Count - 1)

Response.Write "<p>" & oDicKeyList(i) & " : " & oDicItemList(i) & "</p>"

Next


위 코드를 예제로 테스트 해보시면 그냥 아~ 이렇구나 하실겁니다.

그리고 센스있게 댓글 달면 더욱 좋지요~

'Development > ASP' 카테고리의 다른 글

XMLHTTP  (0) 2013.05.30
MSXML2.ServerXMLHTTP  (0) 2013.05.30
ASP Dictionary Object  (0) 2012.10.17
ASP, VBScript 형변환, 날짜/시간함수  (0) 2012.05.23
ADO 객체 메소드, 속성  (0) 2012.04.17
ASP String Bulider (문자열 처리능력향상)  (0) 2012.04.04

출처 : http://blog.naver.com/const34/20042866990

▣ 함수(Function) - 변환 관련 함수, 날짜/시간 관련 함수
&sec 학습목표
  1. ASP에서 지원하는 함수의 종류와 특징을 안다.
  2. ASP에서 지원하는 함수를 사용할 수 있다.

 

함수는 프로그램 코드내에서 반복적으로 사용되는 루틴이나 모듈을 구성할때 사용하는 것이다. 이런 함수를 보통 프로그래머가 구성을 하는 것이 원칙이다. 그러나 일일이 구성하는 것은 특히 사용자가 쉽게 표현하지 힘든 특정처리부분을 처리하기는 어렵다. 때문에 ASP에서 내장함수로 제공하여 준다.

함수의 사용예제를 링크걸어 두겠다.

ASP-Function 다운로드 ]

또 Microsoft에서 제공하는 MSDN에 방문해 보면 VBScript에 대한 모든 정보를 접할 수 있는데 함수도 그안에서 사용법과 주의할 점을 찾을 수 있다.

찾이가는 방법은 일단 MSDN.microsoft.com에서 상단 주메뉴에서 Library를 선택한다. 화면이 바뀌면 아래에 서브메뉴가 펼쳐지면 메뉴중에서 [Web Development] - [Scripting]- [Windows Script Tecnologies] - [VBScript] - [Reperence] - [Function] 을 차레로 산택하면 된다. 물론 VBScript의 다른 정보도 접할 수 있다.

일단 함수부분에 바로 접근할 수 있도록 링크를 걸어 두었다.

MSDN VBScript Function Reference ]

1. 변환 관련 함수

변환 관련 함수는 데이터의 형변환이나 데이터의 변환에 사용되는 함수이다.

(1) Asc

문자열에서 첫글자에 해당하는 ANSI 문자 코드를 반환한다.

형 식
Asc(string)

Dim MyNumber
MyNumber = Asc("A") ' Returns 65.
MyNumber = Asc("a") ' Returns 97.
MyNumber = Asc("Apple") ' Returns 65.

(2) AscB

문자열에서 그 문자의 첫 바이트를 반환한다.

형 식
AscB(string)

사용법은 ASC와 같다.

(3) AscW

문자열에서 그 문자의 첫 유니코드 문자 코드를 반환한다.

형 식
AscW(string)

사용법은 ASC와 같다.

(3) CBool

Boolean 하위형식의 Variant로 변환된 식을 반환

형 식
CBool(expression)

Dim A, B, Check
A = 5: B = 5 ' Initialize variables.
Check = CBool(A = B) ' Check contains True.
A = 0 ' Define variable.
Check = CBool(A) ' Check contains False.

(4) CByte

Byte 하위형식의 Variant로 변환된 식을 반환(결과는 255를 넘을 수 없다)

형 식
CByte(expression)

Dim MyDouble, MyByte
MyDouble = 125.5678 ' MyDouble is a Double.
MyByte = CByte(MyDouble) ' MyByte contains 126.

(5) CCur

Currency 하위형식의 Variant로 변환된 식을 반환한다.

형 식
CCur(expression)

Dim MyDouble, MyCurr
MyDouble = 543.214588 ' MyDouble is a Double.
MyCurr = CCur(MyDouble * 2) ' Convert result of MyDouble * 2 (1086.429176) to a Currency (1086.4292).

(6) CDate

Date 하위형식의 Variant로 변환된 식을 반환한다.

형 식
CDate(date)

MyDate = "2005-05-27" ' Define date.
MyShortDate = CDate(MyDate) ' #2005-05-27#

(7) CDbl

Double 하위형식의 Variant로 변환된 식을 반환한다.

형 식
CDbl(expression)

Dim MyCurr, MyDouble
MyCurr = CCur(234.456784) ' MyCurr is a Currency (234.4567).
MyDouble = CDbl(MyCurr * 8.2 * 0.01) ' Convert result to a Double (19.2254576).

(8) CInt

Integer 하위형식의 Variant로 변환된 식을 반환한다. (반올림한다)

형 식
CInt(expression)

Dim MyDouble, MyInt
MyDouble = 2345.5678 ' MyDouble is a Double.
MyInt = CInt(MyDouble) ' MyInt contains 2346.

(9) Chr(charcode)

지정한 ANSI 문자 코드와 연관된 문자를 반환한다.

형 식
Chr(charcode)

Dim MyChar
MyChar = Chr(65) ' Returns A.
MyChar = Chr(97) ' Returns a.
MyChar = Chr(62) ' Returns >.
MyChar = Chr(37) ' Returns %.

(10) ChrB

chr 함수와 같으나 문자열의 바이트를 지정해서 사용한다. 항상 싱글바이트로 반환한다.

형 식
ChrB(charcode)

(11) ChrW

chr 함수와 같으나 유니코드 데이터를 지정해 사용한다.

형 식
ChrW(charcode)

(12) CLng

Long 하위형식의 Variant로 변환된 식을 반환한다. (실수데이터인경우 반올림한다)

형 식
ChrW(charcode)

MyVal1 = 25427.45: MyVal2 = 25427.55 ' MyVal1, MyVal2 are Doubles.
MyLong1 = CLng(MyVal1) ' MyLong1 contains 25427.
MyLong2 = CLng(MyVal2) ' MyLong2 contains 25428.

(13) CSng

Single 하위형식의 Variant로 변환된 식을 반환한다.(반올림처리)

형 식
CSng(expression)

' MyDouble1, MyDouble2 are Doubles.
MyDouble1 = 75.3421115: MyDouble2 = 75.3421555
MySingle1 = CSng(MyDouble1) ' MySingle1 contains 75.34211.
MySingle2 = CSng(MyDouble2) ' MySingle2 contains 75.34216.

(14) CStr

String 하위형식의 Variant로 변환된 식을 반환한다.

형 식
CStr(expression)

Dim MyDouble, MyString
MyDouble = 437.324 ' MyDouble is a Double.
MyString = CStr(MyDouble) ' MyString contains "437.324".

(15) Fix

숫자의 정수부분만을 반환한다. 
Sgn(number) * Int(Abs(number))의 결과와 같은 함수이다.

형 식
Fix(expression)

MyDouble = -437.324 ' MyDouble is a Double.
MyFix = Fix(MyDouble) ' MyFix contains "-437".

(16) Hex

숫자의 16진수를 나타내는 문자열로 반환한다.

형 식
Hex(number)

Dim MyHex
MyHex = Hex(5) ' Returns 5.
MyHex = Hex(10) ' Returns A.
MyHex = Hex(459) ' Returns 1CB.

(17) Int

지정된 숫자의 값보다 크지 않은 최대의 정수를 반환한다.

형 식
Int(number)

MyNumber = Int(99.8) ' Returns 99.
MyNumber = Fix(99.2) ' Returns 99.
MyNumber = Int(-99.8) ' Returns -100.
MyNumber = Fix(-99.8) ' Returns -99.
MyNumber = Int(-99.2) ' Returns -100.
MyNumber = Fix(-99.2) ' Returns -99.

(18) Oct

숫자의 8진수 값을 반환한다.

형 식
Oct(number)

Dim MyOct
MyOct = Oct(4) ' Returns 4.
MyOct = Oct(8) ' Returns 10.
MyOct = Oct(459) ' Returns 713.

(19) Round

지정한 소수점 자리에서 반올림한 수를 반환한다.

형 식
Round(expression[, numdecimalplaces])

pi = 3.14159
MyVar1 = Round(pi) ' MyVar1 contains 3.
MyVar2 = Round(pi, 2) ' MyVar2 contains 3.14. 
var1 = Round(1.5) ' var1 contains 2
var2 = Round(2.5) ' var2 contains 2
var3 = Round(3.5) ' var3 contains 4
var4 = Round(0.985, 2) ' var4 contains 0.98
var5 = Round(0.995, 2) ' var5 contains 1.00

(20) Sgn

수의 부호를 반환한다. (음수이면 -1, 아니면 0)

형 식
Sgn(number)

Dim MyVar1, MyVar2, MyVar3, MySign
MyVar1 = 12: MyVar2 = -2.4: MyVar3 = 0
MySign = Sgn(MyVar1) ' Returns 1.
MySign = Sgn(MyVar2) ' Returns -1.
MySign = Sgn(MyVar3) ' Returns 0.


2. 날짜/시간 함수

날짜와 시간에 관련된 함수들이다. 날짜데이터는 1989년 12월31일을 기준으로 하여 카운팅하여 사용한다.

(1) Date

현재 시스템의 날짜

형 식
Date

Dim MyDate
MyDate = Date

(2) DateAdd

지정된 시간간격을 추가한 날짜를 반환한다.

형 식
DateAdd(interval, number, date)

interval의 세팅값은 다음과 같다.

SettingDescription
yyyy 
Year

Quarter
mMonth
yDay of year
dDay
wWeekday
wwWeek of year


NewDate = DateAdd("m", 1, "2005-05-13") '2005-06-13 
NewDate = DateAdd("d", 10, "2005-05-13") '2005-05-23
NewDate = DateAdd("d", -10, "2005-05-13") '2005-05-03

(3) DateDiff

두 날짜 사이의 날짜 간격수를 반환한다.

형 식
DateDiff(interval, date1, date2 [,firstdayofweek [,firstweekofyear]])

interval의 세팅값은 DateAddd와 기본적으로 같다.

SettingDescription
yyyy 
Year

Quarter
mMonth
yDay of year
dDay
wWeekday
wwWeek of year
hHour
nMinute
sSecond

Date 데이타 형식은 # 과 " 둘다 사용가능하다.

DateDiff("d", Now, #2005-12-25#) '208 
DateDiff("d", Now, "2004-12-25") '-157

(4) DatePart

주어진 날짜의 지정된 부분을 반환한다.

형 식
DatePart(interval, date[, firstdayofweek[, firstweekofyear]])

interval의 세팅값은 DateDiff와 기본적으로 같다.

a =DatePart("q", "2005-07-13") '3 , 즉 3/4분기에 속한다는 것이다.

(5) DateSerial

지정된 년, 월, 일의Date 하위형식인 Variant를 반환한다.

형 식
DateSerial(year, month, day)

MyDate1 = DateSerial(1970, 1, 1) ' 1970-01-01

(6) DateValue

Date 하위형식인 Variant를 반환한다. (#Date#)

형 식
DateValue(date)

a =DateValue("2005-05-13") ' 2005-05-13

(7) Day

날짜/시간 형식의 데이터로 부터 날짜를 반환한다.(1~31)

형 식
Day(date)

MyDay = Day("2005-05-19") ' MyDay contains 19.

(8) Hour

날짜/시간 형식의 데이터로 부터 시간를 반환한다.(0~23)

형 식
Hour(time)

MyHour = Hour(now) '현재시간의 시를 출력

(9) Minute

날짜/시간 형식의 데이터로 부터 분을 반환한다.(0~59)

형 식
Minute(time)

Dim MyVar
MyVar = Minute(Now)

(10) Month

날짜/시간 형식의 데이터로 부터 월을 반환한다.(1~12)

형 식
Month(date)

Dim MyVar
MyVar = Month(Now) ' 현재 날짜에서 월데이터를 가져온다.

(11) MonthName

지정한월을 나타내는 문자열을 반환한다.abbreviate의 기본값은 false이다.

형 식
MonthName(month[, abbreviate])

Dim MyVar
MyVar = MonthName(10, True) ' 10
MyVar = MonthName(10) ' 10월

(12) Now

현재 컴퓨터의 시스템 날짜와 시간을 반환한다

형 식
Now

MyVar = Now

(13) Second

날짜/시간 형식의 데이터로 부터 초를 반환한다.(0~59)

형 식
Second(time)

MySec = Second(Now) ' 현재시간에서 초 데이터를 가져온다.

(14) Time

현재 시스템 시간을 나타내는 Date 하위형식의 Variant를 반환한다.

형 식
Time

MyTime = Time ' 현재시간을 반환한다.

(15) TimeSerial

지정된 년, 월, 일의Date 하위형식인 Variant를 반환한다.

형 식
TimeSerial(hour, minute, second)

hour : Number between 0 (12:00 A.M.) and 23 (11:00 P.M.), inclusive, or a numeric expression.

minute : Any numeric expression.

second : Any numeric expression.

MyTime1 = TimeSerial(12 - 6, -15, 0)

(16) TimeValue

시간을 포함하는 Date 하위형식인 Variant를 반환한다.

형 식
TimeValue(time)

MyTime = TimeValue("4:35:17 PM") '오후 4:35:17

(17) Weekday

요일을 나타내는 정수를 반환한다.

형 식
Weekday(date, [firstdayofweek])

리턴되는 값은 1~7 의 정수이며 일요일부터 토요일까지의 순서를 의미한다.

Constant 
Value
Description
vbSunday
1
Sunday
vbMonday
2
Monday
vbTuesday 
3
Tuesday
vbWednesday
4
Wednesday
vbThursday
5
Thursday
vbFriday
6
Friday
vbSaturday
7
Saturday

MyWeekDay = Weekday(now)

(18) WeekdayName

지정된 요일을 나타내는 문자열을 반환한다.

형 식
WeekdayName(weekday, abbreviate, firstdayofweek)

Constant 
Value
Description
vbSunday
1
Sunday
vbMonday
2
Monday
vbTuesday 
3
Tuesday
vbWednesday
4
Wednesday
vbThursday
5
Thursday
vbFriday
6
Friday
vbSaturday
7
Saturday

MyDate = WeekDayName(6, True) ' 금

MyDate = WeekDayName(6) '금요일

(19)Year

날짜/시간 형식의 데이터로 부터 년도를 반환한다.

형 식
Year(date)

MyYear = Year(now) '현재날짜의 년도 데이터를 가져온다.


데이터 타입

Cbool - Boolean  
Cbyte - Byte  
Ccur - Currency  
Cdate - Date  
CDbl - Double 
Cint -  Integer  
CLng - Long  
CSng - Single  
CStr - String 
Cvar - Variant  
CVErr - Error  


※ 테스트 환경
IIS 6.0 / Windows 2003 Server

기본적으로 ASP 는 스파게티형 코드라고도 많이 불리고 실제로도 보면 유지보수및 관리가 어렵게
시간이 지나면.. 쉽게 말해서 상당히 꼬여 있다.
그래서 원활한 서비스와 유지보수를 위하여 ASP.NET 과 같이 ASP도 UI코드와 서버사이드 코드를
분리할 수 가 있다. (엄밀히 말하면 흉내 삘이다. ㅋㅋ)
해서 완성된 분리된 코드를 보면.. (개인적으로) 상당히 깔끔하고 심플한 코드가
된다. 그러기엔 이미 많이 알고들 있는 Windows Script Component 를 이용하는 것이다.
그리고 주요 서버사이드 코드의 모듈화.
완성된 샘플코드는 다음과 같다. UI 코드는 웹표준 코드를 적용시킨 XHTML 4.01 이다.
이건 어디까지나 내가 작업할때 스타일이니 문제점을 지적해주되 비판하지는 말아주기를..
개발자가 서로 욕하면 밑도 끝도 없음.. ㅋㅋ


일단 위와 같이 되면 서버사이드 코드는 <%%> 요런 형식의 코드는 거의 보이지를 않는다.
불가항력적으로

<div class="sample"><%=컨텐츠%></div>

이런 코드는 피할 수 가 없지만..
그래도 엄청나게 이원화 시켰기 때문에 코드관리가 상당히 용이해진다.
그리고 분리된 서버사이드 코드는 각각의 변수,상수 및 클래스들이 정의되어 있다.
이런식으로 관리하니 스타일 시트및 html 코드가 변한다 하더라도 서버사이드상으로는
왠만하면 지장을 주지 않게 되었다.
개인적인 경험으로는 꽤나 UI 코드에 유연하게 대처할 수가 있었다.
그리고 보다 코드에 대한 정의들이 명확해질 수 있었고.
후에 보면 유지보수에도 상당한 시간절감 효과를 느낄 수 있었다.
그리고 발견된 문제점들은 누적된 후 버전업으로 업데이트및 패치!
또한 서버사이드 코드 변화에도 UI 에 지장을 줄일수 있었다.
어쩔때는 전혀 없던가.ㅎㅎ

이미 많은 분들이 더 좋은 방법들을 사용하고 있지만.. 개인적인 간단한 방법론(?). 아니, 스타일이니
도움이 되는 분들이 있으면 다행이고. ㅎㅎ;;
ASP (Active Server Page) . 이제는 클래식이 되어버렸지만...

아직까지도 현업에서 상당히 많이 쓰이고 신규로도 사용되어지고 있다.
그러기에 한번씩 생각을 정리하는 차원에서 포스팅을 해본거지..^^;

+ Recent posts