Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 05.05.2019
Сообщений: 49

Вывод нужной информации в DataGridView при поиске

30.05.2019, 14:59. Показов 1464. Ответов 10

Студворк — интернет-сервис помощи студентам
...Пытаюсь реализовать функцию поиска, при которой в DataGridView будут выводиться нужные записи данных. Проблема в том что я не могу понять в чем ошибка так как её нет, а DataGridView не заполняется...

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
 private void DGVPoisk()//Функция вывода в DGV в зависимости от элемента
        {
            string nametip="";
            string Oquery = "";
            string poisk = TBPoisk.Text;
 
            if (CBPoisk.Text == "НАЗВАНИЕ")
            {
                nametip = "[Name]";
                Oquery = "SELECT * FROM [TOborud] WHERE '" + nametip + "'='" + poisk + "'";
            }
            else if (CBPoisk.Text == "ТИП")
            {
                nametip = "[NameTip]";
                Oquery = "SELECT * FROM [TOborud] WHERE '"+ nametip +"'='" + poisk + "'";
            }
            else if (CBPoisk.Text == "РАСПОЛОЖЕНИЕ")
            {
                nametip = "[NumbRaspoloj]";
                Oquery = "SELECT * FROM [TOborud] WHERE '" + nametip + "'='" + Convert.ToInt32(poisk) + "'";
            }
            else if (CBPoisk.Text == "ДАТА")
            {
                nametip = "[Data]";
                Oquery = "SELECT * FROM [TOborud] WHERE '" + nametip + "'='" + Convert.ToDateTime(poisk) + "'";
            }
            SqlCommand Ocommand = new SqlCommand(Oquery, sqlConnection);
 
            SqlDataReader Oreader = Ocommand.ExecuteReader();
            List<string[]> Odata = new List<string[]>();
 
            while (Oreader.Read())//ЧТЕНИЕ ДЛЯ ВЫВОДА В ТАБЛИЦУ
            {
                Odata.Add(new string[7]);
 
                Odata[Odata.Count - 1][0] = Oreader[0].ToString();
                Odata[Odata.Count - 1][1] = Oreader[1].ToString();
                Odata[Odata.Count - 1][2] = Oreader[2].ToString();
                Odata[Odata.Count - 1][3] = Oreader[3].ToString();
                Odata[Odata.Count - 1][4] = Oreader[4].ToString();
                Odata[Odata.Count - 1][5] = Oreader[5].ToString();
                Odata[Odata.Count - 1][6] = Oreader[6].ToString();
            }
            Oreader.Close();
            DGVVivod.Rows.Clear();//Стерает данные из таблици
 
            DGVVivod.Columns.Clear();//Создание столбцов
            DGVVivod.Columns.Add(new DataGridViewTextBoxColumn() { Name = "id", HeaderText = "id", Visible = false });
            DGVVivod.Columns.Add(new DataGridViewTextBoxColumn() { Name = "nameOborud", HeaderText = "Название" });
            DGVVivod.Columns.Add(new DataGridViewTextBoxColumn() { Name = "tip", HeaderText = "Тип", Visible = false });
            DGVVivod.Columns.Add(new DataGridViewTextBoxColumn() { Name = "idRaspoloj", HeaderText = "Расположение", Visible = false });
            DGVVivod.Columns.Add(new DataGridViewTextBoxColumn() { Name = "date", HeaderText = "дата" });
            DGVVivod.Columns.Add(new DataGridViewTextBoxColumn() { Name = "nameTip", HeaderText = "Тип" });
            DGVVivod.Columns.Add(new DataGridViewTextBoxColumn() { Name = "numbRaspoloj", HeaderText = "Расположение" });
 
            foreach (string[] s in Odata)//Записывает данные в таблицу
            {
                DGVVivod.Rows.Add(s);
            }
        }
        
        private void BPoisk_Click(object sender, EventArgs e)//Кнопка поиска
        {
            string element = "";
            if (CBPoisk.Text == "НАЗВАНИЕ")
            {
                element = "НАЗВАНИЕ";
            }
            else if (CBPoisk.Text == "ТИП")
            {
                element = "ТИП";
            }
            else if (CBPoisk.Text == "РАСПОЛОЖЕНИЕ")
            {
                element = "РАСПОЛОЖЕНИЕ";
            }
            else if (CBPoisk.Text == "ДАТА")
            {
                element = "ДАТА";
            }
 
            DGVPoisk();
            MessageBox.Show("Произведен успешно поиск по элементу - "+element);
        }
Миниатюры
Вывод нужной информации в DataGridView при поиске  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.05.2019, 14:59
Ответы с готовыми решениями:

Вывод нужной информации по параметрам
Добрый всем день, представим что у нас есть небольшая электронная библиотека в которую занесено например 4 книги, у каждой книги есть свои...

Модальное окно. Вывод нужной информации
Здравствуйте. Имеется такой код. $allusers .= &quot;&lt;tr&gt;&lt;td rowspan='5'&gt;&lt;a href='profile.php?id=&quot; . $row.&quot;'&gt; &lt;img...

