DIM nNum1, nNum2
nNum1 = 1
nNum2 = 2

Function SetNum(byVal num1, byRef num2)
    num1 = 10 
    num2 = 20
End Function

CALL SetNum(nNum1, nNum2)

Response.Write nNum1 & "<BR>"
Response.Write nNum2

결과>
1
20

* byVal 는 값만 넘김. byRef 는 메모리 주소를 넘김.

"00001", "00002"  이런 식으로 값이 입력되는 필드가 있는데...
이것을 excel 로 저장하려고 하니 "1", "2" 이렇게 숫자로 인식된다.

이럴때는 
    Response.Write "00001"  이 것을

이렇게 출력하면 된다.
    Response.Write "=" & chr(34) & "00001" & chr(34)



SUB QueryStringParser(strStr, arrName(), arrValue())
 
 DIM nNextStartPoint, sItem, nValuePoint, nCount, sValue
 nNextStartPoint = 0 : nCount = 0
 
 DO UNTIL Instr(strStr, "&") = 0
   nNextStartPoint = instr(strStr, "&")
  sItem =  LEFT(strStr, nNextStartPoint )
  nValuePoint = instr(sItem, "=")
  arrName(nCount) = LEFT(sItem, nValuePoint - 1)
  arrValue(nCount) = MID(sItem, nValuePoint+1, len(sItem) - (nValuePoint+1))
  strStr = MID(strStr, nNextStartPoint+1)
 
  nCount = nCount + 1
 LOOP
 
 sItem = strStr
 nValuePoint = instr(sItem, "=")
 arrName(nCount) = LEFT(sItem, nValuePoint - 1)
 arrValue(nCount) = MID(sItem, nValuePoint+1)
 
END SUB


예 >
DIM arrName(10), arrValue(10), nCount, strQueryString

strQueryString = "1=a&2=b&3=c"
CALL  QueryStringParser( strQueryString , arrName, arrValue)

nCount = 0
DO UNTIL arrName(nCount) = ""
          Response.Write arrName(nCount) & " : " & arrValue(nCount) & "<br>"
          nCount = nCount + 1
LOOP

결과 >
1 : a
2 : b
3 : c

Function GetYoil ( strDate )    'strDate 의 형식 예제 :  "2009-05-09"
DIM arrYoil
arrYoil = Split ( "/일/월/화/수/목/금/토", "/")
GetYoil = arrYoil ( WeekDay ( strDate ) )               
' WeekDay 는 해당 일자의 요일을 1(일) 부터 7(토)까지 정수값을 리턴한다.
END Function  

response.write GetYoil ( "2009-05-09" )    

'  결과 -> 토

인터넷 정보 서비스에서 ASP 요청을 사용하여 큰 파일을 업로드하면 403 오류가 발생할 수 있다

기술 자료 ID : 327659
마지막 검토 : 2006년 11월 6일 월요일
수정 : 4.1
중요 이 문서에서는 메타베이스 편집 방법을 설명합니다. 메타베이스를 편집하기 전에 문제가 발생하는 경우 복원할 수 있는 백업 복사본이 있는지 확인하십시오. 이를 수행하는 방법에 대한 자세한 내용은 Microsoft Management Console(MMC)의 "구성 백업/복원" 도움말 항목을 참조하십시오.

현상

ASP(Active Server Pages) 요청을 사용하여 Microsoft 인터넷 정보 서비스(IIS) 5.0, Microsoft 인터넷 정보 서비스(IIS) 5.1 또는 Microsoft 인터넷 정보 서비스(IIS) 6.0이 설치된 컴퓨터에 큰 파일을 업로드하면 업로드가 실패할 수 있습니다. 또한 403 오류 응답이나 다음 중 하나와 유사한 오류 메시지가 나타날 수 있습니다.

오류 메시지 1
Request object error 'ASP 0104 : 80004005' 허용되지 않는 작업 :
오류 메시지 2
007~ASP 0104~허용되지 않는 작업
많은 폼 데이터를 ASP 페이지에 게시할 때 다음과 유사한 오류 메시지가 나타날 수 있습니다.
오류 ’80020009’ 예외가 발생했습니다.
또한 Response.binaryWrite 메서드를 사용할 때 파일 업로드가 실패할 수 있습니다.

이전 버전의 IIS에서는 동일한 파일 업로드가 작동한 경우에도 이러한 현상 중 하나 이상이 발생합니다.

 

원인

이 문제는 Content-Length 헤더가 있고 Content-Length 헤더에서 IIS 메타베이스의 AspMaxRequestEntityAllowed 속성 값보다 큰 데이터 양을 지정하는 경우 발생합니다. AspMaxRequestEntityAllowed 속성의 기본값은 204,800바이트입니다.

참고 이 메타베이스 속성은 IIS의 2002년 10월 누적 업데이트에 처음 포함되었습니다. 이 메타베이스 속성은 IIS 6.0의 기본 설치에 포함되어 있습니다.

 

해결 방법

경고 메타베이스를 잘못 편집하면 메타베이스를 사용하는 모든 제품을 다시 설치해야 하는 심각한 문제가 발생할 수도 있습니다. Microsoft는 메타베이스를 잘못 편집함으로써 발생하는 문제에 대해 해결을 보증하지 않습니다. 메타베이스의 편집에 따른 모든 책임은 사용자에게 있습니다.

참고 편집하기 전에 항상 메타베이스를 백업하십시오.

이 문제를 해결하려면 AspMaxRequestEntityAllowed 속성의 값을 수정하여 ASP 요청의 엔터티 본문에 허용된 최대 바이트 수를 설정해야 합니다. 이렇게 하려면 다음과 같이 하십시오.
1. 명령 프롬프트에서 다음 명령을 입력한 다음 Enter 키를 누릅니다.
cd drive:\inetpub\adminscripts
참고 폴더를 변경하는 이 명령에서 drive는 IIS가 설치된 하드 디스크의 자리 표시자입니다.
2. 명령 프롬프트에서 다음 명령을 입력한 다음 Enter 키를 누릅니다.
cscript adsutil.vbs set w3svc/ASPMaxRequestEntityAllowed size
참고 이 명령에서 size는 허용할 최대 파일 크기 업로드의 자리 표시자입니다. 최대값은 1,073,741,824바이트입니다. 이 값을 원하는 기능에 허용되는 최소값으로 설정하십시오.
3. 명령 프롬프트에서 다음 명령을 입력한 다음 Enter 키를 누릅니다.
iisreset

 

추가 정보

AspMaxRequestEntityAllowed 속성은 ASP 요청의 엔터티 본문에서 허용되는 최대 바이트 수를 지정합니다. Content-Length 헤더가 있고 Content-Length 헤더에서 AspMaxRequestEntityAllowed 속성 값보다 큰 데이터 양을 지정하는 경우 IIS에서 403 오류 응답을 반환합니다. AspMaxRequestEntityAllowed 속성은 PUT 요청과 POST 요청에만 적용되고, GET 요청에는 적용되지 않습니다. 이 메타베이스 속성이 ASP에만 적용되기 때문에 다른 ISAPI(인터넷 서버 API) 확장은 영향을 받지 않습니다.

AspMaxRequestEntityAllowed 속성은 MaxRequestEntityAllowed 속성의 기능과 관련되어 있습니다. 그러나 AspMaxRequestEntityAllowed 속성은 ASP 요청에만 적용됩니다. MaxRequestEntityAllowed 속성을 WWW 서비스(World Wide Web 게시 서비스) 수준에서 1MB로 설정할 수 있습니다. 그런 다음 특정 ASP 응용 프로그램에서 더 작은 양의 데이터를 처리하는 것을 알고 있는 경우 AspMaxRequestEntityAllowed 속성을 더 작은 값으로 설정할 수 있습니다.

 

참조

