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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Неточный поиск в dataGridView 
:(
    Опции темы
okaton
Дата 10.12.2008, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Здравствуйте smile Сабж. Простите за тупой вопрос, а как можно выполнить неточный поиск данных в dataGridView из textbox который находится вне dataGridView ?
PM MAIL   Вверх
MasterOfCode
Дата 10.12.2008, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


elwin
**


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

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



Посмотри на первую ссылку в блоке: А здесь смотрели?, который под этой темой.


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


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 2.11.2007
Где: Москва - Знаменск (Капустин Яр)

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



ссылочка на топик с примерами, первый пост можешь не читать. а дальше идет то, что тебе надо.
,http://forum.vingrad.ru/forum/topic-239235...dgv-dbnull.html
--------------------
"Если бы Шекспир был программистом, то фразу "To be or not to be" он написал бы так: 2b | ! 2b."
PM MAIL ICQ Skype GTalk Jabber   Вверх
okaton
Дата 10.12.2008, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Unlocker, спасибо большое, нечто подобное я уже видел, только я не понял как этим пользоваться...
куда это прилаживать в textBoxе и как это связывается с dataGridView?

MasterOfCode  smile а как вы думаете? 5 баллов  smile  хотите плюсик поставлю в категории "рассмешили"? А по существу, я не решился поднимать решенную полугодичную тему smile 


Это сообщение отредактировал(а) okaton - 10.12.2008, 23:20
PM MAIL   Вверх
Unlocker
Дата 11.12.2008, 01:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 2.11.2007
Где: Москва - Знаменск (Капустин Яр)

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



попробую пояснить попроще.
Код

            StringBuilder baseFilter = new StringBuilder();
            //критерий поиска берем из TextBox'a
            baseFilter.Append("Name LIKE '%"+txtName.Text+"%'");
            //привязка фильтра DataTable.Select() к DataridView
            dgvBooks.DataSource = dsBooks.Books.Select(baseFilter.ToString());


--------------------
"Если бы Шекспир был программистом, то фразу "To be or not to be" он написал бы так: 2b | ! 2b."
PM MAIL ICQ Skype GTalk Jabber   Вверх
okaton
Дата 11.12.2008, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Unlocker, спасибо, простите мой кретинизм, возникли вопросы


baseFilter.Append("Name LIKE '%"+txtName.Text+"%'");
Name это имя колонки? Как построить синтаксис поиска во всех колонках? Что такое %? Чем характеризуется точный и не точный поиск?

dsBooks.Books - я правильно понял что dsBooks объект типа DataTable ? Что тогда такое Books?
PM MAIL   Вверх
MasterOfCode
Дата 11.12.2008, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


elwin
**


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

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



Цитата(okaton @  11.12.2008,  16:15 Найти цитируемый пост)
Name это имя колонки? 

да
Цитата(okaton @  11.12.2008,  16:15 Найти цитируемый пост)
Как построить синтаксис поиска во всех колонках?

baseFilter.Append("[Name] LIKE '%"+txtName.Text+"%' and [name2] LIKE '%"+txtName2.Text+"%'"); // и так далее
Цитата(okaton @  11.12.2008,  16:15 Найти цитируемый пост)
Что такое %?

% означает что он будет искать вхождения слова с той стороны с которой стоит процент. например:
если ты задал такой параметр поиска = name like '%мир' , то слова 'привет мир', 'мир', 'Эльмир' подпадут под фильтр и отобразяться, а если процент уберешь (name like 'мир' ), то  подподет только 'мир'.
Цитата(okaton @  11.12.2008,  16:15 Найти цитируемый пост)
Чем характеризуется точный и не точный поиск?

точный это когда ты используешь операнды =, <>, >, <, неточный это когда ищешь включения. (см.выше)
Цитата(okaton @  11.12.2008,  01:02 Найти цитируемый пост)
MasterOfCode  smile а как вы думаете? 5 баллов  smile  хотите плюсик поставлю в категории "рассмешили"?

мне на эти плюсики фиолетово  smile 
Цитата(okaton @  11.12.2008,  01:02 Найти цитируемый пост)
А по существу, я не решился поднимать решенную полугодичную тему

нарушаем правила форума)


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


Бывалый
*


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

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



MasterOfCode, спасибо за ответ smile
а по поводу "привязка фильтра DataTable.Select() к DataridView" не подскажите?

Это сообщение отредактировал(а) okaton - 11.12.2008, 16:16
PM MAIL   Вверх
okaton
Дата 11.12.2008, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Непонятность такая

Код

private void toolStripButton7_Click(object sender, EventArgs e)
        {
            StringBuilder baseFilter = new StringBuilder();
            //критерий поиска берем из TextBox'a            
            baseFilter.Append("[Column01_FactoryID] LIKE '%" + toolStripTextBox1.Text + "%' and [Column02_IDComplete] LIKE '%" + toolStripTextBox1.Text + "%'");
            //привязка фильтра DataTable.Select() к DataridView
            dataGridView1.DataSource = table1.Select(baseFilter.ToString());           
        }


