Datetime에 Null이 제대로 안 들어가다보니 생각 난 꽁수..
그렇다고 매개변수 주고 SQL에 이름넣지 않아도 에러 나고..

날짜 부분 체크 여부에 따라 기존처럼
DAO.MSSQL_Excute_Query(DataControl.GetConnstr(), sql, names)로 처리하려하면
무려 16개의 케이스를 제작해서 작성해야 하지만..

bool[] pass 하나 더 만들어 처리부에 if(!pass[i]) sc.Parameters.AddWithValue(names[i], values[i]); 로 바꿔 버렸다..
16번 노가다 귀찮으니 별 꽁수를 다 부리는 듯..;

그냥 다음에는 DAO.MSSQL_Excute_Query(DataControl.GetConnstr(), sql, names, values);
names,values를 ArratList[]로 처리하고
아래와 같이 ((Bool값)?A:B) 같은 처리로 SQL문 처리한후 command변경후 일괄 한큐 정리 메소드도 만들어 둬야 겠다.

 object[] values = new object[15];
                values[0] = a;
                values[1] = b;
...
values[5] = null;
                if (DELIVERY_DATE_checkBox.Checked)
                {
                    values[5] = DELIVERY_DATE_dateTimePicker.Value;
                }
                values[6] = null;
                if (EXCUTE_DATE_checkBox.Checked)
                {
                    values[6] = EXCUTE_DATE_dateTimePicker.Value;
                }
                values[7] = null;
                if (TASK_START_DATE_checkBox.Checked)
                {
                    values[7] = TASK_START_DATE_dateTimePicker.Value;
                }
                values[8] = null;
                if (TASK_END_DATE_checkBox.Checked)
                {
                    values[8] = TASK_END_DATE_dateTimePicker.Value;
                }
...

string[] names = new string[]
                    {
                        "@A", "@B"...                    };

bool[] pass = new bool[15];
                for (int i = 0; i < 15; i++)
                {
                    if (i < 5)
                    {
                        pass[i] = false;
                    }
                    else if (i > 5)
                    {
                        pass[i] = false;
                    }
                    else
                    {
                        if (i == 5) pass[i] = !DELIVERY_DATE_checkBox.Checked;
                        else if (i == 6) pass[i] = !EXCUTE_DATE_checkBox.Checked;
                        else if (i == 7) pass[i] = !TASK_START_DATE_checkBox.Checked;
                        else if (i == 8) pass[i] = !TASK_END_DATE_checkBox.Checked;
                    }

                }

string sql = "...,"+
                   (DELIVERY_DATE_checkBox.Checked?"DELIVERY_DATE = @DELIVERY_DATE,":"")+
                   (EXCUTE_DATE_checkBox.Checked?"EXCUTE_DATE = @EXCUTE_DATE,":"") +
                   (TASK_START_DATE_checkBox.Checked?"TASK_START_DATE = @TASK_START_DATE,":"")+
                   (TASK_END_DATE_checkBox.Checked?"TASK_END_DATE = @TASK_END_DATE,":"")+
                   "...";

state = DAO.MSSQL_Excute_Query(DataControl.GetConnstr(), sql, names, values,pass);

'공부 > MS' 카테고리의 다른 글

현재 고민중인 페이징 쿼리(추가)  (0) 2011.06.08
프로세스 감시  (3) 2011.06.07
날이 갈수록 늘어나는 잔 머리..;  (0) 2010.03.03
C# 에서 파일을 리소스에 넣어 처리하기.  (0) 2010.02.08
최근 작성한 C#2.0 DAO  (0) 2009.07.20
PC 데이터 단위 변환  (2) 2009.07.18
by Tomoya 2010.03.03 10:53
| 1 2 3 4 5 6 7 8 9 10 11 |