MS-Chart Demo
# 3) .Net ( Vs 2008 )/C#2010. 11. 5. 20:33
훈스 닷넷에 올라온 챠트관련 질문에 답글을 달았다.
챠트 구현보다 설치하는 시간이 더 걸린...
나름 단순하면서 깔끔해보인다.
챠트 설치 파일 검색에서 챠트를 잘 정리해둔 블로그가 있어서
챠트설치파일 링크만 써봤음...
http://six605.tistory.com/431?srchid=BR1http%3A%2F%2Fsix605.tistory.com%2F431
완성된 챠트입니다.
아래 보시면 LINQ를 이용해서 새로운 테이블을 만든것을 볼수 있는데요
[YM] , [CNT1], [CNT2]
[년도] [홍 ] [이 ]
위같은 형태로 바꾸었습니다. 이쿼리는 원래 DB에서 하시는게 더 쉽게 만들수 있고요.
보시다싶이 씨리즈에 Y 멤버로 Cnt1, Cnt2로 각각 부여하면 챠트는 알아서 그려줍니다.
나머지 꾸미는 건 찾아보시면서 하시면 되겠네요 ^^;
아참 챠트가 Bar(Column) 형태인데요. 이건 챠트 타입을 바꿔주시면 됩니다.
수고하세요.
== 이하 소스입니다. ==
public Form1()
{
InitializeComponent();
DataTable dt = new DataTable();
dt.Columns.Add("YM");
dt.Columns.Add("ID");
dt.Columns.Add("CNT", typeof( double ));
dt.Rows.Add("2010-10", "홍", 4d);
dt.Rows.Add("2010-10", "홍", 3d);
dt.Rows.Add("2010-10", "이", 1d);
dt.Rows.Add("2010-09", "홍", 2d);
dt.Rows.Add("2010-09", "이", 5d);
var tmp2 = from k in dt.AsEnumerable()
group k by k.Field<string>("YM") into t
select new
{
Key = t.Key,
CNT1 = (from h in t
where h.Field<string>("ID") == "홍"
select Convert.ToDouble(h.Field<object>("CNT"))).Sum(),
CNT2 = (from h in t
where h.Field<string>("ID") == "이"
select Convert.ToDouble(h.Field<object>("CNT"))).Sum()
};
DataTable source = new DataTable();
source.Columns.Add("YM");
source.Columns.Add("CNT1");
source.Columns.Add("CNT2");
foreach (var item in tmp2)
{
source.Rows.Add(item.Key, item.CNT1, item.CNT2);
}
chart1.Series.Clear();
var tt = dt.AsEnumerable().Select(title => title.Field<string>("ID")).Distinct<string>();
foreach (var item in tt)
{
chart1.Series.Add(item);
}
chart1.DataSource = source;
chart1.ChartAreas[0].AxisX.Title = "년도";
int cnt = 1;
foreach (var item in chart1.Series)
{
item.AxisLabel = "접속 카운트";
item.XValueMember = "YM";
item.YValueMembers = "CNT" + cnt.ToString();
cnt++;
}
}
챠트 구현보다 설치하는 시간이 더 걸린...
나름 단순하면서 깔끔해보인다.
챠트 설치 파일 검색에서 챠트를 잘 정리해둔 블로그가 있어서
챠트설치파일 링크만 써봤음...
http://six605.tistory.com/431?srchid=BR1http%3A%2F%2Fsix605.tistory.com%2F431
완성된 챠트입니다.
아래 보시면 LINQ를 이용해서 새로운 테이블을 만든것을 볼수 있는데요
[YM] , [CNT1], [CNT2]
[년도] [홍 ] [이 ]
위같은 형태로 바꾸었습니다. 이쿼리는 원래 DB에서 하시는게 더 쉽게 만들수 있고요.
보시다싶이 씨리즈에 Y 멤버로 Cnt1, Cnt2로 각각 부여하면 챠트는 알아서 그려줍니다.
나머지 꾸미는 건 찾아보시면서 하시면 되겠네요 ^^;
아참 챠트가 Bar(Column) 형태인데요. 이건 챠트 타입을 바꿔주시면 됩니다.
수고하세요.
== 이하 소스입니다. ==
public Form1()
{
InitializeComponent();
DataTable dt = new DataTable();
dt.Columns.Add("YM");
dt.Columns.Add("ID");
dt.Columns.Add("CNT", typeof( double ));
dt.Rows.Add("2010-10", "홍", 4d);
dt.Rows.Add("2010-10", "홍", 3d);
dt.Rows.Add("2010-10", "이", 1d);
dt.Rows.Add("2010-09", "홍", 2d);
dt.Rows.Add("2010-09", "이", 5d);
var tmp2 = from k in dt.AsEnumerable()
group k by k.Field<string>("YM") into t
select new
{
Key = t.Key,
CNT1 = (from h in t
where h.Field<string>("ID") == "홍"
select Convert.ToDouble(h.Field<object>("CNT"))).Sum(),
CNT2 = (from h in t
where h.Field<string>("ID") == "이"
select Convert.ToDouble(h.Field<object>("CNT"))).Sum()
};
DataTable source = new DataTable();
source.Columns.Add("YM");
source.Columns.Add("CNT1");
source.Columns.Add("CNT2");
foreach (var item in tmp2)
{
source.Rows.Add(item.Key, item.CNT1, item.CNT2);
}
chart1.Series.Clear();
var tt = dt.AsEnumerable().Select(title => title.Field<string>("ID")).Distinct<string>();
foreach (var item in tt)
{
chart1.Series.Add(item);
}
chart1.DataSource = source;
chart1.ChartAreas[0].AxisX.Title = "년도";
int cnt = 1;
foreach (var item in chart1.Series)
{
item.AxisLabel = "접속 카운트";
item.XValueMember = "YM";
item.YValueMembers = "CNT" + cnt.ToString();
cnt++;
}
}
'# 3) .Net ( Vs 2008 ) > C#' 카테고리의 다른 글
노트북 셋팅.. (0) | 2011.08.02 |
---|---|
[LINQ] group by 여러조건 넣기. (0) | 2010.11.08 |
포스트 잇 처럼 메모하는 레이아웃!! (0) | 2010.09.30 |
Ms Access 사용하기 예제소스. (0) | 2010.08.11 |
WebClient와 WebBrowser의 차이는?? (3) | 2010.07.30 |
[오라클] 동적쿼리
# 7) 데이타베이스/오라클2010. 10. 24. 02:08
'select 1 from dual'
위처럼 문자열로 쿼리를 조합하여 문장을 만들어서 쿼리 할때가 있다.
오라클에서는
begin
open :vcr for 'select 1 from dual';
end;
이러면 쉽게 가능하다.
'# 7) 데이타베이스 > 오라클' 카테고리의 다른 글
달력2 (0) | 2019.11.03 |
---|---|
달력 1 (0) | 2019.11.03 |
[오라클] 패키지 만드는 구문.. (0) | 2010.10.23 |
[토드9.5] 쿼리 테스트 할때 구문 작성법... (0) | 2010.10.23 |
[오라클] 오브젝트 이름의 길이는 30 문자 이하로 제한됩니다 (0) | 2010.10.23 |
[MS-SQL] 누적 계산에 사용한 쿼리...
# 7) 데이타베이스/Ms-Sql2010. 10. 23. 22:31
오라클에서 했던걸 MS로 바꿔보았다
쿼리야 오라클이나 MS나...
누적이라서 ^^ 이정도면 뭐...
SELECT YEAR0_SUMAMT ,
(
SELECT SUM( YEAR0_SUMAMT )
FROM PLAN_RESULTS
WHERE YYYYMM <= A.YYYYMM
AND GIGUM_CODE = A.GIGUM_CODE
) YEAR0SUM
FROM PLAN_RESULTS A
'# 7) 데이타베이스 > Ms-Sql' 카테고리의 다른 글
[MS-SQL]쿼리에 대한 성능 비교 해보기.. (0) | 2010.11.05 |
---|---|
[MS- SQL] 한방에 두개의 범위 데이타 그룹바이 걸기 (0) | 2010.11.05 |
[MS-SQL] SELECT 쿼리.. (0) | 2010.10.23 |
[ MS-SQL ] 간단한 쿼리인데 3개의 Row에 대해 계산해서 한행 추가 (0) | 2010.10.23 |
[MS-SQL] 피벗 .. (0) | 2010.08.24 |