После клика по кнопке в DataViewGrid исчезают мои колонки и возникают: RowError (пустая), RowState (колонка заполнена словом Added), Table (пустая), HasErrors (заполнена чекбоксами) - порядка 50 строк

Подскажите пожалуйста, в каком месте ДНК у меня ошибка.
PM MAIL   Вверх
MasterOfCode
Дата 11.12.2008, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


elwin
**


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

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



Посмотри тут. Я всегда так делал. 


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


Бывалый
*


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

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



Код

        DataTable dt;
        DataView dv;
        private void toolStripButton7_Click(object sender, EventArgs e)
        {
            dt = table1;
            dv = dt.DefaultView;
            string filter;
            filter = "[Column01_FactoryID] LIKE '%" + toolStripTextBox1.Text + "%' 
                         and [Column02_IDComplete] LIKE '%" + toolStripTextBox1.Text + "%'";
            dv.RowFilter = filter;
            dataGridView1.DataSource = dv;
        }


вроде так, но при этом переименовываются имена колонок, можно как-либо выйти из этого положения?
и еще вывести список всех найденых значений, а то как то бестолково получается

тут явно что-то не то... smile 

Это сообщение отредактировал(а) okaton - 11.12.2008, 20:35
PM MAIL   Вверх
Unlocker
Дата 11.12.2008, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 2.11.2007
Где: Москва - Знаменск (Капустин Яр)

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



Я смотрю, что тема начала активно обсуждаться - вот бы мою недавнюю тему бы так обсуждать начали))).
Поясню свой код
Код

            StringBuilder baseFilter = new StringBuilder();
            //критерий поиска берем из TextBox'a
            baseFilter.Append("Name LIKE '%"+txtName.Text+"%'");
            //привязка фильтра DataTable.Select() к DataridView
            dgvBooks.DataSource = dsBooks.Books.Select(baseFilter.ToString());

StringBuilder - объект для накопления нескольких критериев поиска. Строка - объект неизменяемый, поэтому к ней переходим только в самый последний момент. Метод StringBuilder.Append() cлужит для добавления новых критериев в запрос.
txtName.Text - свойство Text компонента TextBox txtName.
dgvBooks - DataGridView
dsBooks - типизированный DataSet
Books - DataTable
Этот код из моей курсовой работы с минимальными корректировками, поэтому без преамбулы мог показаться сложным.
А вот насчет использования полнотекстовых поисков в одном запросе по нескольким полям должен признать, что просто через "AND" оно нереализуемо. Я пробовал, у меня не получалось. Тут возможно либо придется самому логику прописывать с использованием регулярных выражений при последовательном просмотре полей, либо делать запрос непосредственно к ядру базы данных (даже не знаю, что лучше).

--------------------
"Если бы Шекспир был программистом, то фразу "To be or not to be" он написал бы так: 2b | ! 2b."
PM MAIL ICQ Skype GTalk Jabber   Вверх
okaton
Дата 11.12.2008, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Объясните пожалуйста этот момент dsBooks.Books

В моем dataSet нет подобного свойства. 

Создаю так dataSet = new DataSet();         
                    dataSet.Tables.Add(table1);

PM MAIL   Вверх
Unlocker
Дата 11.12.2008, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 2.11.2007
Где: Москва - Знаменск (Капустин Яр)

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



DataSet - это мини-СУБД в оперативной памяти. Books - это имя реальной таблицы в БД.
Если его типизировать (вложить в проект схему соответствующих таблиц и связей), то к таблицам БД можно будет обращаться двояко:
1) DataSet.Tables["<имя_таблицы>"] - это случай нетипизированного обращения, работает и в типизированном и нетипизированном DataSet;
2) DataSet.<имя_таблицы> - это случай типизированного обращения. Действует только в типизированных DataSet. После загрузки схемы у объекта появляются свойства - ссылки на соответствующие таблицы.
--------------------
"Если бы Шекспир был программистом, то фразу "To be or not to be" он написал бы так: 2b | ! 2b."
PM MAIL ICQ Skype GTalk Jabber   Вверх
okaton
Дата 11.12.2008, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Unlocker, видимо у меня случай нетипизированного DataSet

Подкорректировал код
Код

StringBuilder baseFilter = new StringBuilder();            
baseFilter.Append("[Column01_FactoryID] LIKE '%" + toolStripTextBox1.Text + "%' 
                 and [Column02_IDComplete] LIKE '%" + toolStripTextBox1.Text + "%'");
dataGridView1.DataSource = dataSet.Tables["ParentTable"].Select(baseFilter.ToString());

История повторяется. После клика по кнопке в DataViewGrid исчезают мои колонки и возникают: RowError (пустая), RowState (колонка заполнена словом Added), Table (пустая), HasErrors (заполнена чекбоксами). Это что такое и почему так происходит?

З.Ы. Если не затруднит ответить, подскажите, а как типизировать DataSet?
З.З.Ы. я вам в вашей теме ответил

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

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

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

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


 




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


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

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