Модальное окно. Вывод нужной информации
Здравствуйте. Имеется такой код $allusers .= &quot;&lt;tr&gt;&lt;td rowspan='5'&gt;&lt;a href='profile.php?id=&quot; . $row.&quot;'&gt; &lt;img...

10
Фрилансер
805 / 312 / 148
Регистрация: 13.02.2019
Сообщений: 1,071
30.05.2019, 15:14
Цитата Сообщение от Z0a_9 Посмотреть сообщение
в чем ошибка
Как минимум, ошибка тут:
Цитата Сообщение от Z0a_9 Посмотреть сообщение
Oquery = "SELECT * FROM [TOborud] WHERE '" + nametip + "'='" + poisk + "'";
Имя столбца не нужно в кавычки заключать. Попробуйте их убрать и выполнить запрос снова.
1
0 / 0 / 0
Регистрация: 05.05.2019
Сообщений: 49
30.05.2019, 16:31  [ТС]
asn31337, ...спасибо, а теперь другой вопрос: язык как то влияет на выполнение, просто он находит только цифры и eng элементы...?
0
Фрилансер
805 / 312 / 148
Регистрация: 13.02.2019
Сообщений: 1,071
30.05.2019, 16:43
Цитата Сообщение от Z0a_9 Посмотреть сообщение
язык как то влияет на выполнение, просто он находит только цифры и eng элементы
А какой тип строк в БД? Если не nvarchar, то вполне может влиять
0
0 / 0 / 0
Регистрация: 05.05.2019
Сообщений: 49
30.05.2019, 17:18  [ТС]
asn31337, ...nvarchar и это плохо...?
0
Фрилансер
805 / 312 / 148
Регистрация: 13.02.2019
Сообщений: 1,071
30.05.2019, 17:26
Цитата Сообщение от Z0a_9 Посмотреть сообщение
nvarchar
Тогда, по идее, проблем с кириллицей быть не должно. nvarchar - это Unicode. А значит, строки из БД совпадают со строками в c#. Можете скинуть проект, посмотрю в чем там у Вас дело.
0
0 / 0 / 0
Регистрация: 05.05.2019
Сообщений: 49
01.06.2019, 17:01  [ТС]
asn31337, ...ок, вот...
Вложения
Тип файла: rar Project.rar (685.5 Кб, 1 просмотров)
0
Фрилансер
805 / 312 / 148
Регистрация: 13.02.2019
Сообщений: 1,071
01.06.2019, 17:49
Цитата Сообщение от Z0a_9 Посмотреть сообщение
вот...
Блин, у меня старая версия сервера. Не может БД открыть. Потом буду посвободнее, обновлю и гляну
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
01.06.2019, 18:04
Не понимаю почему я у всех вижу этот говнокод при чтении из БД?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
            SqlCommand Ocommand = new SqlCommand(Oquery, sqlConnection);
 
            SqlDataReader Oreader = Ocommand.ExecuteReader();
            List<string[]> Odata = new List<string[]>();
 
            while (Oreader.Read())//ЧТЕНИЕ ДЛЯ ВЫВОДА В ТАБЛИЦУ
            {
                Odata.Add(new string[7]);
 
                Odata[Odata.Count - 1][0] = Oreader[0].ToString();
                Odata[Odata.Count - 1][1] = Oreader[1].ToString();
                Odata[Odata.Count - 1][2] = Oreader[2].ToString();
                Odata[Odata.Count - 1][3] = Oreader[3].ToString();
                Odata[Odata.Count - 1][4] = Oreader[4].ToString();
                Odata[Odata.Count - 1][5] = Oreader[5].ToString();
                Odata[Odata.Count - 1][6] = Oreader[6].ToString();
            }
            Oreader.Close();
            DGVVivod.Rows.Clear();//Стерает данные из таблици
 
            DGVVivod.Columns.Clear();//Создание столбцов
            DGVVivod.Columns.Add(new DataGridViewTextBoxColumn() { Name = "id", HeaderText = "id", Visible = false });
            DGVVivod.Columns.Add(new DataGridViewTextBoxColumn() { Name = "nameOborud", HeaderText = "Название" });
            DGVVivod.Columns.Add(new DataGridViewTextBoxColumn() { Name = "tip", HeaderText = "Тип", Visible = false });
            DGVVivod.Columns.Add(new DataGridViewTextBoxColumn() { Name = "idRaspoloj", HeaderText = "Расположение", Visible = false });
            DGVVivod.Columns.Add(new DataGridViewTextBoxColumn() { Name = "date", HeaderText = "дата" });
            DGVVivod.Columns.Add(new DataGridViewTextBoxColumn() { Name = "nameTip", HeaderText = "Тип" });
            DGVVivod.Columns.Add(new DataGridViewTextBoxColumn() { Name = "numbRaspoloj", HeaderText = "Расположение" });
 
            foreach (string[] s in Odata)//Записывает данные в таблицу
            {
                DGVVivod.Rows.Add(s);
            }
