sql 2009. 5. 19. 16:02

oracle9i ]start with connect by prior~


계층형 게시판 같이 트리구조로 되어 있는

디비를 삭제, 정렬, 기타 등등 트리구조에서 아주아주아~~~~~~~주 편하게 사용할 수 있다.

 글번호

그룹 

단계 

순서 

부모글 

 

 1

1

 3

  3 

 5

3

    5

 6

4

      6

 2

5

  2

 4

1

2

6

 2

    4

 

사용법 ) 3번글을 지우려한다면 그 하위 답변인 5,6번 게시물도 지워져야 한다.

            이때 쿼리 짜낼려고 별짓을 다 했는데; 간단한 방법이 있었으니..두둥~

            delete from s_board

            where 글번호 in (

                                     select *
                                     from s_board
                                     start with 글번호 = 3                          //시작하는 부분
                                     connect by prior 글번호 = 부모글        //검색 대상 을 트리형태로 검색 
                                     order by 그룹 desc, 순서

           )

           요롷게 start with ~ connect by prior 을 써주면 된다.

 

* prior의 위치

   - connect by prior 자식컬럼 =             부모컬럼 => 부모에서 자식으로 트리 구성

   - connect by        자식컬럼 = prior      부모컬럼 => 자식에서 부모로 트리 구성

 

 

 

참고 ) http://blog.naver.com/humanlinux?Redirect=Log&logNo=110005644075

         http://cafe.naver.com/ohsol.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=21

sql 2009. 2. 16. 15:04

oracle (+)을 left outer join on 으로 바꾸기

아래의 두개의 쿼리는 동일한 쿼리인다.
(+)를 left outer join on 으로 변경시킨 sql이다.

SELECT SV.STD_NO, SV.KOR_NM, SV.SUST, SV.DEPT_KOR_NM, SV.SHYR, SV.SHREG_CD, PG.PROGRAM, PC.PDCHECK
       , NVL(MB.YEAR, (CASE WHEN SUBSTR(SV.STD_NO, 0, 4) > 8000 THEN TO_NUMBER(1900+SUBSTR(SV.STD_NO, 0, 2)) ELSE TO_NUMBER(SUBSTR(SV.STD_NO, 0, 4)) END)) AS BASEYEAR
FROM ABK_PROGRAMGROUP PG
    , ABEEK_STUINFO_VIEW SV
    , ABK_ABEEKPDCHECK PC
    , ABK_MIDBASIS MB
WHERE 1=1
AND SV.ABEEK_FG = 'Y'
AND SV.SHREG_CD IN ('1','2')
AND PG.HAKKWACD = SV.SUST
AND SV.STD_NO = PC.HAKBUN(+)
AND SV.STD_NO = MB.HAKBUN(+)
ORDER BY SV.STD_NO DESC, SV.KOR_NM DESC



 

SELECT SV.STD_NO, SV.KOR_NM, SV.SUST, SV.DEPT_KOR_NM, SV.SHYR, SV.SHREG_CD, SV.PROGRAM, PC.PDCHECK
       , NVL(MB.YEAR, (CASE WHEN SUBSTR(SV.STD_NO, 0, 4) > 8000 THEN TO_NUMBER(1900+SUBSTR(SV.STD_NO, 0, 2)) ELSE TO_NUMBER(SUBSTR(SV.STD_NO, 0, 4)) END)) AS BASEYEAR
FROM
(SELECT  S.STD_NO, S.KOR_NM, S.SUST, S.DEPT_KOR_NM, S.SHYR, S.SHREG_CD, PG.PROGRAM
 FROM ABEEK_STUINFO_VIEW S, ABK_PROGRAMGROUP PG
WHERE S.ABEEK_FG = 'Y'
 AND S.SHREG_CD IN ('1','2')
 AND S.SUST = PG.HAKKWACD
)SV
LEFT OUTER JOIN
(SELECT HAKBUN, PDCHECK
FROM ABK_ABEEKPDCHECK
)PC
ON SV.STD_NO = PC.HAKBUN
LEFT OUTER JOIN
(SELECT HAKBUN, YEAR
 FROM ABK_MIDBASIS
)MB
ON SV.STD_NO = MB.HAKBUN
ORDER BY SV.STD_NO DESC, SV.KOR_NM DESC

