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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> BindingSource как установить фильтр на дату 
V
    Опции темы
RastaDja
Дата 22.2.2011, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Доброго времени суток!!!
Помогите разобратся в фильтре, так, как я впервые с этим делом столкнулся, а надо срочно сделать.

Есть BindingSource bind, привязан к DataTable dTbl. В DataTable есть поле Date (поле формата DataTime) и есть календарь dateTimePicker1;
Код

public DataTable dTbl  = new DataTable("Samples");;
BindingSource bind = new BindingSource();
bind.DataSource = dTbl;
//....
dTbl.Columns.Add("Date", typeof(DateTime));


Пишу такой код
Код

string str = dateTimePicker1.Value.ToString();
string strFilter = "Date = '" + str + "'";
bind.Filter = strFilter;


но он не работает, так, как имеет формат "дд.мм.рррр чч:мм:сс".
как мне задать фильтр, чтоб он сортировал по дням, и не учитывал время?

Спассибо! Очень надеюсь на помощь!


--------------------
The more closely you look at one thing, the less closely can you see something else.
PM MAIL   Вверх
RastaDja
Дата 22.2.2011, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Помогите!!! 


--------------------
The more closely you look at one thing, the less closely can you see something else.
PM MAIL   Вверх
diadiavova
Дата 22.2.2011, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

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





--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
RastaDja
Дата 24.2.2011, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



diadiavova, там скорее всего не то, ведь я хочу сделать что то приблизительно такое:

bind.Filter = "Date >= 23.23.1990 00:00:00 and Date >= 23.23.1990 23:55:55";

а вот как это сделать?

Добавлено через 24 секунды
или может есть другой вариант?


--------------------
The more closely you look at one thing, the less closely can you see something else.
PM MAIL   Вверх
MasterOfCode
Дата 24.2.2011, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


elwin
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 24.4.2008
Где: World.Russia.Tyum en

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



RastaDja, Составляй дату самостоятельно, если мне не изменяет память, то так:
Код

string s = dateTimePicker1.Value.Year.ToString() + ":" + dateTimePicker1.Value.Month.ToString() + ":" + dateTimePicker1.Value.Day.ToString();

Но лучше все таки вникнуть в то, что написал вам diadiavova.

Это сообщение отредактировал(а) MasterOfCode - 24.2.2011, 09:49


--------------------
user posted image
PM ICQ   Вверх
diadiavova
Дата 24.2.2011, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

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



Цитата(RastaDja @  24.2.2011,  09:39 Найти цитируемый пост)
 там скорее всего не то, ведь я хочу сделать что то приблизительно такое:

Там описано как отформатировать дату с помощью метода ToString. Текст фильтра естественно надо составлять самому, хотя для наглядности лучше воспользоваться методом String.Format() вместо конкатенации.
Что касается самого форматирования даты, то там описано все довольно подробно и я не вижу смысла повторяться. Еще загляни сюда 
http://msdn.microsoft.com/ru-ru/library/sy...expression.aspx
поскольку, судя по всему ты не вполне понимаешь, как формируется строка фильтра.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
RastaDja
Дата 24.2.2011, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(diadiavova @  24.2.2011,  11:04 Найти цитируемый пост)
поскольку, судя по всему ты не вполне понимаешь, как формируется строка фильтра. 


Вы правы, сейчас посмотрю  smile 


--------------------
The more closely you look at one thing, the less closely can you see something else.
PM MAIL   Вверх
RastaDja
Дата 24.2.2011, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



diadiavova,  &  MasterOfCode, 

послушал вашего совета, написал:
Код

string strFilter = "[Date] >= #" + dateTimePicker1.Value.Year.ToString() + "." +    dateTimePicker1.Value.Month.ToString() + "." + dateTimePicker1.Value.Day.ToString() + " 0:00:00#";


не робит!!!

Что за ...

Прошу дайте рабочий пример, который бы сравнил дату dateTimePicker с датой из DataTable, не учитывая времени!


--------------------
The more closely you look at one thing, the less closely can you see something else.
PM MAIL   Вверх
diadiavova
Дата 24.2.2011, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

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



Цитата(RastaDja @  24.2.2011,  16:24 Найти цитируемый пост)
послушал вашего совета, написал:

Я ничего подобного не советовал smile 
Код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DateFilter
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(
                GetMiddleDateInterval("Date", DateTime.Now.AddYears(-1), DateTime.Now));
            Console.ReadKey();
        }

        static string GetMiddleDateInterval(string collumnName,DateTime startDate, DateTime EndDate)
        {
            var сulture = System.Globalization.CultureInfo.InvariantCulture;
            var startDateStr = startDate.ToString("d", culture);
            var endDateStr = EndDate.ToString("d", culture);
            return string.Format("{0} >= #{1}# AND {0} <= #{2}#", 
                collumnName, startDateStr,endDateStr);
        }
    }
}



Так же строку даты можно отформатировать без использования форматпровайдера. Например: если ты напишешь вот так
Код

DateTime.Now.ToString(@"#d\/M\/yyyy#")

То получишь как раз такое форматирование даты, которое можно напрямую вставлять в строку фильтра. Таким образом можно получить нужную строку вообще сразу, только использовао String.Format
Код

var filterString = string.Format(@"Date >= {0:#d\/M\/yyyy#} AND Date <= {1:#d\/M\/yyyy#}",
                          startDate, endDate);


Это сообщение отредактировал(а) diadiavova - 25.2.2011, 01:33


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
RastaDja
Дата 25.2.2011, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



diadiavova, спассибо, то что нужно


--------------------
The more closely you look at one thing, the less closely can you see something else.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


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

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


 




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


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

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