Можно же значительно короче записать...
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
            DGVVivod.Rows.Clear();//Стерает данные из таблици
 
            DGVVivod.Columns.Clear();//Создание столбцов
            DGVVivod.Columns.Add(new DataGridViewTextBoxColumn() { Name = "id", HeaderText = "id", Visible = false });
            DGVVivod.Columns.Add(new DataGridViewTextBoxColumn() { Name = "nameOborud", HeaderText = "Название" });
            DGVVivod.Columns.Add(new DataGridViewTextBoxColumn() { Name = "tip", HeaderText = "Тип", Visible = false });
            DGVVivod.Columns.Add(new DataGridViewTextBoxColumn() { Name = "idRaspoloj", HeaderText = "Расположение", Visible = false });
            DGVVivod.Columns.Add(new DataGridViewTextBoxColumn() { Name = "date", HeaderText = "дата" });
            DGVVivod.Columns.Add(new DataGridViewTextBoxColumn() { Name = "nameTip", HeaderText = "Тип" });
            DGVVivod.Columns.Add(new DataGridViewTextBoxColumn() { Name = "numbRaspoloj", HeaderText = "Расположение" });
 
            SqlCommand Ocommand = new SqlCommand(Oquery, sqlConnection);
 
            SqlDataReader Oreader = Ocommand.ExecuteReader();
 
            while (Oreader.Read())//ЧТЕНИЕ ДЛЯ ВЫВОДА В ТАБЛИЦУ
            {
                DGVVivod.Rows.Add(new string[] { Oreader[0].ToString(), Oreader[1].ToString(), Oreader[2].ToString(), Oreader[3].ToString(), Oreader[4].ToString(), Oreader[5].ToString(), Oreader[6].ToString() });
            }
 
            Oreader.Close();
1
Фрилансер
805 / 312 / 148
Регистрация: 13.02.2019
Сообщений: 1,071
01.06.2019, 18:12
Цитата Сообщение от Someone007 Посмотреть сообщение
почему я у всех вижу этот говнокод при чтении из БД?
Судя по тому, что даже имена переменных совпадают, видимо, или учатся в одном ВУЗе, либо каким то одним источником воспользовались
0
0 / 0 / 0
Регистрация: 05.05.2019
Сообщений: 49
02.06.2019, 08:15  [ТС]
asn31337, ...вот sql-код для таблиц бд, не думаю что есть смысл в обнове...
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
CREATE TABLE [dbo].[TUser] (
    [Login]    NVARCHAR (50) NOT NULL,
    [Password] INT           NOT NULL
);
CREATE TABLE [dbo].[TTip] (
    [Id]   INT           IDENTITY (1, 1) NOT NULL,
    [Name] NVARCHAR (50) NOT NULL,
    PRIMARY KEY CLUSTERED ([Id] ASC)
);
CREATE TABLE [dbo].[TRaspoloj] (
    [Id]    INT           IDENTITY (1, 1) NOT NULL,
    [Numb]  INT           NOT NULL,
    [Mesto] NVARCHAR (50) NOT NULL,
    [Etaj]  INT           NOT NULL,
    PRIMARY KEY CLUSTERED ([Id] ASC)
);
CREATE TABLE [dbo].[TOborud] (
    [Id]           INT           IDENTITY (1, 1) NOT NULL,
    [Name]         NVARCHAR (50) NOT NULL,
    [IdTip]        INT           NOT NULL,
    [IdRaspoloj]   INT           NOT NULL,
    [DATA]         DATETIME      NOT NULL,
    [NameTip]      NVARCHAR (50) NOT NULL,
    [NumbRaspoloj] NVARCHAR (50) NOT NULL,
    PRIMARY KEY CLUSTERED ([Id] ASC),
    CONSTRAINT [FK_TOborud_ToTRaspoloj] FOREIGN KEY ([IdRaspoloj]) REFERENCES [dbo].[TRaspoloj] ([Id]),
    CONSTRAINT [FK_TOborud_ToTTip] FOREIGN KEY ([IdTip]) REFERENCES [dbo].[TTip] ([Id])
);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.06.2019, 08:15
Помогаю со студенческими работами здесь

Добавить вывод нужной информации, на примере последних новостей
Доброго времени суток! Есть сайт на фреймворке CodeIgniter. В админке, при добавлении недвижимости, есть чекбокс. При нажатии на который...

Вывод информации в DataGridView в зависимости от выбора в другом DataGridView - C# Access
В 1м DataGridView У меня предприятия, при выборе какого-то 1 предприятия, во 2й DataGridView появляются все записи с тем же ключом. Общий...

Вывод информации в DataGridView в зависимости от выбора в другом DataGridView
Прошу прощения сразу же потому что видел много тем похожих, но ответа так и не могу найти. Есть два датагрида, к первому привязана таблица...

NullReferenceException при поиске в DataGridView
Есть вот такой код - Когда я ввожу какие-либо данные в textbox, чтобы произвести поиск с выделением, то у меня выдает ошибку (ошибка на...

Ошибка при поиске в DataGridView
Добрый день! Подскажите, пожалуйста, если кто знает. У меня при повторном поиске в datagridview появляется ошибка о том, что...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru