2011년 6월 1일 수요일

JAVASCRIPT 주민등록번호 체크 로직

/*
   주민등록번호 체크 로직
   1. 주민등록번호의 앞 6자리의 수에 처음부터 차례대로 2,3,4,5,6,7 을 곱한다. 그 다음, 뒤 7자리의 수에 마지막 자리만 제외하고 차례대로 8,9,2,3,4,5 를 곱한다.
   2. 이렇게 곱한 각 자리의 수들을 모두 더한다.
   3. 모두 더한 수를 11로 나눈 나머지를 구한다.
   4. 이 나머지를 11에서 뺀다.
   5. 이렇게 뺀 수가 두 자릿수이면, 즉 10보다 크면 다시 11로 나누어 나머지 값을 구한다.
   6. 이렇게 해서 나온 최종 값을 주민등록번호의 마지막 자리 수와 비교해서 같으면 유효한 번호이고 다르면 잘못된 값이다.
*/
   
   // 주민등록번호의 유효성을 체크
   function isValidJuminNo() {
    var tmpFrm = document.frm_OnlineEdu;
    var jumin1 = tmpFrm.txt_Jumin_1.value;
    var jumin2 = tmpFrm.txt_Jumin_2.value;
    var yy     = jumin1.substr(0,2);        // 년도
    var mm     = jumin1.substr(2,2);        // 월
    var dd     = jumin1.substr(4,2);        // 일
    var genda  = jumin2.substr(0,1);        // 성별
    var msg, ss, cc;
     // 숫자가 아닌 것을 입력한 경우
     if (!isNumeric(jumin1)) {
    alert("주민등록번호 앞자리를 숫자로 입력하세요.");
    tmpFrm.txt_Jumin_1.focus();
    return false;
     }
   
     // 길이가 6이 아닌 경우
     if (jumin1.length != 6) {
    alert("주민등록번호 앞자리를 다시 입력하세요.");
    tmpFrm.txt_Jumin_1.focus();
    return false;
     }
   
     // 첫번째 자료에서 연월일(YYMMDD) 형식 중 기본 구성 검사
     if (yy < "00"
      || yy > "99"
      || mm < "01"
      || mm > "12"
      || dd < "01"
      || dd > "31") {
    alert("주민등록번호 앞자리를 다시 입력하세요.");
    tmpFrm.txt_Jumin_1.focus();
    return false;
     }
   
     // 숫자가 아닌 것을 입력한 경우
     if (!isNumeric(jumin2)) {
    alert("주민등록번호 뒷자리를 숫자로 입력하세요.");
    tmpFrm.txt_Jumin_2.focus();
    return false;
     }
     // 길이가 7이 아닌 경우
     if (jumin2.length != 7) {
    alert("주민등록번호 뒷자리를 다시 입력하세요.");
    tmpFrm.txt_Jumin_2.focus();
    return false;
     }
   
     // 성별부분이 1 ~ 4 가 아닌 경우
     if (genda < "1" || genda > "4") {
    alert("주민등록번호 뒷자리를 다시 입력하세요.");
    tmpFrm.txt_Jumin_2.focus();
    return false;
     }
   
     // 연도 계산 - 1 또는 2: 1900년대, 3 또는 4: 2000년대
     cc = (genda == "1" || genda == "2") ? "19" : "20";
     // 첫번째 자료에서 연월일(YYMMDD) 형식 중 날짜 형식 검사
     if (isValidDate(cc+yy+mm+dd) == false) {
    alert("주민등록번호 앞자리를 다시1 입력하세요.");
    tmpFrm.txt_Jumin_1.focus();
    return false;
     }
   
     // Check Digit 검사
     if (!isSSN(jumin1, jumin2)) {
    alert("입력한 주민등록번호를 검토한 후, 다시 입력하세요.");
    tmpFrm.txt_Jumin_1.focus();
    return false;
     }
     return true;
   }
   function isValidDate(iDate) {
     if( iDate.length != 8 ) {
    return false;
     }
    
     oDate = new Date();
     oDate.setFullYear(iDate.substring(0, 4));
     oDate.setMonth(Number(iDate.substring(4, 6)) - 1);
     oDate.setDate(iDate.substring(6));
     if( Number(oDate.getFullYear())  != Number(iDate.substring(0, 4))
      || Number(oDate.getMonth() + 1) != Number(iDate.substring(4, 6))
      || Number(oDate.getDate())  != Number(iDate.substring(6)) ){
   
    return false;
     }
     
     return true;
   }
   
   function isNumeric(s) {
     for (i=0; i<s.length; i++) {
    c = s.substr(i, 1);
    if (c < "0" || c > "9") return false;
     }
     return true;
   }
   
   function isSSN(s1, s2) {
     n = 2;
     sum = 0;
     for (i=0; i<s1.length; i++)
    sum += Number(s1.substr(i, 1)) * n++;
     for (i=0; i<s2.length-1; i++) {
    sum += Number(s2.substr(i, 1)) * n++;
    if (n == 10) n = 2;
     }
   
     c = 11 - sum % 11;
     if (c == 11) c = 1;
     if (c == 10) c = 0;
     if (c != Number(s2.substr(6, 1))) return false;
     else return true;
   }

ASP 문자열 관련 함수

* Val(문자열 또는 숫자문자가 들어있는 문자(수로된)를 숫자로 변환)
Val("10") -> 10
Val("10a") -> 10
Sum = 10
Val(Sum) -> 10

* Str(숫자) 숫자를 문자로 변환
Str(12.34) -> "12.34"
Str(-12.34) -> "-12.34"

* Len(문자열) 문자길이 숫자로 바꾼 값
Len("ABC") -> 3
Len("AB C") -> 4

* Left(문자열 , 개수), Right(문자열 , 개수) 문자열의 왼쪽, 오른쪽에서부터 개수 만큼 추출
Left("ABCDE" , 3 ) -> "ABC"
Right("ABCDE" , 2) -> "DE"

* Mid(문자열 , 시작위치 ,( 개수)) 문자열 시작위치에서 개수만큼 추출
Mid("ABCDE" , 2 , 3 ) -> "BCD"
Mid("ABCDE" , 2 )  -> "BCDE"  [개수생략]

* Lcase(문자열) 문자열의 영어 대문자를 모두 소문자로 바꾼값
   Ucase(문자열) 문자열의 영어 소문자를 모두 대문자로 바꾼값
Lcase("ABCDE" )  -> "abcde"
Ucase("abcde" ) -> "ABCDE"

* Asc(문자열) 문자를 내부 아스키코드값으로 바꿈
   Chr(숫자) 숫자(내부아스키코드값)을 문자로 바꿈
Asc("A") -> 65
Chr(65) -> "A"

* Trim(문자열) , LTrim(문자열) , RTrim(문자열) 문자열에서 양측, 좌측, 우측 공백제거
Trim(" A B ") -> "A B" 
LTrim(" A B ") -> "A B "
RTrim(" A B ") -> " A B"

* Instr(문자열 , 찾고자하는 문자열) 문자열에서 찾을 문자열 위치값
Instr("ABCDE", "C") -> 3