IIS의 2002년 10월 누적 업데이트를 구하는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
327696 (http://support.microsoft.com/kb/327696/) MS02-062: 2002년 10월, Internet Information Services용 누적 패치
IIS의 2003년 5월 누적 업데이트를 구하는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
811114 (http://support.microsoft.com/kb/811114/) MS03-018: 2003년 5월, 인터넷 정보 서비스(IIS)의 누적 패치




 


출처 : Micro Soft  http://support.microsoft.com/kb/327659/ko

목록을 출력할때, 제목이 너무 길면 보기 않좋다. 그럴 때 줄임표시 " ..." 로 처리하는 방법.

FUNCTION SplitString(strValue, nLength)
 DIM nCurLen, nCnt
 nCurLen = 0
 
 FOR nCnt = 1 TO Len(strValue)
  nCurLen = nCurLen + CharLength(Mid(strValue, nCnt, 1))
  
  IF nCurLen >= nLength THEN
   EXIT FOR
  END IF
 NEXT
 
 IF nCnt < Len(strValue) THEN
  SplitString = Left(strValue, nCnt) & ".."
 ELSE
  SplitString = Left(strValue, nCnt)
 END IF
END FUNCTION

FUNCTION CharLength(strChar)
 DIM strTmp
 strTmp = Server.URLEncode(strChar)
 
 IF Len(strTmp) = 6 THEN
  CharLength = 2
 ELSE
  CharLength = 1
 END IF
END FUNCTION

예>
SplitString("블로그 연말 결산", 10)

결과>

블로그 연말..

FUNCTION ChangeMoneyStr(strValue)
    DIM strReturn, nShare, nRest, nCount, strDecimal

    ' 소숫점 있으면
    IF InStr(strValue, ".") > 0 THEN
         strDecimal = Mid(strValue, InStr(strValue, ".")) 
         strValue = Left(strValue, InStr(strValue, ".") - 1)
    ELSE 
         strDecimal = ""
    END IF

    IF Len(strValue) > 3 THEN
        nShare = Len(strValue) / 3
        nRest = Len(strValue) MOD 3
       
        IF nRest = 0 THEN
            nRest = 3
            nShare = nShare - 1
        END IF
       
        strReturn = Left(strValue, nRest)
       
        FOR    nCount = 0 TO nShare - 1
            IF nCount < nShare THEN strReturn = strReturn & ","
            strReturn = strReturn & Mid(strValue, CInt(nRest) + 1 + (nCount * 3), 3)
        NEXT
       
        ChangeMoneyStr = strReturn & strDecimal
    ELSE
        ChangeMoneyStr = strValue & strDecimal
    END IF
END FUNCTION

예>
DIM strMoney
strMoney = ChangeMoneyStr( "123000" )
response.write(strMoney)  

123,000

SUB SendEmail(strFrom, strTo, strSubject, strContent)
   
    DIM objMail, FSO, File
    DIM URL, conf, Flds, strIIS

    ' 서버의 iis 버전을 알아낸다.
    strIIS = Request.ServerVariables("SERVER_SOFTWARE")
    strIIS = Split(Trim(strIIS), "/")
   
    IF strIIS(1) = "5.0" THEN     ' windows2000 -> CDONTS.NewMail
        SET objMail = Server.CreateObject("CDONTS.NewMail")
        SET conf = Server.CreateObject("CDO.Configuration")
    
        '미리 저장된 이메일 샘플 파일을 읽어서 보낼경우
        ' URL = server.MapPath("email_sample.asp")
        ' SET FSO = Server.CreateObject("Scripting.FileSystemObject")
        ' SET File = FSO.openTextFile(URL,1)
        ' strContent = File.ReadAll
        ' File.close

        WITH objMail
        .FROM     = strFrom
        .To         = strTo
        .Subject = strSubject
        .BodyFormat = 0
        .MailFormat = 0
        .Body = strContent
        .Send
        END WITH
       
    ELSE   ' IIS6.0 window2003  -> CDO.Message
   
        SET objMail = Server.CreateObject("CDO.Message")
        SET conf = Server.CreateObject("CDO.Configuration")
        SET Flds = conf.Fields

        ' 메일 서버 세팅   
        Flds("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "localhost" 'Mail Server Address or Domain or "localhost"
        Flds("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25  'SMTP Port
        Flds("http://schemas.microsoft.com/cdo/configuration/sendusing") = 1        'cdoSendUsingPort 1=내부, 2=외부 (외부 메일 서버 사용시 아래 정보들 반드시 있어야함.)
        Flds("http://schemas.microsoft.com/cdo/configuration/smtpserverpickupdirectory") = "C:\Inetpub\mailroot\Pickup"
'        Flds("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 'cdoBasic
'        Flds("http://schemas.microsoft.com/cdo/configuration/sendusername") = 메일 서버 계정 ID
'        Flds("http://schemas.microsoft.com/cdo/configuration/sendpassword") = 메일서버 계정 비밀번호
        Flds.Update

       '미리 저장된 이메일 샘플 파일을 읽어서 보낼경우
        ' URL = server.MapPath("email_sample.asp")
        ' SET FSO = Server.CreateObject("Scripting.FileSystemObject")
        ' SET File = FSO.openTextFile(URL,1)
        ' strContent = File.ReadAll
        ' File.close

        WITH objMail
            SET  .Configuration        = conf
            .MimeFormatted             = false
            .AutoGenerateTextBody  = false
            .FROM                         = strFrom
            .To                              = strTo
            .Subject                       = strSubject
            .HTMLBody                  = strContent
.BodyPart.Charset         ="ks_c_5601-1987"    '한글 깨질경우
.HTMLBodyPart.Charset="ks_c_5601-1987"     '한글 깨질경우
            .fields.update
            .Send
        END WITH
    END IF
    SET objMail = NOTHING
END SUB
  1. 봄돌 2009.07.22 20:46

    덕분에 해결했습니다.
    고맙습니다.

페이지에 출력한 목록을 엑셀로 저장하고 싶을 때....

<a href="list_for_excel.asp" target="_blank"> [엑셀로 저장하기] </a>

페이지 상단에 아래와 같이 4줄의 코드만 추가해주면 엑셀로 열기, 저장, 취소를 묻는 창이 뜬다.

-- list_for_excel.asp --------------------------------------------------------------------------
<%
Response.Buffer = TRUE
Response.CacheControl = "public"
Response.ContentType = "application/vnd.ms_excel"
Response.AddHeader "Content-disposition", "attachment;filename=" & "test.xls"   '저장할 엑셀 파일명
%>
<html>
<head>
<title>수신통계</title>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=euc-kr">
</head>
<body>
<table>
<tr><td>1</td><td>개똥이</td></tr>
<tr><td>2</td><td>길동이</td></tr>
</table>
</body>
</html>







FUNCTION Ceil(nPnanum,nNanum)
    DIM nResult1, nResult2, nRetValue
   
    nResult1 = nPnanum/nNanum
    nResult2 = ROUND(nPnanum/nNanum)

    IF nResult1 <> nResult2 THEN
        nRetValue = FIX(nResult1) + 1
    ELSE
        nRetValue = nResult1
    END IF

    Ceil = nRetValue
END FUNCTION

<예>
2 = Ceil( 8, 7)
  1. 조남철 2009.11.26 10:04

    감사합니다.
    ASP로 어떻게 올림을 구현해야 하나 고민 중이었는데. 덕분에 쉽게 해결 하였습니다.
    오늘도 행복한 하루 되십시요.

+ Recent posts