Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как сделать правильно Sort? 
:(
    Опции темы
Sharki
Дата 29.1.2009, 05:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 134
Регистрация: 15.1.2005

Репутация: нет
Всего: нет



Здрасте всем.Подскажите как сделать такую выборку(сортировку).Есть таблица "TBL_ClientWork" в кот.заносятся все сделанные работы.Так вот надо сделать выборку ,например какие клиенты не обслуживались последние 3 или 6 месяцев или 1 год(с момента сегодняшней даты).В таблице есть колонка "LastActivDate" в ней значения ShortDateString(вот так:1/28/2009).
Зарание спасибо.
PM MAIL   Вверх
Partizan
Дата 29.1.2009, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 67



Sharki, SELECT * FROM TBL_... ORDER BY LastActivDate ASC


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Sharki
Дата 29.1.2009, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 134
Регистрация: 15.1.2005

Репутация: нет
Всего: нет



Спасибо большое.
 SELECT * FROM TBL_... ORDER BY LastActivDate ASC а дальше что ???
Например у меня есть три radioButton(3 месяца,6 и год).И как мне продолжить это выражение.Подскажите плизззз.Большое спасибо.

Это сообщение отредактировал(а) Sharki - 29.1.2009, 10:39
PM MAIL   Вверх
Partizan
Дата 29.1.2009, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 67



Sharki, это в раздел по SQL надо было на самом деле постить


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Sharki
Дата 29.1.2009, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 134
Регистрация: 15.1.2005

Репутация: нет
Всего: нет



ok,spasibo,poprobuyu i tuda.
PM MAIL   Вверх
Doss
Дата 31.1.2009, 08:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 5.10.2007

Репутация: нет
Всего: нет



Поразмысли над этим примерм, но тут я создаю таблицу от руки, так как некоторые параметры нужны по названиям а не по идентифакторам,  и кстати, этот метод проверяет на срок сегоднешнего дня, т.е. если документ просрочен (срок исполнения задается изначально) список документов вывдитя...
Можно додумать под твою и все

Код

  //Проверка на срок
        private void ProverkaNaSrok()
        {

            //===========================================================
            #region Таблица
            DataTable newTable = new DataTable("SrocConec");

            DataColumn myDateColumn;
            myDateColumn = new DataColumn();
            myDateColumn.DataType = Type.GetType("System.Int32");
            myDateColumn.ColumnName = "id_Key";
            myDateColumn.ReadOnly = true;
            myDateColumn.AllowDBNull = false;
            myDateColumn.Unique = true;

            myDateColumn.AutoIncrement = true;
            myDateColumn.AutoIncrementSeed = 1000;
            myDateColumn.AutoIncrementStep = 1;
            //myTable.Columns.Add(myDateColumn );

            myDateColumn = new DataColumn();
            myDateColumn.DataType = Type.GetType("System.String");
            myDateColumn.ColumnName = "id";
            newTable.Columns.Add(myDateColumn);

            myDateColumn = new DataColumn();
            myDateColumn.DataType = Type.GetType("System.String");
            myDateColumn.ColumnName = "PunctProtocola";
            newTable.Columns.Add(myDateColumn);

            myDateColumn = new DataColumn();
            myDateColumn.DataType = Type.GetType("System.String");
            myDateColumn.ColumnName = "Soderganiye";
            newTable.Columns.Add(myDateColumn);

            myDateColumn = new DataColumn();
            myDateColumn.DataType = Type.GetType("System.String");
            myDateColumn.ColumnName = "SrocIspolneniya";
            newTable.Columns.Add(myDateColumn);

            myDateColumn = new DataColumn();
            myDateColumn.DataType = Type.GetType("System.String");
            myDateColumn.ColumnName = "HodIspolneniya";
            newTable.Columns.Add(myDateColumn);

            myDateColumn = new DataColumn();
            myDateColumn.DataType = Type.GetType("System.String");
            myDateColumn.ColumnName = "Primechanie";
            newTable.Columns.Add(myDateColumn);

            myDateColumn = new DataColumn();
            myDateColumn.DataType = Type.GetType("System.String");
            myDateColumn.ColumnName = "VidRezoluciy";
            newTable.Columns.Add(myDateColumn);

            myDateColumn = new DataColumn();
            myDateColumn.DataType = Type.GetType("System.String");
            myDateColumn.ColumnName = "Ispolnitel";
            newTable.Columns.Add(myDateColumn);

            myDateColumn = new DataColumn();
            myDateColumn.DataType = Type.GetType("System.String");
            myDateColumn.ColumnName = "Podrazdeleie";
            newTable.Columns.Add(myDateColumn);

            myDateColumn = new DataColumn();
            myDateColumn.DataType = Type.GetType("System.String");
            myDateColumn.ColumnName = "Status";
            newTable.Columns.Add(myDateColumn);

            myDateColumn = new DataColumn();
            myDateColumn.DataType = Type.GetType("System.String");
            myDateColumn.ColumnName = "id_Protocol";
            newTable.Columns.Add(myDateColumn);


            DataColumn[] pk = new DataColumn[1];
            pk[0] = newTable.Columns["id"];
            newTable.PrimaryKey = pk;

            #endregion
            //==========================================================

            using (OleDbConnection conn = new OleDbConnection(connProtocolsTable))
            {
                try
                {

                    conn.Open();
                    selCommand = new OleDbCommand(connStringPunctOne, conn);
                    selCommand.CommandType = CommandType.Text;

                    daPunctOne = new OleDbDataAdapter(selCommand);
                    DataSet ds = new DataSet();
                    daPunctOne.Fill(ds, "PunctOne");
                    //-------------------------------------------------------
                    try
                    {
                        DateTime nowDate = DateTime.Now.Date;

                        int kol=0;

                        bool flag = false;

                        //-----------------------------------------------------------
                        foreach (DataRow empRow in ds.Tables["PunctOne"].Rows)
                        {
                            if ((empRow.IsNull("SrocIspolneniya")) || empRow["Status"].ToString() == "1" || empRow["Status"].ToString() == "2")
                            {
                                continue;
                            }
                            else
                            {
                                DateTime empBirthDay = (DateTime)empRow["SrocIspolneniya"];

                                bool isBirthDay = false;

                                if (empBirthDay.Year < nowDate.Year)
                                {
                                    isBirthDay = true;

                                }
                                if (empBirthDay.Year == nowDate.Year)
                                {
                                    if ((empBirthDay.Month == nowDate.Month) && (empBirthDay.Day == nowDate.Day) || (empBirthDay.Month == nowDate.Month) && (empBirthDay.Day < nowDate.Day) || (empBirthDay.Month < nowDate.Month) && (empBirthDay.Day < nowDate.Day) || (empBirthDay.Month < nowDate.Month) && (empBirthDay.Day > nowDate.Day))
                                    {
                                        isBirthDay = true;

                                    }
                                }
                                if (empBirthDay.Year > nowDate.Year)
                                {
                                    isBirthDay = false;
                                }

                                if (isBirthDay)
                                {

                                    DataRow newRow = newTable.NewRow();
                                    newRow["id"] = empRow["id"].ToString();
                                    newRow["PunctProtocola"] = empRow["PunctProtocola"].ToString();
                                    newRow["Soderganiye"] = empRow["Soderganiye"].ToString();
                                    newRow["SrocIspolneniya"] = empRow["SrocIspolneniya"].ToString();
                                    newRow["HodIspolneniya"] = empRow["HodIspolneniya"].ToString();
                                    newRow["Primechanie"] = empRow["Primechanie"].ToString();
                                    newRow["VidRezoluciy"] = empRow["VidRezoluciy"].ToString();
                                    newRow["Ispolnitel"] = empRow["Ispolnitel"].ToString();
                                    newRow["Podrazdeleie"] = empRow["Podrazdeleie"].ToString();
                                    newRow["Status"] = empRow["Status"].ToString();
                                    newRow["id_Protocol"] = empRow["id_Protocol"].ToString();

                                    newTable.Rows.Add(newRow);

                                    kol+=1;
                                    flag = true;

                                }
                            }
                        }
                        //-----------------------------------------------------------
                        if (flag)
                        {
                            DataView dvPunctOne = new DataView(newTable);
                            dvPunctOne.Sort = "PunctProtocola asc";

                            dgvSrocPunktOne.DataSource = dvPunctOne;
                            lblPunctOneKol.Text = Convert.ToString(kol);
                            ObshKolDocSroc += kol;

                        }
                       
                        //------------------------------------------------------------
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message, ex.Source);
                    }
                    //-------------------------------------------------------------------

                    conn.Close();
                }
                catch (SqlException ex)
                {
                    MessageBox.Show(ex.Message, ex.Source);
                    conn.Close();
                }
            }

        }
        //-----------------------------------------