* Format(문자 or 숫자 , 형식) 문자나 숫자를 형식에 맞게 문자열로 출력
Format ("ABCDE", "@@@@@@@") -> "  ABCDE" [@는 없으면 공백으로 출력]
Format ("ABCDE", "#######") -> "ABCDE" [#은 있는것만 출력]

JAVASCRIPT window.print와 div 를 이용한 화면 부분 인쇄법

///////////////  Source(html) ///////////////
<html>
<head>
   <title>화면 부분 인쇄</title>
   <SCRIPT LANGUAGE=JScript src="../js/div_print.js"></SCRIPT>
</head>
<body>
    <h2> Top </h2>
   <!--------------부분인쇄 Div 시작------------------>
    <div id="pDiv" align="center">
        <h2> Middle </h2>
    </div>
   <!--------------부분인쇄 Div 끝------------------>
   <h2> Bottom </h2>
</body>
</html>


///////////////  Source(div_print.js) ///////////////

var tempHtmlContent;

function printDiv () {
   if (document.all && window.print) {
       window.onbeforeprint = beforeDivs;
       window.onafterprint = afterDivs;
       window.print();
   }
}
function beforeDivs () {
   if (document.all) {
       var rng = document.body.createTextRange( );
       if (rng!=null) {
           //alert(rng.htmlText);
           tempHtmlContent = rng.htmlText;
           rng.pasteHTML("<table border=0 align=center><tr><td align=center>"
                                       + document.all("pDiv").innerHTML + "</td></tr></table>");
       }
   }
}
function afterDivs () {
   if (document.all) {
       var rng = document.body.createTextRange( );
           if (rng!=null) {
                       rng.pasteHTML(tempHtmlContent);
           }
   }
}


 특별히 설명이 필요 없는 소스 인줄 압니다만, 여기저기 뒤져서 알아낸 것들과 조금의 제 짱구의
굴러가는 노력이 있어서, 몇자 적습니다. ㅎㅎ
  우선 window.print  수행전과 수행후에 각각 onbeforeprint 와 onafterprint 이벤트가 발생하게 됨에 착안하여서 onbeforeprint 가 발생하면 페이지 body 에 있는 모든 html 소스를 임시 저장한후  출력을 원하는 부분(pDiv 부분)의 html 소스와 바꿉니다.
  그 후 원하는 부분의 출력이 끝나면, onafterprint 이벤트가 발생하게 되는 데 이때, 임시 저장해두었던 원래 body 소스를 다시 설정해 주면 됩니다.

ASP ADODB 의 Paramter 데이터 형식

MSSQL데이터형식
PARAMTER데이터형식
bigintadBigint
binaryadBinary
bitadBoolean
charadChar
datetimeadDate
decimaladDecimal
floatadSingle
intadInteger
moneyadCurrency
ncharadWChar
ntextadLongVarWChar
numericadNumeric
nvarcharadVarWChar
realadSingle
smalldatetimeadDate
smallintadSmallInt
smallmoneyadCurrency
sql_variantadVariant
textadLongVarChar 
timestampadDBTimeStamp
tinyintadTinyInt
varbinaryadVarBinary
varcharadVarChar

ASP Tip

1.변수선언은 Dim 사용하며 타입을 밝히지 않아도 컴파일러의 의해서 암묵적으로 결정된다.

2.변수선언과 동시에 초기화 작업을 할수가 없다.

3.세미콜론 (;)을 사용하지 않는다.

4.개체를 생성할때는 Set연산자를 사용하고 Server.CreateObject 메소드를 사용하여 생성한다

5.조건문 If는 Then 사용한다. 또한 프로시저의 시작을 알리는 ()를 사용하지 않는다.
그리고 If문의 끝을 알리는 End If를 사용한다.
IF 조건 Then
ElseIf
Else
End If

6.For시작과 To 끝을 명시하고 스텝을 작성하고 next로 끝난다. 프로시저의 시작을 알리는 ()을
사용하지 않는다.
For 시작 To 끝 Step 스텝
Next

7.함수를 호출할경우 (....)사용하여 매계변수를 전달하지않고 ()없이도 매계변수를 전달할수있다
Test (...) Test "...."

8.Asp의 Switch문은 Select Case 조건 구절을 사용한다. 구문의 끝을 알리는
End Select를 항상사용한다.
SELECT CASE intNumber
CASE 1
    Response.Write "intNumber 에 들어있는 수는 1입니다!"
CASE 2
    Response.Write "intNumber 에 들어있는 수는 2입니다!"
CASE 3
    Response.Write "intNumber 에 들어있는 수는 3입니다!"
CASE ELSE
    Response.Write "intNumber 에 들어있는 수는 1부터 10 사이의 정수가 아닙니다."
END SELECT

9.Asp의 While문은 Do While로 시작하고 구문의 끝을 알리는 Loop를 사용한다.
DO WHILE intLoop <= 10000
    Response.write intLoop & "<BR>"
    intLoop = intLoop + 1
LOOP

10.논리연산자인 같지않다는 <>을 사용한다. 논리연산자는 And와 Or을 사용한다

11.반환값이 존재할경우는 프로시저를 사용하고 반환값이 존재할경우 함수를 사용한다.
물론 프로시저 실행단위를 알리는()를 사용할 필요가 없다. 매계변수의 타입을 밝힐필요도 없다.
함수의 리턴값은 함수명에 값을 대입해주면 그것이바로 함수의 리턴값이 된다.
프로시저 선언부분
Sub Temp[(argument)]
Exit Sub
End Sub
함수 선언부분
Function Temp[(argument)]
Exit Function
End Function
콜부분 (함수, 프로시저)
Call Temp, Temp("..."), Temp "...."

12.배열은 Dim으로 변수를 선언후 ReDim으로 배열의 크기를 결정한다.
Dim temp => ReDim temp(10)
Sub을 호출할때는 ()을 사용할수 없다.

13.Asp의 파일을 인클루드 하기위해 이러한 구문을 사용한다.
<!--#include file="include/config.asp"-->

14.Asp의 With ~ End With 구문을 사용하여. 컴파일러에 의해서 해당개체의 메서드를 사용할수있다.
With구문은 VBSCRIPT 5부터 지원되는 문법이다.
<%
Dim Rs
Set Rs= Server.CreateObject("ADODB.Recordset")
with Rs
   .Open "guest", strconnect, adOpenDynamic, adLockOptimistic 
   .AddNew
     .Fields("name") = "soulhyr"
     .Fields("Email") = "soulhyr@gmail.com"
     .Fields("title") = "제목이다"
     .Fields("memo") = "본문내용이다"
   .Update
End with
%>

ASP RecordSet 객체

recordset 객체

Set DBreco = Server.CreateObject("ADODB.Recordset")

DBreco.Open "테이블이름or쿼리문or저장프로시저",DNS[,커서타입,Lock타입,옵션]

1. 커서타입(ADO상수)
 0. <adOpenForwardOnly> : 레코드를 앞으로 순차적으로 한번만 이동
 1. <adOpenKeyset> : 레코드 자유이동,레코드갱신,다른사용자가추가한 내용 열람불가
 2. <adOpenDynamic> : 레코드 자유이동,레코드갱신,다른사용자가 추가한 내용 열람가능
 3. <adOpenStatic> : 레코드 자요이동,레코드갱신불가,단지데이터를 가져오는데유용

2. Lock 타입
 1. adLockReadOnly : 읽기
 2. adLockRessimistic : 동시갱신 불가.
 3. adLockOptimistic : 동시갱신가능하나 update메서드를 실행하면 갱신안됨.
 4. adLockBatchOptimistic : 갱신모드로 들어가면 작업가능.

3. 옵션
 1. adCmdText : 쿼리문
 2. adCmdStoredProc : 저장프로시저
 3. adCmdTable : 테이블

-------------------------------------------------------------------------------------

조회 : rs.open "select * from sales",dns,2,1,1
         rs.close
삽입 : rs.open "member",dns,2,2,2
         rs.addnew
         rs("id") = "d500"
         rs.update
         rs.close
수정 : rs.open "select * from member where id='d500'",dns,2,2,1
         rs("tel") = "444-5555"
         rs.update
         rs.close
삭제 : rs.open "select * from member where id='d500'",dns,2,2,1
         rs.delete
         rs.update
         rs.clode

JAVASCRIPT 즐겨찾기

window.external.AddFavorite

<a href="javascript:window.external.AddFavorite('https://www.spris.com/eshop/', '톡톡튀는 쇼핑몰!! 스프리스');">즐겨찾기 추가 </a>

JAVASCRIPT 셀렉트박스 선택된 값 가져오기

var vElement = document.getElementById('tch_info');
var vIndex = vElement.selectedIndex;
 
opener.document.writeFrm.teacher_id.value = vElement.options[vIndex].value;
opener.document.writeFrm.teacher_name.value = vElement.options[vIndex].text;

ASP 페이지의 환경변수 조회 팁

ASP에서 페이지의 환경변수(IP,URI,PORT....) 알아내기

ASP에서 Request객체의 ServerVariables 컬렉션을 이용해서 가져올 수 있는 환경변수들에는 현재 페이지의 uri ( url이 아님 ), ip, 서버ip, 이전페이지, 도메인네임 등등 ... 종류가 다양합니다.
원칙은 Request.ServerVariables(값)와 같이 써야하나, ASP 자체가 뒤에 컬렉션은 생략해도 무방하므로 Request(값)과 같이 써도 무방합니다.

<%
'HTTP 요청을 한 클라이언트의 아이피(IP)
ip=Request.ServerVariables("REMOTE_ADDR")
'HTTP 요청을 한 클라이언트 호스트 명 - 정보가 없으면 REMOTE_ADDR과 같음
remote_host=Request.ServerVariables("REMOTE_HOST")
'HTTP 요청을 받은 서버 호스트 명( 도메인 명 )
http_host=Request.ServerVariables("HTTP_HOST")
'이전페이지
referer=Request.ServerVariables("HTTP_REFERER")
'현재페이지의 uri - url이 아님
url=Request.ServerVariables("URL")
'HTTP 요청을 받은 서버 호스트의 (아이피)
addr=Request.ServerVariables("LOCAL_ADDR")
'HTTP 요청을 한 클라이언트에서 입력한 문자열의 총길이
content_length = Request.ServerVariables("CONTENT_LENGTH")
'HTTP 요청과 응답에 사용되는 PORT ( 웹서버의 기본포트는 80 )
server_port = Request.ServerVariables("SERVER_PORT")
'HTTP 요청과 응답에 사용되는 프로토콜 버전
server_protocol = Request.serverVariables("SERVER_PROTOCOL")
'HTTP 요청을 받은 서버의 웹서버 버전
server_software = Request.serverVariables("SERVER_SOFTWARE")
%>

<%
response.write ip & "<br>"
response.write remote_host & "<br>"
response.write http_host & "<br>"
response.write referer & "<br>"
response.write url & "<br>"
response.write addr & "<br>"
response.write content_length & "<br>"
response.write content_type & "<br>"
response.write server_port & "<br>"
response.write server_protocol & "<br>"
response.write server_software
%>

ASP include 팁

1. 첫번째로는 일반적으로 많이 쓰이는 형태(페이지를 삽입한다.)
   <!-- #include file = "../include/common.asp" //--> <--  상대경로
   <!-- #include virtual = "/include/common.asp" //--> <--  절대경로

2. 두번째로는 쓰이는 형태(페이지를 실행시킨다)
   Server.Execute("test.asp") 과 같은형태로 사용합니다 (절대경로/상대경로)


3. 차이점

  #include 참조받는 페이지와 변수를 같이 쓸수있다.
  Server.Exe...  참조받는 페이지와 변수를 같이쓸수없다.

4. 만약 Server.Exe에서 참조받는페이지의 변수를 써야한다면 Server.Execute(Test.asp?Name="전성균")이런식으로 파라메터로 넘겨줘야한다.

장점/단점

#include 말그대로 변수를 같이 쓸수있어서 코딩이 용이하다/상황에따라 페이지 변경할수없다.
Server.Execute 코딩이 용이하지않다/상황에 따라 페이지변경이 가능하다.

EX) if (strURL = "1")Then
          resultUrl = "test1.asp"
      else
          resultUrl = "test2.asp"
      end if

      Server.Execute(resultUrl)