Flex3.0&AS3 2009. 2. 13. 17:00

advanceddatagrid 에서 체크박스 랜더러 사용하기


datagrid 컬럼에 렌더러와 rendererIsEditor에 true으로 설정후에 랜더러 설정해주면 정상적으로 동작한다.

데이타 그리드안에 체크박스 넣을시 스크롤시에 체크박스가 비정상적으로 체크되는 현상이 발생한다.
데이타 그리드의 row인덱스값에 따라서 해당위치에 표시가 되는현상이기때문에 이런 부분을 예방하기 위해서는
체크여부와 체크박스의 위치를 기억할수있는 label을 만들어서 편법으로 만들어주었다.

이 선택여부와 label 번호를 기억(저장)되고 있는 부분이 있어야 하는데 db로부터 데이타를 받아온후에 가상으로
아래처럼 필드를 추가해주었다.

for(var i:int=0; i<main_dataList.length; i++)
    {
     main_dataList[i].IsChecked = false;
     main_dataList[i].No = i;
    }

아래처럼 for문돌면서 check여부를 확인해서 체크된녀석들만 뭔가 수행하고자하는 작업을 넣어주면 될듯함.

for(var i:int=0; i<main_dataList.length; i++)
    {
     if(main_dataList[i].IsChecked)
      trace(main_dataList[i].PPE_CONTENT+' : '+main_dataList[i].No+' : '+main_dataList[i].IsChecked);
    }


datagrid 일부..

<mx:DataGridColumn  itemRenderer="MASTER.SWF.CheckboxRenderer"     rendererIsEditor="true" />




CheckboxRenderer.mxml 렌더러파일

<?xml version="1.0" encoding="utf-8"?>
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" horizontalAlign="center" implements="mx.controls.listClasses.IDropInListItemRenderer">
        <mx:Script>
          <![CDATA[
           import mx.controls.Alert;
            import mx.controls.advancedDataGridClasses.AdvancedDataGridListData;
            import Dsic.Controls.DsDataGrid;
           import mx.controls.DataGrid;
           import mx.controls.dataGridClasses.DataGridListData;
           import mx.controls.listClasses.BaseListData;
  
           private var _listData:BaseListData;
           public function get listData():BaseListData {
             return _listData;
           }
           public function set listData( value:BaseListData ):void {
             _listData = value;
           }
             
           private function changeCB(evt:MouseEvent):void {
             var myListData:AdvancedDataGridListData = evt.target.parentDocument.listData;
             var myDG:DsDataGrid = DsDataGrid(myListData.owner);
             myDG.document.main_dataList[Number(no.text)].No = no.text;
             myDG.document.main_dataList[Number(no.text)].IsChecked =!data.IsChecked;
           } 
          
          
          ]]>
        </mx:Script>
       
         <mx:Text id="no" text="{data.No}" visible="true" width="0"/>
         <mx:CheckBox id="cb" selected="{data.IsChecked}" click="changeCB(event)"/>
</mx:HBox>
Flex3.0&AS3 2009. 2. 12. 15:39

플렉스 관련 사이트