Также  можно вычислять дни просрочки к примеру с помощью этого метода

В этом методе нужно подать ту дату, которую имеем в базе и получаем разничу со ссегоднешним днем, если к примеру +10 то 10 дней прошло как должен был быть исполнен, если -10 то еще есть 10 дней до исполнения
В общем посмотри, это не совсе то что надо, но с датами примерно вот что сделать, Удачи!!!
Код

  //Вычисление разницу в годах и днях
        internal static int VichislenieDneySroka(DateTime srocDoc)
        {
            //-----------------------------------
            int Reshenie = 0;
            int ZnachenieGoda = 0;
            int ZnachenieMesaca = 0;
            ZnachenieGoda = DateTime.Now.Year.CompareTo(srocDoc.Year);
            ZnachenieMesaca = DateTime.Now.Month.CompareTo(srocDoc.Month);

            //******************************************************************
            //Если года ровны (Документы имеют срок в одном году)
            if (ZnachenieGoda == 0)
            {
                //-----------------------
                if (ZnachenieMesaca == 0)
                {
                    Reshenie = DateTime.Now.Day - srocDoc.Day;
                }
                //-----------------------
                if (ZnachenieMesaca == 1)
                {
                    int mes = 0;
                    mes = DateTime.Now.Month - srocDoc.Month;
                    int kol = 0;
                    for (int i = 0; i <= mes; i++)
                    {
                        kol += DateTime.DaysInMonth(DateTime.Now.Year, srocDoc.Month + i);

                    }
                    int kolDneySroka = 0;
                    kolDneySroka = DateTime.DaysInMonth(DateTime.Now.Year, srocDoc.Month) - srocDoc.Day + DateTime.Now.Day;
                    Reshenie = kol - kolDneySroka;


                }
                //-----------------------
                if (ZnachenieMesaca == -1)
                {
                    int mes = srocDoc.Month - DateTime.Now.Month;
                    int kol = 0;
                    for (int i = 0; i <= mes; i++)
                    {
                        kol += DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month + i);

                    }

                    int kolDneySroka = 0;
                    kolDneySroka = DateTime.DaysInMonth(DateTime.Now.Year, srocDoc.Month) - srocDoc.Day + DateTime.Now.Day;

                    Reshenie = kolDneySroka - kol;


                }
            }
            //******************************************************************
            //Если нынешний год больше
            if (ZnachenieGoda == 1)
            {
                //-------------------------------------
                int kolDneyVGodu = 0;
                for (int i = 0; i < 12; i++)
                {
                    kolDneyVGodu += DateTime.DaysInMonth(DateTime.Now.Year, i + 1);

                }

                int KolDneyPosleDaty = 0;

                int DnyPosleSegodnya = 0;
                DnyPosleSegodnya = DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month) - DateTime.Now.Day;

                for (int i = 0; i < 12 - DateTime.Now.Month; i++)
                {
                    KolDneyPosleDaty += DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month + i + 1);

                }

                int KolDneyMinusDaysVGodu = 0;

                KolDneyMinusDaysVGodu = KolDneyPosleDaty + DnyPosleSegodnya;


                //--------------------------------------
                int kolDneyVGoduSroc = 0;
                for (int i = 0; i < 12; i++)
                {
                    kolDneyVGoduSroc += DateTime.DaysInMonth(srocDoc.Year, i + 1);

                }
                int KolDneyPosleDatySroc = 0;

                for (int i = 0; i < 13 - srocDoc.Month; i++)
                {
                    KolDneyPosleDatySroc += DateTime.DaysInMonth(srocDoc.Year, srocDoc.Month + i);

                }
                int KolDneyMinusDaysVGoduSroc = 0;

                KolDneyMinusDaysVGoduSroc = kolDneyVGoduSroc - KolDneyPosleDatySroc + srocDoc.Day;


                //--------------------------------------

                int raznizaGodov = 0;
                raznizaGodov = DateTime.Now.Year - srocDoc.Year;
                int kolDneyVGoduObsee = 0;

                for (int i = 0; i <= raznizaGodov; i++)
                {
                    for (int j = 0; j < 12; j++)
                    {
                        kolDneyVGoduObsee += DateTime.DaysInMonth(srocDoc.Year + i, j + 1);
                    }
                }

                Reshenie = kolDneyVGoduObsee - (KolDneyMinusDaysVGoduSroc + KolDneyMinusDaysVGodu);

            }
            //******************************************************************
            //Если нынешний год меньше
            if (ZnachenieGoda == -1)
            {
                //-------------------------------------
                int kolDneyVGodu = 0;
                for (int i = 0; i < 12; i++)
                {
                    kolDneyVGodu += DateTime.DaysInMonth(DateTime.Now.Year, i + 1);

                }

                int KolDneyPosleDaty = 0;

                //int DnyPosleSegodnya = 0;
                //DnyPosleSegodnya = DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month) - DateTime.Now.Day;

                for (int i = 0; i < 13 - DateTime.Now.Month; i++)
                {
                    KolDneyPosleDaty += DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month + i);
                }

                int KolDneyMinusDaysVGodu = 0;

                KolDneyMinusDaysVGodu = kolDneyVGodu - (KolDneyPosleDaty - DateTime.Now.Day);



                //--------------------------------------
                int kolDneyVGoduSroc = 0;
                for (int i = 0; i < 12; i++)
                {
                    kolDneyVGoduSroc += DateTime.DaysInMonth(srocDoc.Year, i + 1);

                }
                int KolDneyPosleDatySroc = 0;

                for (int i = 0; i < 13 - srocDoc.Month; i++)
                {
                    KolDneyPosleDatySroc += DateTime.DaysInMonth(srocDoc.Year, srocDoc.Month + i);

                }
                int KolDneyMinusDaysVGoduSroc = 0;

                KolDneyMinusDaysVGoduSroc = KolDneyPosleDatySroc - srocDoc.Day;


                //--------------------------------------

                int raznizaGodov = 0;
                raznizaGodov = srocDoc.Year - DateTime.Now.Year;
                int kolDneyVGoduObsee = 0;

                for (int i = 0; i <= raznizaGodov; i++)
                {
                    for (int j = 0; j < 12; j++)
                    {
                        kolDneyVGoduObsee += DateTime.DaysInMonth(DateTime.Now.Year + i, j + 1);
                    }
                }


                Reshenie = (KolDneyMinusDaysVGoduSroc + KolDneyMinusDaysVGodu) - kolDneyVGoduObsee;
            }
            //******************************************************************
            return Reshenie;

        }
        //-------------------------------------------

PM MAIL   Вверх
emmanuil
Дата 31.1.2009, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 9.1.2007

Репутация: 1
Всего: 3



Если актуально, то так:
Код

declare
  @CurrentDate smalldatetime
set @CurrentDate = getdate() -- либо текущую, либо свою
SELECT * FROM TBL_... where datediff(month, LastActivDate, @CurrentDate) <= @MonthCount ORDER BY LastActivDate ASC


Это сообщение отредактировал(а) emmanuil - 31.1.2009, 21:33
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0507 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.