WAS(웹서버 스트레스 툴) 사용법

웹서버 스트레스 툴 사용법 (Web Application Stress Tool)|네트워크

 
 
Microsoft WAS(Web Application Stress) 도구를 설치하는 방법과 WAS를 사용하여 웹 프로그램을 테스트하기 위한 스크립트를 만들고 실행하는 방법을 단계별로 설명합니다.

WAS 도구는 Microsoft Internet Information Services(IIS) 5.0 웹 서버를 시뮬레이트된 로드에 두는 데 사용할 수 있는 시뮬레이션 도구입니다. 이 도구는 여러 브라우저가 웹 사이트에서 페이지를 요청하는 환경을 현실적으로 재현하도록 설계되었습니다. WAS를 사용하여 웹 프로그램에 대한 성능 데이터를 수집하고 웹 서버의 성능과 안정성을 평가하십시오. WAS는 스크립트를 사용하여 상대적으로 적은 수의 클라이언트를 사용함으로써 많은 수의 요청을 시뮬레이트합니다. 따라서 가능한 생산 환경에 가까운 시나리오를 만듭니다. 웹 프로그램이 스트레스 하에서 어떻게 응답하며 배포하기 전에 프로그램의 문제를 어떻게 식별하고 제거하는지 이해하기 위해 수집하는 데이터를 분석할 수 있습니다.

 

웹 응용 프로그램 스트레스 도구를 설치하는 방법