플렉스 이미지 효과내는 예제 목록들
1. Setting effects with ActionScript in Flex
2. Image Manipulation in Flex
3. Rounding the corners of an Image control in Flex using a mask
http://blog.flexexamples.com/2008/09/09/rounding-the-corners-of-an-image-control-in-flex-using-a-mask/#more-792
4. Setting a complete effect on an Image control in Flex
http://blog.flexexamples.com/2008/06/29/setting-a-complete-effect-on-an-image-control-in-flex/#more-689
5. Preventing an image from automatically loading in an Image control in Flex
http://blog.flexexamples.com/2008/06/29/preventing-an-image-from-automatically-loading-in-an-image-control-in-flex/#more-688
6. Maintaining an image’s aspect ratio on an Image control in Flex
http://blog.flexexamples.com/2008/06/28/maintaining-an-images-aspect-ratio-on-an-image-control-in-flex/#more-687
7. Displaying a hand cursor when mousing over a Flex control
http://blog.flexexamples.com/2007/11/18/displaying-a-hand-cursor-when-mousing-over-a-flex-control/
8. Detecting whether an image loaded successfully in Flex
http://blog.flexexamples.com/2007/11/04/detecting-whether-an-image-loaded-successfully-in-flex/
9. Using the Image control as a pop up
http://blog.flexexamples.com/2007/10/18/using-the-image-control-as-a-pop-up/
10. Flex Quick Starts: Building a simple user interface
http://www.adobe.com/devnet/flex/quickstart/adding_effects/
11. Creating a simple image gallery with the Flex TileList control
http://blog.flexexamples.com/2008/03/08/creating-a-simple-image-gallery-with-the-flex-tilelist-control/
12. Image control -- Flex 2.01
http://livedocs.adobe.com/flex/201/html/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Book_Parts&file=controls_059_18.html
13. Skewing an Image control in Flex
14. Disabling container layout for effects
http://livedocs.adobe.com/flex/201/html/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Book_Parts&file=behaviors_068_29.html
15. Image Gallery Component - ImageRail
http://www.flexer.info/2008/05/29/image-gallery-component-imagerail/
16. ImageRail - Adding Click Event, Styles And HandCursor
http://www.flexer.info/2008/06/05/imagerail-adding-click-event-styles-and-handcursor/
17. Tips:three ways to load an image file in Flex
http://ntt.cc/2008/03/09/tips-three-ways-to-load-an-image-file-in-flex.html
18. Using the AnimateProperty effect
Flex 프로젝트명 : AnimateProperty.mxml
19. Flex CoverFlow performance improvement, Flex Carousel Component, and Vertical CoverFlow
20. 이미지 팁(flash & silverlight)
http://www.shinedraw.com/
21. Creating a simple image gallery with the Flex HorizontalList control (redux)
22. 여러가지 예제
http://blog.naver.com/rubberdam?Redirect=Log&logNo=120052663108
23. Flex Roll Over Image with link Component
24. Adding time delay to mouse over events
25. Posts Tagged ‘scroll image flex’
http://www.infuy.com/blogs/alex/?tag=scroll-image-flex
26. Mouseover and Mouseout example
27. CursorManager - Change Mouse Cursor
28. Free ImageZoomer Flex Component!
31. Roll Over Image/Button Examples
카테고리 없음 2009. 2. 11. 16:35

COLLECTION_CHANGE 이벤트를 통한 DATAGRID안의 체크박스 RENDERER 제어


아래내용은 두개의 데이타 그리를 가지고 한쪽에 체크박에서 데이타를 선택시 다른쪽에 선택한 아이템을 넣기위해
사용된 방법중 COLLECTION_CHANGE   이벤트를 이용하였다.


    [Bindable] private var databases1:ArrayCollection;
    [Bindable] private var databases2:ArrayCollection;
 

databases2.addEventListener(CollectionEvent.COLLECTION_CHANGE, handleDataProviderChange);


private function handleDataProviderChange(event:CollectionEvent):void
            {
                var selIdx:int = dgList2.selectedIndex;
               
                for(var i:int=0; i<databases1.length; i++)
                {
                 if(databases1[i].HAKKWACD == databases2[selIdx].DEPT)
                 {
                  databases1.removeItemAt(i);
                  return;
                 }
                }
                  databases1.addItem
                  (
                   {HAKKWACD : databases2[selIdx].DEPT, HAKKWANM : databases2[selIdx].DEPT_KOR_NM}
                  );
            }