2013년 10월 21일 월요일

Oracle LPAD 활용

[ 환경 ]
- Oracle 11g function


[ 목적 ]
- Primary Key 형태 : ABC-20131012-001
- 위의 Key 에 대한 Sequence 한 Max 값을 구하는 Oracle Function 코드 작성, 특히 마지막 3자리에서 최대값에 1을 더한 값을 구해야 한다, Number Type 이면 쉽게 구할 수 있지만, Char 가 섞여 있어, 아래와 같이 조금 복잡해 졌다


[ Function 코드 ]
- Primary Key 에 대한 최대값 구하기
- Substr 으로 마지막 3자리 자르기
- Number Type 으로 변경
- LPAD 으로 1을 더하고. 3번째 자리 기준으로 왼쪽에 0을 채운다
- 마지막으로 원래 Format 으로 재배치 한다

CREATE OR REPLACE FUNCTION TBABLE_USER.F_MaxNo (mType VARCHAR2, mDate VARCHAR2) RETURN VARCHAR2 AS
mNextNo VARCHAR2(16);

BEGIN  
    SELECT mType || '-' || mDate || '-' || LPAD(NVL(SUBSTR(MAX(NO), -3), 0) + 1, 3, '0') INTO mNextNo FROM TB_TABLE
    WHERE NO LIKE mType || '%';

    RETURN mNextNo;
END;
/


[ 참고 ]
-- LPAD Sample
SELECT LPAD('Page 1',15,'*.') "LPAD example"
  FROM DUAL;

LPAD example
---------------
*.*.*.*.*Page 1

2013년 10월 4일 금요일

confirm javascript function call form aspx.cs

[ 환경 ]
asp.net
iis

[ 목적 ]
asp.net 의 aspx.cs 의 C# code 에서 javascript ( confirm 에 대한 ) 을 호출하여, 사용자가 선택 한 상황(yes or no)에 따라 Process 를 분기 한다

[ 방법 ]
아래 방법을 보면 알겠지만, 숨김 버튼 한개를 만들고, 이벤트를 걸어서 처리 한다
1. aspx.cs code
protected void Page_Load(object sender, EventArgs e)
{
  if (!IsPostBack)
  {
      ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "test", "test();", true);
  }
}

protected void LinkButton3_Click(object sender, EventArgs e)
{
    myProcess();
}

2. aspx code
<asp:LinkButton ID="LinkButton3" runat="server" Text="clickMeToo" OnClick="LinkButton3_Click" style='display:none;'></asp:LinkButton>
<script type="text/javascript">  
    function BookingCancelConfirm() {
        var ans = confirm('are you ok?');
        if (ans) {
            <%= Page.GetPostBackEventReference(LinkButton3) %>
            return true;
        }
        else {
            self.location = '/default.aspx';
            return false;
        }
    }
</script>