참고: 클라이언트 컴퓨터에서 다음 절차를 수행해야 합니다. WAS는 Microsoft Windows NT 4.0 서비스 팩 4(SP 4) 이상과 Microsoft Windows 2000에서 지원됩니다. 테스트 중인 웹 서버에는 WAS를 설치하지 마십시오. 설치할 경우 WAS 설치가 웹 서버 성능에 영향을 미칠 수 있으며 테스트 결과에 방해가 될 수 있습니다.
1.관리자 또는 Administrators 그룹의 구성원으로 컴퓨터에 로그온합니다.
2.WAS를 다운로드합니다. 브라우저를 시작하고 다음 Microsoft 웹 사이트로 이동하여 WAS를 다운로드할 수 있습니다.
http://www.microsoft.com/downloads/details.aspx?FamilyID=e2c0585a-062a-439e-a67d-75a89aa36495&DisplayLang=en (http://www.microsoft.com/downloads/details.aspx?familyid=e2c0585a-062a-439e-a67d-75a89aa36495&displaylang=en)
Microsoft 지원 파일을 다운로드하는 방법은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
119591 (http://support.microsoft.com/kb/119591/) 온라인 서비스로부터 Microsoft 지원 파일을 구하는 방법
3.웹 페이지의 오른쪽 창에서 Download를 누릅니다.
4.저장을 누릅니다.
5.Setup.exe 파일을 저장할 위치를 지정한 다음 저장을 누릅니다.
6.테스트를 수행할 각 클라이언트 컴퓨터에 Setup.exe 파일을 복사합니다.
7.각 클라이언트 컴퓨터에서 Microsoft Windows 탐색기를 시작한 다음 5단계에서 저장한 Setup.exe 파일을 두 번 누릅니다.
8.Yes를 눌러 사용 계약에 동의하여 기본 설치 위치를 적용하거나 WAS를 설치할 위치를 지정한 후 Next를 누릅니다.
9.OK를 누른 다음 Finish를 누릅니다.
 

테스트 스크립트를 만드는 방법

웹 프로그램을 테스트할 스크립트를 만들려면 다음 방법 중 하나를 사용하십시오.

스크립트를 수동으로 만드는 방법

스크립트를 수동으로 만들려면 다음과 같이 하십시오.
1.시작을 누르고 프로그램, Microsoft Web Application Stress Tool을 차례로 가리킨 다음 Microsoft Web Application Stress Tool을 누릅니다.
2.Scripts 메뉴에서 Create를 가리킨 다음 Manual을 누릅니다.

스크립트가 왼쪽 창에 "New Script"로 표시됩니다. 새 스크립트 이름을 변경하려면 New Script를 누른 다음 스크립트의 새 이름을 입력합니다.
3.오른쪽 창의 Server 상자에 웹 서버의 이름, FQDN(정식 도메인 이름) 또는 IP(인터넷 프로토콜) 주소를 입력합니다.
4.Notes 상자에 설명을 입력합니다.
5.Verb 아래에서 첫 번째 셀의 아래 화살표를 누른 다음 사용할 HTTP(Hypertext Transfer Protocol) 동사(예: GET)를 누르거나 셀에 사용할 동사를 입력합니다.
6.Path 아래에 웹 페이지의 이름과 경로(예: /scripts/test.asp)를 입력합니다.

참고: 서버 이름은 포함하지 마십시오.
7.페이지 그룹을 사용하려는 경우 Group 아래를 적절히 변경합니다.
8.스크립트 항목 사이에 대기 시간을 지정하려면 Delay 아래에 지연 값(밀리초 단위)을 입력합니다. 기본값은 0입니다.
9.스크립트에 항목을 추가하려면 5단계부터 8단계까지 반복합니다.

브라우저 활동을 기록하여 스크립트를 만드는 방법

브라우저 활동을 기록하여 스크립트를 만들려면 이 절에서 설명하는 절차를 사용하십시오.

참고: 프록시 서버를 사용 중인 경우 사용자 계정에 먼저 로그온하도록 Microsoft WebTool 서비스를 구성해야 합니다. 프록시 서버를 사용하지 않는 경우 본 문서의 2단계: 브라우저 활동 기록 절로 바로 이동하십시오.

Microsoft WebTool 서비스를 구성하는 방법

프록시 서버를 사용 중인 경우 사용자 계정에 로그온하도록 Microsoft WebTool 서비스를 구성하십시오. 구성하려면 다음과 같이 하십시오.
1.시작을 누르고 설정을 가리킨 다음 제어판을 누릅니다.
2.관리 도구를 두 번 누른 다음 서비스를 두 번 누릅니다.
3.WebTool을 두 번 누른 다음 로그온 탭을 누릅니다.
4.다음 계정으로 로그온에서 계정 지정을 누른 다음 아래의 형식을 사용하여 사용자 이름을 입력합니다.
\\Domain\UserName
5.해당 상자에 암호를 입력하고 확인한 다음 확인을 누릅니다.
6.WebTool을 마우스 오른쪽 단추로 누른 다음 중지를 누릅니다.
7.WebTool을 마우스 오른쪽 단추로 누른 다음 시작을 누릅니다.
8.서비스 대화 상자를 닫은 다음 관리 도구 대화 상자를 닫습니다.


브라우저 활동을 기록하는 방법

1.Microsoft Internet Explorer를 시작합니다.
2.도구 메뉴에서 인터넷 옵션을 누른 다음 일반 탭을 누릅니다.
3.임시 인터넷 파일에서 파일 삭제를 누릅니다.
4.연결 탭을 누릅니다.
5.전화 걸기 설정 상자에서 전화 접속 네트워킹 연결을 누른 다음 설정을 누릅니다.
6.자동 구성에서 설정 자동 검색 확인란이 선택되어 있으면 선택을 취소합니다.
7.프록시 서버에서 프록시 서버 사용 확인란을 선택하고 주소 상자에 localhost를 입력한 다음 포트 상자에 8000을 입력합니다.
8.로컬 주소에 프록시 서버 사용 안함 확인란이 선택되어 있으면 선택을 취소합니다.
9.확인을 두 번 누른 다음 Internet Explorer를 종료합니다.
10.시작을 누르고 프로그램, Microsoft Web Application Stress Tool을 차례로 가리킨 다음 Microsoft Web Application Stress Tool을 누릅니다.
11.Scripts 메뉴에서 Create를 가리킨 다음 Record를 누릅니다.
12.기록할 설정 옆의 확인란을 선택하고 Next를 누른 다음 Finish를 누릅니다.
13.Internet Explorer를 시작한 후에 주소 표시줄에 테스트할 웹 사이트의 URL(Uniform Resource Locator)을 입력한 다음 Enter 키를 누릅니다.
14.테스트할 웹 사이트의 페이지를 탐색합니다.

탐색하는 페이지의 경로가 WAS 기록 창에 표시됩니다.
15.작업을 마쳤으면 Stop Recording을 누릅니다.

스크립트가 왼쪽 창에 "New Recorded Script"로 표시됩니다. 새 스크립트 이름을 변경하려면 New Recorded Script를 누른 다음 스크립트의 새 이름을 입력합니다.

IIS 로그에서 스크립트를 만드는 방법

IIS 로그에서 스크립트를 만들려면 다음과 같이 하십시오.
1.시작을 누르고 프로그램, Microsoft Web Application Stress Tool을 차례로 가리킨 다음 Microsoft Web Application Stress Tool을 누릅니다.
2.Scripts 메뉴에서 Create를 가리킨 다음 Log를 누릅니다.
3.Log file 상자에서 Browse를 눌러 스크립트를 만드는 데 사용할 IIS 로그를 찾고 Open을 누른 다음 Next를 누릅니다.
4.로그 파일을 구문 분석할 옵션을 누른 다음 Finish를 누릅니다.

스크립트는 왼쪽 창에 "LogFile.log"로 표시됩니다. 여기서 LogFile.log는 IIS 로그 파일의 이름입니다. 새 스크립트 이름을 변경하려면 LogFile.log를 누른 다음 스크립트의 새 이름을 입력합니다.

웹 사이트 콘텐츠에서 스크립트를 만드는 방법

웹 사이트에 있는 파일에서 스크립트를 만들려면 다음 단계를 수행하십시오.
1.시작을 누르고 프로그램, Microsoft Web Application Stress Tool을 차례로 가리킨 다음 Microsoft Web Application Stress Tool을 누릅니다.
2.Scripts 메뉴에서 Create를 가리킨 다음 Contents를 누릅니다.

스크립트가 왼쪽 창에 "New Script"로 표시됩니다. 새 스크립트 이름을 변경하려면 New Script를 누른 다음 스크립트의 새 이름을 입력합니다.
3.트리가 아직 확장되지 않은 경우 스크립트 옆의 더하기 기호(+)를 눌러 트리를 확장합니다.

스크립트 항목이 스크립트 트리에 표시됩니다.
4.Content Tree를 누릅니다.
5.오른쪽 창의 Content location 상자에 콘텐츠 폴더 경로를 입력하거나 Browse를 눌러 폴더를 찾은 다음 OK를 누릅니다.
6.필요할 경우 Virtual root 상자에 가상 루트 자리 표시자를 입력합니다.
7.Apply를 누릅니다.

WAS는 웹 콘텐츠에 기반하여 콘텐츠 트리를 만듭니다. 테스트에 포함할 파일 옆의 확인란을 선택합니다.
 

스크립트를 구성하는 방법

스크립트 설정을 구성하려면 다음과 같이 하십시오.
1.시작을 누르고 프로그램, Microsoft Web Application Stress Tool을 차례로 가리킨 다음 Microsoft Web Application Stress Tool을 누릅니다.
2.트리가 아직 확장되지 않은 경우 왼쪽 창에서 ScriptName( ScriptName은 스크립트의 이름)을 두 번 눌러 트리를 확장합니다.

스크립트 항목이 오른쪽 창에 표시됩니다.
3.구성할 스크립트 항목(Verb 열 왼쪽에 있는 검정색 단추)의 행 머리글을 두 번 누릅니다.

이렇게 하면 스크립트 Details 보기가 열립니다. 이 보기를 사용하여 쿼리 문자열 이름-값 쌍을 편집하거나 게시 데이터를 사용자 지정하거나 HTTP 헤더를 수정하거나 SSL(Secure Sockets Layer) 암호화를 설정하거나 스크립트를 RDS(Remote Data Service) 쿼리로 서식 지정할 수 있습니다.
4.적절한 탭을 눌러 원하는 설정을 지정한 다음 OK를 누릅니다.
5.왼쪽 창에서 Settings를 누릅니다.

Settings 대화 상자에 표시된 스크립트 옵션에 대한 설정을 지정합니다. 예를 들어, 스트레스 수준 값을 수정하거나 테스트 실행 시간을 설정하거나 대역폭 조절을 설정할 수 있습니다.
6.스크립트에 성능 모니터 카운터를 추가하려면 Perf Counters를 누르고 오른쪽 창에서 Add Counter를 누르고 추가할 개체와 카운터를 누르고 Add를 누른 다음 OK를 누릅니다.
7.해당 스크립트에 정의된 페이지 그룹 목록을 보거나 페이지 그룹 분배를 변경하려면 Page Groups를 누릅니다.
8.기본 사용자에 사용자를 추가하고 제거하거나 새로운 사용자를 만들려면 Users를 누르고 오른쪽 창에서 Default를 두 번 누르고 다음 단계 중 하나를 수행하십시오.
새 사용자를 추가하려면 해당 상자에 다음 정보를 입력한 다음 Create를 누릅니다.
만들려는 사용자 수
사용자 이름 접두사
암호
새 사용자를 추가하려면 왼쪽 창에서 Default를 마우스 오른쪽 단추로 누른 다음 Add를 누릅니다.

새 사용자가 왼쪽 창에 "New Population"으로 표시됩니다. 새 사용자 이름을 변경하려면 New Population을 누른 다음 새 이름을 입력합니다.
9.View 메뉴에서 Scripts를 눌러 Scripts 보기로 돌아갑니다.
10.현재 그룹에 클라이언트 컴퓨터를 추가 또는 제거하거나 클라이언트 컴퓨터의 새 그룹을 추가하려면 Clients를 누른 다음 오른쪽 창에서 Default를 누릅니다.
클라이언트 컴퓨터를 추가하려면 Machine name 상자에 컴퓨터 이름(또는 IP 주소)을 입력한 다음 Add를 누릅니다.
새 그룹을 추가하려면 왼쪽 창에서 Default를 마우스 오른쪽 단추로 누른 다음 Add를 누릅니다. 새 그룹이 왼쪽 창에 "New Group"으로 표시됩니다. 새 그룹 이름을 변경하려면 New Group을 누른 다음 새 이름을 입력합니다.
11.View 메뉴에서 Scripts를 눌러 Scripts 보기로 돌아갑니다.
12.각 사용자와 함께 저장된 쿠키를 보려면 Cookies를 누릅니다.
 

웹 프로그램을 테스트하는 방법

스크립트를 사용하여 테스트를 실행하려면 다음과 같이 하십시오.
1.시작을 누르고 프로그램, Microsoft Web Application Stress Tool을 차례로 가리킨 다음 Microsoft Web Application Stress Tool을 누릅니다.
2.왼쪽 창에서 사용할 스크립트를 누른 다음 Scripts 메뉴에서 Run을 누릅니다.
 

테스트 보고서를 보는 방법

테스트 보고서를 보려면 다음과 같이 하십시오.
1.시작을 누르고 프로그램, Microsoft Web Application Stress Tool을 차례로 가리킨 다음 Microsoft Web Application Stress Tool을 누릅니다.
2.View 메뉴에서 Reports를 누릅니다.

수행하는 각 테스트의 보고서는 왼쪽 창의 관련 스크립트 아래 표시됩니다. 보고서 제목은 테스트를 시작한 날짜와 시간입니다.
3.트리를 아직 확장하지 않았으면 보고서를 두 번 눌러 트리를 확장합니다.
4.보고서 트리에서 추가 정보를 보려는 항목(예: Page Summary)을 누릅니다.

해당 항목에 대한 세부 정보가 오른쪽 창에 표시됩니다.
 

문제 해결

WAS를 시작할 수 없습니다.

이 문제는 WebTool 서비스가 실행되고 있지 않을 경우 발생할 수 있습니다. 이 문제를 해결하려면 WebTool 서비스가 실행 중인지 확인하십시오. 확인하려면 다음과 같이 하십시오.
1.시작을 누르고 프로그램, 보조프로그램을 차례로 가리킨 다음 명령 프롬프트를 누릅니다.
2.명령 프롬프트에서 net start webtool을 입력한 다음 Enter 키를 누릅니다.
3.현재 실행 중인 서비스 목록을 표시하려면 net start를 입력한 다음 Enter 키를 누릅니다.

목록에 WebTool이 표시되는지 확인합니다.
클라이언트 컴퓨터를 추가하거나 클라이언트 컴퓨터에 연결할 수 없습니다.

다음 경우 중 하나에 해당하면 이러한 현상이 발생할 수 있습니다.
클라이언트 컴퓨터가 Windows NT 4.0 기반 또는 Windows 2000 기반 컴퓨터가 아닙니다. 이 문제를 해결하려면 Windows NT 기반 또는 Windows 2000 기반 컴퓨터에 WAS를 설치하십시오.

또는
WAS가 클라이언트 컴퓨터에 설치되지 않았습니다. 이 문제를 해결하려면 연결할 클라이언트 컴퓨터에 WAS를 설치하십시오.

또는
WAS가 설치된 클라이언트 컴퓨터에서 WebTool 서비스가 실행되고 있지 않습니다. 이 문제를 해결하려면 연결할 클라이언트 컴퓨터에서 WebTool 서비스를 시작하십시오.

또는
연결할 클라이언트 컴퓨터에서 로컬 관리자 그룹의 구성원이 아닙니다. 이 문제를 해결하려면 연결할 각 클라이언트 컴퓨터에서 로컬 관리자 그룹의 구성원인 사용자 계정을 사용하여 로그온하십시오.
WAS 문제 해결 방법에 대한 자세한 내용은 WAS 도움말의 "Troubleshooting" 절을 참조하십시오. Help 메뉴에서 Web Application Stress Help를 누르고 Contents 탭을 누른 다음 Troubleshooting을 두 번 누릅니다.

 

참조

WAS 도구를 사용하는 방법에 대한 자세한 내용은 Help 메뉴에서 Web Application Stress Help를 눌러 WAS 도움말을 보십시오.

WAS 도구에 대한 자세한 내용을 보려면 다음 Microsoft 웹 사이트를 방문하십시오.
Microsoft 웹 응용 프로그램 스트레스 도구 (http://support.microsoft.com/?scid=http%3a%2f%2fwebtool.rte.microsoft.com%2f)
웹 서버 테스트에 사용할 수 있는 WAS 및 기타 도구에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
 
231282 (http://support.microsoft.com/kb/231282/) 웹 서버를 테스트하는 스트레스 도구
IIS 설치 및 사용을 위한 리소스에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
 
266115 (http://support.microsoft.com/kb/266115/) IIS 5.0 설치 및 사용을 위한 리소스

ASP injection 방어 함수

▣ 설명 : 로그인 창을 통해 특수 기호를 넣어 암호등을 무력화 시키는 인젝션 공격을 막을 수 있다.
▣ 넣는 위치 : 별도의 asp 파일로 만들어 include 시킨다.
                    적용시킬 항목에 ChkBadStr 를 통과시킨다.
(사용 예)
<%
Function ChkBadStr(val)
 val = lcase(val)
    badstrs = "; \  ' = select delete update drop insert shell exec"
    badstr=split(badstrs, " ")
    for i = 0 to Ubound(badstr)
 if instr(1,val,badstr(i)) <> 0 then
     response.write "<script>"
     response.write "alert('허용되지 않는 문자열이 포함되어 있습니다.');"
     response.write "history.back();"
     response.write "</script>"
     response.end
 end if
    next
    ChkBadStr = val
End Function
user_id=ChkBadStr("user_id")
%>

JAVASCRIPT 특수문자 입력 방지

입력시 특수문자 입력 막기


function checkNumber()
{
 var objEv = event.srcElement;
 var num ="{}[]()<>?_|~`!@#$%^&*-+\"'\\/ ";    //입력을 막을 특수문자 기재.
 event.returnValue = true;
 
 for (var i=0;i<objEv.value.length;i++)
 {
 if(-1 != num.indexOf(objEv.value.charAt(i)))
 event.returnValue = false;
 }
 
 if (!event.returnValue)
 {
  alert("특수문자는 입력하실 수 없습니다.");
  objEv.value="";
 }
}




.
.
.
.
.
<TD height="21" width="125">              
    <p><input type="text" name="uid" size="16" maxlength="30"  style="font-family:굴림; font-size:12px;" onKeyDown="checkNumber();"></p>
  </TD>

HTML 테이블 레이아웃 팁

테이블 크기를 그대로 유지
style='word-break:break-all;'

이미지가 문제일경우
style='table-layout:fixed ;'

HTML 이벤트 목록

HTML Events

onabort
이미지의 다운로드를 중지할 때 (브라우저의 중지버튼)

onactivate
개체가 활성활 될 때 발생
(태그의 기능이 작용할 때 발생하는 이벤트로 예를 들어 링크를 누를 경우 링크가 옮겨질때 발생하는 것을 감지하는 이벤트 핸들러)

onafterprint
문서가 출력되거나 혹은 출력하기 위해 출력 미리보기를 한후에 발생

onafterupdate
데이터영역 개체에서 발생하는 이벤트로 데이터 소스 오브젝트내의 데이터가  업데이트 되었을 때 발생(데이터 개체부분 참조)

onbeforeactivate
개체가 활성화 상태로 되기 바로 직전에 발생 (onactivate를 참고)

onbeforecopy
선택 영역이 시스템의 클립보드로 복사되기 바로 직전에 발생

onbeforecut
선택 영역이 지워지기 바로 직전에 발생

onbeforedeactivate
모 문서에서 현재 개체에서 다른 개체로 activeElement가 바뀔 때 발생 (activeElement는 개체를 지칭하는 예약어로도 쓰임)

onbeforeeditfocus
편집가능한 개체 내부에 포함된 개체가 편집활성화 된 상태가 되거나 혹은 편집가능한 개체가 제어를 위해 선택될때

onbeforepaste
시스템의 클립보드에서 문서로 붙여넣기 될때 대상 개체에서 발생

onbeforeprint
문서가 출력되거나 혹은 출력하기 위해 출력미리보기 직전에 발생

onbeforeunload
페이지가 언로드되기 직전에 발생

onbeforeupdate
데이터영역 개체에서 발생하는 이벤트로 데이터 소스 오브젝트내의 데이터가  업데이트 되기전에 발생(데이터 개체부분 참조)

onblur
개체가 포커스를 잃었을 때

onbounce
마퀴태그에서 alernate상태에서 스크롤이 양 사이드에서 바운드 될때 발생

oncellchange
데이터제공 개체에서 데이터가 변화할때 발생

onchange
개체 혹은 선택영역의 내용이 바뀔 때 발생

onclick
개체위에서 마우스의 왼쪽 버튼을 누를때 발생

oncontextmenu
클라이언트 영역에서 사용자가 마우스 오른쪽 버튼을 눌러 콘텍스트 메뉴를 열 때 발생

oncontrolselect
사용자가 개체의 제어 영역을 만들때 발생

oncopy
시스템의 클립보드에 선택영역 혹은 개체를 복사할 때 소스 개체로부터 발생

oncut
시스템의 클립보드에 선택영역 혹은 개체를 잘라낼때 소스 개체로부터 발생

ondataavailable
비정기적으로 데이터를 전달하는 데이터 소스 개체로부터 데이터가 도착할 때 마다 정기적으로 발생

ondatasetchanged
데이터 소스개체의 변화에 의해 데이터가 노출된 상태로 될때 발생

ondatasetcomplete
데이터 소스 개체로부터 모든 데이터가 유용한 상태로 표시될때 발생

ondblclick
사용자가 개체에 더블클릭 할때 발생

ondeactivate
모 문서에서 현재 개체에서 다른 개체로 activeElement가 변할 때 발생

ondrag
드래그 상태가 지속되는 동안 소스 객체로 부터 발생

ondragend
드래그 상태가 끝날때 소스 객체로 부터 발생

ondragenter
사용자가 개체를 드래그 하여 드롭가능 위치로 지정된 영역으로 이동할때 타겟 개체에서 발생

ondragleave
사용자가 개체를 드래그 하여 드롭가능 위치로 지정된 영역을 떠날때 타겟 개체에서 발생

ondragover
사용자가 개체를 드래그 하여 드롭가능 위치로 지정된 영역내에서 드래그할 때 계속적으로 타겟 개체에서 발생

ondragstart
선택된 개체 혹은 텍스트 영역에서 사용자가 드래그를 시작할 때 발생

ondrop
드래그앤드롭 작용에서 상태가 진행되는 동안 개체가 타겟 개체에 드롭되었을 때 타겟 개체에서 발생

onerror
개체가 로드되는 동안 발생하는 이벤트

onerrorupdate
데이터 소스 개체 내에 데이터가 없데이트 되는 동안 에러가 발생할 때 데이터 영역 개체에서 발생

onfilterchange
비주얼 필터의 상태가 바뀌거나 트랜지션이 완료되었을 때 발생

onfinish
마퀴개체의 loop가 완료되었을 때 발생

onfocus
개체가 포커스를 받았을 때 발생

onfocusin
개체에 포커스가 셋팅되기 바로 직전 개체에 대해 발생

onfocusout
포커스가 다른 개체로 이동한 후에 포커스를 가고 있는 현재 개체에서 발생

onhelp
브라우저가 활성화 되어 있는 동안 F1키를 눌렀을 때

onkeydown
사용자가 키를 눌렀을 때

onkeypress
기능키를 제외한 키를 눌렀을 때 발생

onkeyup
사용자가 키를 놓았을 때 발생

onlayoutcomplete
소스 문서로 부터 콘텐드를 가지는 객체가 미리보기나 출력을 할때 현재 LayoutRect개체를 모두 채우는 것이 끝났을 때 발생

onload
브라우저가 개체를 로드한 후에 발생

onlosecapture
개체가 마우스 캡쳐를 잃었을 때 발생

onmousedown
개체 위에 마우스 버튼을 누를 때 발생(좌우 어느 버튼이든)

onmouseenter
개체 안으로 마우스 포인터가 들어올 때 발생

onmouseleave
개체의 경계 밖으로 마우스 포인터가 이동할 때 발생

onmousemove
개체 위에서 마우스가 움직일 때 발생

onmouseout
개체 밖으로 마우스 포인터가 빠져나갈 때 발생

onmouseover
개체위로 마우스 포인터가 들어올 때 발생

onmouseup
마우스가 개체 위에 있는 동안 마우스를 누른상태에서 해제될때 발생

onmousewheel
마우스 휠이 돌아갈 때 발생

onmove
개체가 움직일 때 발생

onmoveend
개체가 움직임이 끝날 때 발생

onmovestart
개체가 움직이기 시작할 때 발생

onpaste
문서에 클립보드로 부터 데이터가 전송될때 타겟 개체에서 발생

onpropertychange
개체의 속성이 바뀔 때 발생

onreadystatechange
개체의 상태가 변화할 때 발생

onreset
폼을 사용자가 리셋할 경우 발생

onresize
개체의 크기가 바뀔 때 발생

onresizeend
제어영역에서 개체의 크기가 사용자에 의해 변화가 끝날 때 발생

onresizestart
제어영역에서 개체의 크기가 사용자에 의해 변화되기 시작할 때 발생

onrowenter
데이터 소스 내에서 현재 열이 변화되거나 개체에 새로운 유용한 데이터가 입력될 때 발생

onrowexit
데이터 소스 콘트르롤이 개체내의 현재 열을  변화시킬 때 발생

onrowsdelete
레코드셋에서 열이 삭제될 때 발생

onrowsinserted
현재 레코드셋에 새로운 열이 추가된 후에 발생(데이터 개체에서)

onscroll
사용자가 개체내이 스크롤 바를 스크롤 할 때 발생

onselect
현재 선택된 영역이 바뀔 때 발생

onselectionchange
문서의 선택 영역의 상태가 바뀔 때 발생

onselectstart
개체가 선택되기 시작할 때 발생

onstart
마퀴 개체에서 매 루프가 시작될 때 발생

onstop
사용자가 stop버튼을 눌렀을 경우 혹은 페이지를 떠날 때 발생

onsubmit
폼이 전송되기 바로 전에 발생

onunload
개체가 언로드 되기 직전에 발생

ASP 파일 처리하기

ASP에서 파일 처리하기

asp에서 파일을 처리하기 위해서는 asp에서 제공하는 FileSystemObject 객체를 이용해야한다. FileSystemObject의 인스턴스를 생성하기 위해서는 Server 객체의 CreateObject메소드를 이용하면된다. 또는 <object></object>태그를 이용한다. <object> 태그를 이용하는 것이 속도면에서 좋다.

set fso = Server.CreateObject("Scripting.FileSystemObject")
<object runat=server progid=Scripting.FileSystemObject id=fso></object>
주의) object 태그를 사용할 때는 반드시 태그를 닫아야 한다.

FileSystemObject의 인스턴스를 생성하고 나면, TextStream 객체를 생성할 수 있게 된다.
FileSystemObject 객체와 TextStream 객체에서 제공하는 메소드와 프로퍼티는 다음과 같다.

메소드
CreateTextFile : Text 형태의 파일을 생성한다. 이미 존재하는 파일을 생성하면 덮어 쓰여진다. TextStream을 리턴한다.
OpenTextFile : 이미 생성되어있는 파일을 열 때 사용함. TextStream을 리턴한다.
Close : 파일을 닫는다.
Read : 파일에서 지정한 수 만큼 문자를 읽어 들일 때 사용.
ReadLine : 파일의 문자열을 한 줄로 읽을 때 사용.
ReadAll : 파일의 내용 모두를 한 줄로 읽을 때 사용.
Skip : 파일을 읽을 때 문자를 건너뛴다.
SkipLine : 파일을 읽을 때 다음 줄을 건너뛴다.
Write : 파일에 문자열을 저장할 때 사용.
WriteLine : 문자열 단위로 문자를 출력한다.
WriteBlankLines : 파일에 문장진행 문자를 지정한 수 만큼 출력한다.

프로퍼티
AtEndOfLine : 파일 포인터가 파일의 끝에 있으면 True를 리턴함.
Colume : 파일의 현재 문자의 번호를 리턴함.
Line : 파일의 현재 라인의 번호를 리턴함.


CreateTextFile
이 메소드는 새로운 파일을 만들거나 기존의 파일을 덮어쓸 때 사용한다. 위의 모든 메소드와 프로퍼티는 Server 객체의 CreateObject 메소드를 통해 FileSystemObject의 인스턴스가 생성된 뒤부터 사용이 가능하다.

[생성된객체].CreateTextFile("파일경로"[,"덮어쓰기"][,"유니코드"]) '[]는생략가능

'생성된객체'는 CreateObject 메소드를 통해 리턴받은 값이다. '파일경로'는 서버의 물리적인 경로를 지정한다. 아니면 Server.MapPath("상대경로")를 이용한다. 예를 들면, C:\Inetpub\wwwroot\test.txt 또는 Server.MapPath("test.txt") 와 같이 사용해야 한다.
'덮어쓰기'는 True와 False로 구분하는데, True가 기본값이다. 만약, 동일한 파일이 존재할때 False로 설정하면 에러가 난다. '유니코드'는 True와 False로 구분하는데, True일 경우 유니코드로 된 파일을 생성하면, False일 경우에는 ASCII로 된 파일을 생성한다. 기본값은 False 이다.

참조) Server.MapPath("상대경로")는 이것을 포함하고 있는 파일의 물리적인 경로를 리턴한다.

OpenTextFile
이 메소드는 이미 만들어져 있는 파일을 열 때 사용하는데 읽기 쓰기 추가가 가능하다

생성된객체.OpenTextFile("파일경로") [, 읽기쓰기모드] [, 파일생성여부] [, 형식] )

읽기쓰기모드
ForReading 1 : 파일을 읽기 전용으로 연다. ( 기본값 읽기만 가능 )
ForAppending 8 : 파일을 추가모드로 연다. ( 파일의 끝에 내용을 추가한다. )
ForWriting 2 : 파일을 쓰기모드로 연다. ( 파일의 내용을 지우고 다시 쓴다. )

파일생성여부
True : 파일을 새로 만든다.
False : 기존의 파일을 연다. ( 기본값 )

형식
TristateUseDefault -2 : 시스템 기본값을 이용해 파일을 연다.
TristateTrue -1 : Unicode 형식으로 파일을 연다.
TristateFalse 0 : ASCII 형식으로 파일을 연다. ( 기본값 )


파일에 문자를 저장 - Write, WriteLine, WriteBlankLines

CreateTextFile과 OpenTextFile 메소드 중 하나를 통해 파일을 생성 또는 열게되면 파일에 문자를 저장할 수 있게 된다.

Write : 문자열 출력
WriteLine : 문자열을 출력한후 문장진행 문자를 출력해 새로운 라인으로 파일 포인터를 이동.
WriteBlankLines : 문자진행 문자만을 출력( 줄바꿈 )

[object].Write("문자열")
[object].WriteLine("문자열")
[object].WriteBlankLines(문자진행 문자 갯수)
여기서 object는 CreateTextFile 또는 OpenTextFile에서 리턴한 Stream객체이다. WriteBlankLines 메소드에서는 '문장진행 문자 갯수'는 새로운 문장을 입력할 샛수 만큼 숫자로 지정하면 지정한 만큼 새로운 문자열을 만든다.

예)
<%
set obj = CreateObject("Scripting.FileSystemObject")

if IsObject(obj) then
set objnewfile = obj.CreateTextFile("C:\Inetpub\wwwroot\test.txt")

objnewfile.Write("안녕하세요")
objnewfile.WriteBlankLines(3)
objnewfile.WriteLine("Test 입력구문입니다")
objnewfile.close

Response.Write("데이터를 저장했습니다")
else
Response.Write("객체 생성에 실패했습니다.")
end if
%>

test.txt에 저장된 결과
안녕하세요
[엔터]
[엔터]
Test 입력구문입니다
[엔터]

[엔터]는 줄바꿈이 된부분을 표시한 것임. WriteBlankLines(3)으로 3개의 라인이 만들어지고, 마지막 라인에 글이 쓰여지고 WriteLine을 글을 쓰고 줄바꿈을 하나 한다.


파일 내용 읽어오기 - Read, ReadAll, ReadLine

[object].Read(읽어들일 문자개수)
[object].ReadLine
[object].ReadAll

Read 메소드는 읽어들일 문자의 개수를 지정하면 지정한 수만큼의 문자를 읽어들인다.
지정된 문자보다 개수를 크게 지정하면 파일의 끝까지 읽어들인다.

ReadLine 메소드는 한 라인을 문자열로 읽어온다.

ReadAll 메소드는 파일의 모든 내용을 하나의 문자열로 읽어 들인다.

예)
<%
set obj = CreateObject("Scripting.FileSystemObject")

if IsObject(obj) then
set objopenfile = obj.OpenTextFile("c:\Inetpub\wwwroot\test.txt")

response.write("Read 메소드 " & objopenfile.Read(8) & "<br>")
response.write("ReadLine 메소드 " & objopenfile.ReadLine & "<br>")
response.write("ReadAll 메소드 " & objopenfile.ReadAll & "<br>")
objopenfile.close
else
response.write("객체 생성에 실패했습니다.")
end if
%>

결과)
Read 메소드 안녕하세요
ReadLine 메소드
ReadAll 메소드 Test 입력구문입니다.

Read 메소드는 지정한 문자만큼 읽어들이고,
ReadLine은 포인터가 위치한 라인을 읽어들이고 포인터를 다음 라인으로 옮긴다. 이 메소드를 사용하면 줄단위로 파일을 읽어들일 수 있다.
ReadAll 메소드는 파일 포인터가 위치한 곳에서 부터 파일의 끝까지 읽어들인다. 처음에 이 메소드를 사용하면 파일의 모든 내용을 하나의 문자열로 읽어들인다.

CLOSE

파일에 대한 작업을 끝마쳤으면 파일을 닫아야 한다. 파일을 닫기 위해서는 Close 메소드를 사용한다.
[object].Close

MS-SQL 문자형 데이터를 날짜형 데이터 형식으로 변환하는 방법



* 중요한 점 : 변환하려는 모든 문자형 데이터의 형식이 같아야한다.

가끔은 문자열로 된 날짜 데이터를 날짜형 데이터로 바꾸고자 하는 경우가 있습니다. 날짜형 데이터라고 한다면 datetime 형과 smalldatetime 형을 이야기 합니다. 날짜형 데이터인 경우는 다양한 날짜관련 함수를 이용한 응용이 가능하기 때문입니다. 하지만 그렇지 않은 경우, 즉 문자형으로 되어 있는 경우 날짜 함수를 이용하기 위해서는 문자열을 날짜형으로 바꾸어주는 과정이 추가로 필요하게 됩니다.
특히 웹을 통해 입력된 날짜를 테이블에 기록하게 되는 경우 다음과 같은 형태로 날짜가 테이블에 기록이 되는 경우가 많습니다.
2003-12-01 오전 10:30:21
2003-12-02 오후 05:12:25
위와 같이 기록이 될 경우 MS SQL 서버는 데이터 중간의 '오전' 또는 '오후'를 인식히자 못하기 때문에 위 문자열을 날짜형 데이터로 변환하기가 쉽지 않습니다. 이러한 문제로 위와 같은 데이터를 정확한 날짜형 데이터로 변환하고자 하는 경우가 많이 있습니다. 이를 위한 방법을 제시하고자 합니다.
1. 에러 확인
위에서 예시한 형태의 데이터가 테이블에 기록이 된 경우 발생하는 문제를 살펴보도록 하겠습니다. 다음과 같이 만들어진 테이블이 있다고 가정을 하겠습니다.

CREATE TABLE Test (
col1 int,
col2 varchar(25)
)
GO
이 테이블에 다음과 같이 '오전' 또는 '오후' 가 포함된 데이터를 입력해 보겠습니다.

INSERT INTO Test VALUES(1, '2003-10-01 오후 09:10:20')
INSERT INTO Test VALUES(2, '2003-10-10 오전 10:30:20')
GO
이 상태에서 날짜 연산함수 중의 하나인 DateAdd() 함수를 이용해서 한달을 더한 날짜를 얻어 보도록 하겠습니다.

SELECT DateAdd(mm, 1, col2) AS col3 FROM Test
만일 정상적인 날짜형 데이터라고 한다면 위 쿼리문에 의해서 col2 컬럼에 한달을 더한 날짜가 표시되어야 하나 위 경우는 잘못된 날짜 데이터이기에 다음과 같은 에러가 발생합니다.

서버: 메시지 241, 수준 16, 상태 1, 줄 1
문자열을 datetime으로 변환하는 중 구문 오류가 발생했습니다.
우리가 보기에는 '2003-10-01 오후 09:10:20' 또는 '2003-10-10 오전 10:30:20' 데이터가 의미가 있는 날짜 데이터이지만 MS SQL 서버는 이를 날짜로 인식하지 못하기 때문에 에러가 납니다. 만일 데이터가 '2003-10-10 10:30:20 AM' 또는 '2003-10-10 19:30:20' 와 같은 형태로, 즉 '오전' 과 '오후'를 포함하지 않는다면 자동으로 형변환이 이루어져 날짜 연산이 가능하게 됩니다.
2. 정상적인 날짜형 데이터로 변환
이제 위에서 문제가 되고 있는 col2 컬럼의 값을 MS SQL 서버가 인식하는 날짜형 데이터로 바꾸는 방법을 살펴보도록 하겠습니다.
'2003-10-01 오후 09:10:20'
'2003-10-10 오전 10:30:20'
와 같은 데이터를
'2003-10-01 09:10:20 PM'
'2003-10-10 10:30:20 AM'
로 바꾸는 방법을 다음과 같이 생각할 수 있습니다.
"문자열 중간에 '오전'이 포함되어 있으면 뒷 부분에 'AM'을 붙여주고, 그렇지 않으면 뒷 부분에 'PM'을 붙여주고 중간의 '오전','오후'는 없애면 되겠네...그리고 위치를 보니 문자열 12번째 자리에서 두 글자가 '오전','오후' 값이네..."
위 방법을 그대로 SQL문으로 구현한다면 다음과 같습니다.


SELECT
Substring(col2, 1, 10) + Substring(col2, 14, 9) + ' ' +
CASE Substring(col2, 12, 2) WHEN '오전' THEN 'AM' ELSE 'PM' END AS col2
FROM Test
위 SQL문의 수행 결과는 다음과 같습니다.


col2
-----------------------------------------
2003-10-01 09:10:20 PM
2003-10-10 10:30:20 AM
(2개 행 적용됨)
이제 col2 컬럼의 값을 위 값으로 바꾸면 됩니다. 방법은 다음과 같이 UPDATE 문을 이용하면 됩니다.


UPDATE Test
SET col2 = Substring(col2, 1, 10) + Substring(col2, 14, 9) + ' ' +
CASE Substring(col2, 12, 2) WHEN '오전' THEN 'AM' ELSE 'PM' END
이제 col2 컬럼은 날짜형 데이터를 갖게 되었으므로 다음과 같은 날짜 연산에 의해 정상적인 결과 값을 보여줍니다.


SELECT DateAdd(mm, 1, col2) AS col3 FROM Test
결과는 다음과 같습니다.


col3
------------------------------------------------------
2003-11-01 21:10:20.000
2003-11-10 10:30:20.000
(2개 행 적용됨)
3. 컬럼의 데이터형 바꾸기
만일 col2 컬럼의 데이터형을 varchar(25) 가 아닌 datetime으로 바꾸고자 한다면 어떻게 하면 될까요?
다음과 같이 ALTER TABLE 문을 이용하면 됩니다.


ALTER TABLE Test
ALTER COLUMN col2 datetime
만일 col2 컬럼에 정확한 날짜형이 아닌 데이터가 있다면 위 SQL문은 실패하게 됩니다. 만일 '2003-02-30 12:30:00 AM' 과 같은 데이터가 있었다면 위 SQL 문은 에러가 납니다. 왜나하면 2월 30일은 있을 수 없는 데이터이기 때문에 날짜형 데이터로 바꿀 수 없기 때문입니다. 컬럼의 형태가 원래부터 datetime 형 또는 smalldatetime 형이라면 이처럼 잘못된 데이터가 기록될 일이 없습니다. 문자형으로 날짜를 기록하는 경우 발생하는 문제입니다.
4. 정리
특별한 경우가 아니면 날짜 데이터는 datetime 또는 smalldatetime 형 컬럼에 기록을 하는게 좋습니다. 그렇지 않으면 날짜 연산을 사용하지 못하게 되거나, 잘못된 날짜 데이터가 기록이 될 염려가 있기 때문입니다. 특별한 경우라 함은 년별 또는 월별, 일별 검색을 위해 날짜를 분리해야 한다거나 하는 경우입니다.
데이터베이스의 무결성은 무결성을 유지하도록 제대로 설정하는것으로부터 시작됩니다

MS-SQL 함수 목록

SQL 함수의 종류

수학함수, 날짜함수, 문자열함수, 시스템함수가 있습니다.


1. 수학함수

ABS(숫자) : 절대값을 반환한다.
SIN(각도) : 사인값을 구한다.
COS(각도) : 코사인값을 구한다.
TAN(각도) : 탄젠트값을 구한다.
EXP(지수) : 지수값을 나타낸다.
POWER(숫자) : 입력된 숫자의 지수승을 구한다.
ROUND(숫자) : 지정된 길이로 라운드 처리된 숫자값의 길이를 알수 있다.
SIGN(숫자) : 입력된 값이 양수,음수,0인지를 알수있다.
SQRT(정수) : 입력된 값의 제곱근을 구한다.


2. 날짜함수

DATEADD : 조건에 입력된 숫자만큼 날짜에 추가한다.
DATEDIFF : 입력된 두개의 날짜 사이의 수를 구한다.
Time : 현재의 시간을 나타낸다.
DATENAME : 입력된 날짜의 아스키코드 값을 반환한다.
DATEPART : 입력된 날짜의 정수값을 반환한다.
GETDATE : 현재의 날짜와 시간을 내부적으로 설정된 값으로 지정한다.


3. 문자열함수

SPACE : 지정된 숫자만큼의 공백을 반환한다.
UPPER : 입력된 문자를 대문자로 반환한다.
REPLACE : 입력된 문자열을 변환한다.
REVERSE : 입력된 문자를 반대로 출력한다.
+ : 둘 이상의 문자 또는 문자열을 연결한다.
DIFFERENCE : 두개의 문자열을 비교해 유사성을 판단한 후 차이를 출력한다.
LEFT : 왼쪽부터 지정된 위치까지의 문자값을 반환한다.
LOWER : 입력된 문자를 소문자로 반환한다.


4. 시스템함수

COL_NAME(테이블ID,컬럼ID) : 컬럼 이름을 반환한다.
COL_LENGTH(테이블ID,컬럼이름) : 컬럼 길이를 반환한다.
DATALENGTH(내용) : 데이터 길이를 반환한다.
DB_NAME(데이터베이스 이름) : 데이터베이스 이름을 반환한다.
HOST_ID : 호스트 프로세스 ID값을 반환한다.
ISNULL : Null 대신 지정된 값을 반환한다.
USER_ID(사용자ID) : 데이터베이스 사용자 ID값을 반환한다.

MS-SQL 자료형

정밀 숫자
정수
bigint : -2^63(-9223372036854775808)에서 2^63-1(9223372036854775807) 사이의 정수 데이터(전체 숫자)입니다.
int : -2^31(-2,147,483,648)에서 2^31 - 1(2,147,483,647) 사이의 정수 데이터(전체 숫자)입니다.
smallint : 2^15(-32,768)에서 2^15 - 1(32,767) 사이의 정수 데이터입니다.
tinyint : 0에서 255 사이의 정수 데이터입니다.
bit
bit : 1 또는 0 값을 갖는 정수 데이터입니다.(성별, 메일링가입여부...등)
decimal 및 numeric
decimal : -10^38 +1에서 10^38 –1 사이의 고정 정밀도 및 배율 숫자 데이터입니다.
numeric : decimal과 기능이 같습니다.
money 및 smallmoney
money : 통화 단위의 1/1000의 정확성을 가진 -2^63(-922,337,203,685,477.5808)에서 2^63 - 1(+922,337,203,685,477.5807) 사이의 통화 데이터 값입니다.
smallmoney : 통화 단위의 1/1000의 정확성을 가진 -214,748.3648에서 +214,748.3647 사이의 통화 데이터 값입니다.
근사 숫자
float : -1.79E + 308에서 1.79E + 308 사이의 부동 정밀도 숫자 데이터입니다.
real : -3.40E + 38에서 3.40E + 38 사이의 부동 정밀도 숫자 데이터입니다.
datetime 및 smalldatetime
datetime : 1753년 1월 1일에서 9999년 12월 31일까지 1/300초 또는 3.33밀리초의 정확성을 가진 날짜 및 시간 데이터입니다.
smalldatetime : 1900년 1월 1일에서 2079년 6월 6일까지 1분의 정확성을 가진 날짜 및 시간 데이터입니다.
문자열
char : 길이가 최대 8,000자이고 유니코드가 아닌 고정 길이 문자 데이터입니다.(ID, PASSWORD...등)
varchar : 길이가 최대 8,000자이고 유니코드가 아닌 가변 길이 문자 데이터입니다.
text : 길이가 최대 2^31 - 1(2,147,483,647)자이고 유니코드가 아닌 가변 길이 데이터입니다.
유니코드 문자열
nchar : 길이가 최대 4,000자인 고정 길이 유니코드 데이터입니다. (이름, PASSWORD, 대화명...)
nvarchar : 길이가 최대 4,000자인 가변 길이 유니코드 데이터입니다. sysnamenvarchar(128)과 같은 기능의 시스템 제공 사용자 정의 데이터 형식으로서 데이터베이스 개체 이름을 참조할 때 사용됩니다.
ntext : 길이가 최대 2^30 - 1(1,073,741,823)자인 가변 길이 유니코드 데이터입니다.(게시판내용, 물품설명...등)
이진 문자열
binary : 길이가 최대 8,000바이트인 고정 길이 이진 데이터입니다.
varbinary : 길이가 최대 8,000바이트인 가변 길이 이진 데이터입니다.
image : 길이가 최대 2^31 - 1(2,147,483,647)바이트인 가변 길이 이진 데이터입니다.
그 밖의 데이터 형식
cursor : 커서에 대한 참조입니다.
sql_variant : text, ntext, timestamp, sql_variant를 제외하고 SQL Server에서 제공하는 여러 가지 데이터 형식의 값을 저장하는 데이터 형식입니다.
table : 나중에 처리할 수 있도록 결과 집합을 저장하는 특수 데이터 형식입니다.
timestamp : 행이 업데이트될 때마다 업데이트되는 데이터베이스 차원의 고유한 숫자입니다.
uniqueidentifier : 전역 고유 식별자입니다(GUID).

ASP 내장함수 목록

----ASP에서 쓰이는 내장함수----

abs()

- 절대값구하기
array(배열)

- 배열을 반환
asc()

- 문자의 ANSI문자값을 반환
atn()

- 아크 탄젠트로 반환
cbool()

- boolean형식으로 반환
cbyte()

- byte형식으로 반환
ccur()

- currency형식으로 반환
cdate()

- date형식으로 반환
cdbl()

- double형식으로 반환
chr()

- asc()함수의 반대, ANSI문자를 일반문자로 변환
cint()

- interger형식으로 반환
clng()

- long형식으로 반환
cos(각도)

- 주어진 각도의 코사인 값을 반환
createobject()

- 자동화 인터페이스를 통해 다른 응용프로그램이나 프로그래밍 도구에 나타나는 객체에 대한 참조를 만들어 반환
cstr()

- string형식으로 반환
date()

- 현재의 날자를 반환
dateadd(a,b,c)
- a=날짜 형식(y 또는 m 또는 d 같은...), b=추가할 수량, c=날짜
DateDiff(간격, 날짜1, 날짜2 [,firstdayofweek[, firstweekofyear]])

- 간격인수 yyyy(년) q(분기), m(월), y(일[일년기준]), d(일), w(요일), ww(주[일년기준]), h(시), n(분), s(초)
dateserial(년,월,일) 

- 주어진 년,월,일에 대한 date형식을 반환
ex) dateserial(2007,05,29)
ex2) dateserial(year(date),month(date) -1, 1-1)
;2달전 마지막 일수를 구한다.
exp()

- 주어진 수에대한 자연로그(승수로 거듭제곱하는 수) 밑인 e를 반환
filter(inputstring,값[,include[,비교]]))

- inputstring는 검색할 문자열의 1차원 배열 include는 true 나 false값을 가지는데, true로 설정되면 값발견시 그값을 가진 배열을 반환하고,flase로 설정되면 검색에 맞지않는 부분의 배열을 반환 비교는 비교형식을 나타내는 숫자값
fix()

- 주어진 수의 정수를 반환
formatcurrency()

- 원화 형식으로 반환 예) \1,000
formatdatetime()

- 날자와 시간으로 형식화하여 반환
formatnumber(숫자,소수자릿수)

- 숫자로 형식화된 식을 반환 소숫점 몇째자리...
formatpercent(수,소수자리수)

- 퍼센트형식으로 반환 기본 소수2째자리까지.
hex()

- 주어진 수를 16진수로 변환
hour()

- 0과23 사이의 시간을 나타낸다
inputbox(프롬프트[,제목][,기본값][,xpos][,ypos][,helpfile,context])

- 대화상자
instr([시작,]문자열1,문자열2[,비교])

- 시작은 문자열 검색 시작위치, 문자열1은 검색할 문자이며, 문자열2는 찾아야할 문자, 비교는 비교상수를 나타냄
instrrev()

- instr()과 반대로 문자 끝에서부터 검색
int()

- 주어진 수의 정수부분을 반환
isarray()

- 주어진 변수가 배열인지 판단하는 boolean값을 반환
isdate()

- 주어진 식이 날짜로 전환 될수 있는지 나타내는 boolean값을 반환
isempty()

- 주어진 변수가 초기화 되었는지 나타내는 boolean값을 반환
isnull()

- 주어진 식이 유효한 데이터가 있는지 없는지 boolean값을 반환
isnumberic()

- 주어진 식이 숫자로 값이 정해질 수 있는지 나타내는 boolean값 반환
isobject() 

- 자동화 객체를 참조하는지 여부를 나타내는 boolean값을 반환
join(목록[,구분기호])

- 배열에 포함되어 있는 여러 문자열을 결합하여 만든 문자열을 반환 모록은 1차원 배열이름, 구분기호는 문자열을 구분하기위해 사용하고 기본값은 "" 공백
lbound(배열이름[,차원])

- 주어진 배열에서 사용할 수 있는 가장 작은 첨자를 반환 배열이름은
                                      배열 변수의 이름, 차원은 배열의 차원중 가장 작은 값을 나타냄
lcase()

- 주어진 문자를 소문자로 반환
left(문자열,수)

- 주어진 문자를 왼쪽으로부터 주어진 수만큼의 문자열을 반환
len()

- 주어진 문자열의 문자 개수를 세는 함수
loadpicture(그림파일의이름)

- 그림객체를 반환
log()

- 주어진수의 자연 로그를 반환
ltime()

- 앞에 공백이 없는 문자열을 반환
mid(문자열,시작[,길이])

- 주어진 문자열에서 주어진 위치에서부터의 길이만큼의 문자를 반환
minute(시간)

- 시간에서 분값(0~59)을 반환
month(날짜)

- 달의 값(1~12)을 반환
monthname(달)

- 주어진달의 숫자표현을 문자표현으로 바꾸어준다
msgbox(프롬프트[,단추][,제목][,helpfile,context])

- 프롬프트는 대화상자 안의 내용 단추는 단추모양,제목은 제목표시줄이름, helpfile은 도움말위치,context는 도움말 문맥번호
now()

- 현재 날자와 시간을 반환
oct()

- 주어진 숫자의 8진수 값을 나타내는 문자를 반환
replace(문자열,찾을문자열,바꿀문자열[,시작[,횟수[,비교]]])

- 문자열은 바꿀 대상, 찾을문자열은 문자열에서 바꾸어야 할 문자, 바꿀문자열은 찾은 문자열을 대치할 문자열, 시작은 검색시작위치 횟수는 바꾸는 횟수, 비교는 바꿀 때의 비교형식
right(문자열,수)

- 주어진 문자의 오른쪽으로 부터 주어진 수만큼의 문자를 반환
rnd(수)

- 난수를 반환 수는 생략가능
round(수)

- 반올림한 수를 반환, 소수 첫째자리 반올림
rtrim(문자열)

- 뒤에 공백이 없는 문자열을 반환
scriptengine()

- 사용중인 스크립트 언어를 나타낼때 사용
scriptenginebuildversion()

- 사용중인 스크립트 엔진의 버전 수를 반환
scriptenginemajorversion()

- 사용중인 스크립트 엔진의 주 버전 수를 반환
scriptengineminorversion()

- 사용중인 스크립트 언어의 보조 버전 수를 반환
second(시간)

- 시스템 시간중 초값(0~59)을 반환
sgn(수)

- 주어진 숫자의 부호를 나타내는 정수를 반환 0보다크면 1, 같으면 0, 작으면 -1을 반환
sin()

- 주어진 라디안 값의 사인값을 반환
space(수)

- 주어진 수만큼의 공백이 포함된 문자열을 반환
split(문자열[,구분기호[,수[,비교]]])

- 문자열은 배열에 포함될 문자열, 구분기호는 문자열 구분하기위한 기호를 표시. 생략시 "" 공백, 수는 반환될 문자열의 수를 나타냄, 비교는 바꿀때의 비교형식
sqr(수)

- 주어진 수의 제곱근을 반환
strcomp(문자열1,문자열2[,비교])

- 두개의 문자열을 비교하여 결과값을 반환
strreverse(문자열)

- 주어진 문자열을 뒤에서부터 읽은 문자열을 반환
string(수,문자)

- 주어진 문자가 주어진 수만큼의 반복된 문자열을 반환
tan(수)

- 주어진 라디안 값의 수 만큼의 탄젠트 값을 반환
time()

- 현재 시간을 반환
timeserial(시, 분, 초)

- 주어진 시간,분,초에 대한 시간 값을 반환
timevalue(시간)

- 시간이 포함된 date형식을 반환해주는 함수
trim(문자열)

- 앞뒤 공백이 없는 문자열을 반환해 줄 때 사용
typename(변수이름)

- 주어진 변수의 정보를 나타내는 문자열 반환
ubound(배열이름[,차원])

- 배열의 차원으로 가장 큰 첨자를 반환, 배열함수의 개수 - 1 반환
ucase(문자열)

- 주어진 문자를 대문자로 바꾸어 줍니다
vartype(변수)

- 변수의 형식을 나타내는 값을 반환
weekday(날짜[,firstday of week])

- 요일을 나타내는 정수를 반환, firstday for week는 첫재요일을 숫자로
weekdayname(요일,약어, firsrday of week)

- 요일은 숫자, 약어는 약어의 유무의 부울값
year()

- 현재의 년도를 나타낼때 쓰임