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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> dataGridView и Datatime, поиск по дате 
:(
    Опции темы
CORPORAL
Дата 8.8.2010, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Есть табличка dataGridView1 и есть колонка с датой (формат  DateTime ) Как правильно сделать поиск по дате?
Код

string Date ="2000";
((DataView)dataGridView1.DataSource).RowFilter = (" Дата  LIKE '%"+ Date +"%')";

Пишет "Невозможно выполнить операцию 'Like' над System.DateTime и System.String"
PM MAIL   Вверх
mrbrooks
Дата 9.8.2010, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

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



оператор LIKE он как бэ для строк. DataTime ни разу не строка.
Вообще то поиск организован даже не сколько по дате, сколько по ее куску - как я понимаю по году. 

Код

int year = 2000;
var result = from item in ((DataTable)dataGridView1.DataSource).AsEnumerable()
                   where item<DateTime>("имя_поля").Year == year
                   select item;
dataGridView1.DataSource = result.CopyToDataTable();

PM MAIL   Вверх
CORPORAL
Дата 9.8.2010, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Спасибо mrbrooks
Что-то не совсем C#.  Как это в шарп переделать?  Мне надо в обработчик 
Код

 private void TextBox_TextChanged(object sender, EventArgs e)
        {
            //должен быть код поиска по дате, конкретно по году
        }

 Когда я написал в текстБокс "2" - в гриде вывело все данные начинающие с 2000 года, потом... "201" - с 2010 года и так до полного ввода года целиком. 
Можете помочь?
PM MAIL   Вверх
mrbrooks
Дата 10.8.2010, 07:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

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



Цитата(CORPORAL @  9.8.2010,  19:36 Найти цитируемый пост)
Что-то не совсем C#.  Как это в шарп переделать?

хм. ит из Linq. Ничего переделывать не надо
PM MAIL   Вверх
KelTron
Дата 10.8.2010, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



По моему в 3 строке должно быть так:
Код

where item.Field<DateTime>("имя_поля").Year == year



--------------------
Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог.
Эвенгар Салладорский, основатель Школы Тьмы.
PM MAIL   Вверх
mrbrooks
Дата 10.8.2010, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

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



Цитата(KelTron @  10.8.2010,  10:26 Найти цитируемый пост)
По моему в 3 строке должно быть так:

все верно. мой косяк - писал от руки на вскидку.

Код

int year = 2000;
var result = from item in ((DataTable)dataGridView1.DataSource).AsEnumerable()
                   where item.Field<DateTime>("имя_поля").Year == year
                   select item;
dataGridView1.DataSource = result.CopyToDataTable();

PM MAIL   Вверх
CORPORAL
Дата 11.8.2010, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Всеравно что-то не так... Компилируется но когда ввожу дату то вылетает исключение
 
Цитата

Не удалось привести тип объекта "System.Data.DataView" к типу "System.Data.DataTable"


Код

  private void F_Vozrast_TextChanged(object sender, EventArgs e)
        {
            if (F_Vozrast.TextLength == 4)
            {
                var result = from item in ((DataTable)dataGridView1.DataSource).AsEnumerable()
                             where item.Field<DateTime>("Дата").Year == Convert.ToInt32(F_Vozrast.Text)
                             select item;
                dataGridView1.DataSource = result.CopyToDataTable();
            }
        }

PM MAIL   Вверх
CORPORAL
Дата 12.8.2010, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Люди, ну помогите реализовать поиск по дате! Пожалуйста.  smile 
PM MAIL   Вверх
CORPORAL
Дата 12.8.2010, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Всем спасибо, уже не надо :(
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

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

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

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


 




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


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

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