Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
0 / 0 / 1
Регистрация: 01.12.2014
Сообщений: 133

Составить условие для выборки данных

09.07.2015, 10:02. Показов 4130. Ответов 68
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем Привет!!


Имеется таблица в БД. в которой следующие поля (id, yur_face, num_dog, rukovoditel, type)

Поле "yur_face" это comboBox1

При выборе значения из comboBox1 должны заполняться textBox1 (Поле "num_dog") и textBox2 (Поле "rukovoditel")


Помогите составить запросы на выборку????????????
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.07.2015, 10:02
Ответы с готовыми решениями:

Группа переключателей как условие для выборки данных в запросе Access
Добрый день, уважаемые формучане, требуется ваша помощь. 1. В БД есть две таблицы Сотрудники и Статус (действующий или уволенный) а так...

Условие на проверку открыта ли форма в запрое для последующей выборки
Доброго времени суток! Вот мучаюсь уже не 1 час, хочу написать хитрый запрос на выбоку значений через оператор IiF в котором указать...

Как составить выборки данных
Как составить такие выборки данных в Matlab? V = 16 rand = Если кто умеет, то хотя бы один параметр покажите как рассчитать.

68
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
09.07.2015, 21:43
Лучший ответ Сообщение было отмечено Mikky Mous как решение

Решение

Код написан для соединения с базой MS Access 2003. Для других версий Access меняется провайдер и расширение в пути к файлу, для других баз меняется строка соединения, остальное - то же самое.
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
    private void button1_Click(object sender, EventArgs e) // можно и на загрузку формы
   {
            //соединение с БД 
            OleDbConnection cn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source = path"); // path - это путь к БД
            cn.Open();
            OleDbCommand comm = new OleDbCommand();
            comm.Connection = cn;
            comm.CommandText = "SELECT COUNT (*) FROM НазваниеТаблицы";
            int col = Convert.ToInt32(comm.ExecuteScalar());
            MessageBox.Show(col.ToString());
            OleDbCommand cmd = new OleDbCommand();
            cmd.Connection = cn;
            cmd.CommandText = "SELECT * FROM НазваниеТаблицы";
            System.Data.OleDb.OleDbDataReader myReader = cmd.ExecuteReader();
            string [] ggg1 = new String [col];
            string [] ggg2 = new String [col];
            string [] ggg3 = new String [col];
            int i = 0;
            while (myReader.Read())
            {
                ggg1[i] = myReader.GetString(ПорядковыйНомерПоля yur_face);// порядковый номер считается с 0
                ggg2[i] = myReader.GetString(ПорядковыйНомерПоля num_dog);
                ggg3[i] = myReader.GetString(ПорядковыйНомерПоля rukovoditel);
                comboBox1.Items.Add(ggg1[i]);
                i = i + 1;
            }
            myReader.Close();
            cn.Close();
     }
     private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
     {
            int ind = comboBox1.SelectedIndex;
            textBox1.Text = ggg2[ind];
            textBox2.Text = ggg3[ind];
     }
1
0 / 0 / 1
Регистрация: 01.12.2014
Сообщений: 133
10.07.2015, 10:35  [ТС]
а если БД postgresql тогда как быть?????
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
10.07.2015, 11:40
Цитата Сообщение от Mikky Mous Посмотреть сообщение
а если БД postgresql тогда как быть?
С ней не работал, но у всех sql-баз один принцип. По-гуглите подключение к postgresql, и, наверно, придется заменить OleDbDataReader на какой-нибудь SqlDataReader. А с 15-й строки, всё останется примерно так же. Посмотрите здесь:
http://kbss.ru/blog/lang_c_sharp/3.html

Добавлено через 9 минут
Вот еще парочка:
http://www.codeproject.com/Art... on-An-intr
https://www.cyberforum.ru/ado-... 29535.html
1
0 / 0 / 1
Регистрация: 01.12.2014
Сообщений: 133
10.07.2015, 11:43  [ТС]
как подключиться я знаю, у меня не получается составить условие, чтобы при выборе определенного значения из ComboBox выбирались подходящие значения в textBox1 и textBox2....
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
10.07.2015, 11:47
Цитата Сообщение от Mikky Mous Посмотреть сообщение
у меня не получается составить условие, чтобы при выборе определенного значения из ComboBox выбирались подходящие значения в textBox1 и textBox2....
Чем тогда вам не подходит код с 15 строки?
1
0 / 0 / 1
Регистрация: 01.12.2014
Сообщений: 133
10.07.2015, 12:02  [ТС]
ошибка в 15 строке
C#
1
Не удалось привести тип объекта "System.Int32" к типу "System.String".
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
10.07.2015, 12:07
Проверить, к сожалению не могу, но вроде так:
C#
1
2
3
4
5
6
7
            NpgsqlConnection cn = new NpgsqlConnection("строка подключения");
            con.Open();
            NpgsqlCommand comm = new NpgsqlCommand("select count (*) from НазваниеТаблицы", cn);
            int col = Convert.ToInt32(comm.ExecuteScalar());
            NpgsqlCommand cmd = new NpgsqlCommand("select * from НазваниеТаблицы", cn);
            NpgsqlDataReader myReader;
            myReader = cmd.ExecuteReader();
А дальше один к одному из предыдущего кода с 15 строки.

Добавлено через 1 минуту
Цитата Сообщение от Mikky Mous Посмотреть сообщение
ошибка в 15 строке
В этой?
C#
1
string [] ggg1 = new String [col];
Не может быть
1
0 / 0 / 1
Регистрация: 01.12.2014
Сообщений: 133
10.07.2015, 12:11  [ТС]
тоже самое в строке
C#
1
ggg1[i] = myReader.GetString(0);
ошибка
C#
1
Не удалось привести тип объекта "System.Int32" к типу "System.String".
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
10.07.2015, 12:13
У вас какой тип данных в num_dog? Если числовой, то надо второй массив делать числовым и в соответствующем ридере использовать не GetString, а GetInt32.

Добавлено через 1 минуту
Цитата Сообщение от Mikky Mous Посмотреть сообщение
Не удалось привести тип объекта "System.Int32" к типу "System.String"
Аналогично. Разберитесь с типами данных.
1
0 / 0 / 1
Регистрация: 01.12.2014
Сообщений: 133
10.07.2015, 12:14  [ТС]
типы yur_face, num_dog, rukovoditel текстовые

Добавлено через 35 секунд
id счетчик, type текстовое поле
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
10.07.2015, 12:14
И еще проверьте номера полей.
0
0 / 0 / 1
Регистрация: 01.12.2014
Сообщений: 133
10.07.2015, 12:17  [ТС]
в смысле????

Добавлено через 3 минуты
если сделать так

C#
1
2
3
ggg1[i] = myReader.GetString(1);// порядковый номер считается с 0
                ggg2[i] = myReader.GetString(1);
                ggg3[i] = myReader.GetString(1);
то ошибка возникает в строке
C#
1
2
 textBox1.Text = ggg2[ind];
            textBox2.Text = ggg3[ind];
следующая
C#
1
Индекс находился вне границ массива.
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
10.07.2015, 12:32
Если в первом сообщении поля указаны по порядку правильно, то у вас должно быть так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
            string [] ggg1 = new String [col];
            string [] ggg2 = new String [col];
            string [] ggg3 = new String [col];
            int i = 0;
            while (myReader.Read())
            {
                ggg1[i] = myReader.GetString(1);
                ggg2[i] = myReader.GetString(2);
                ggg3[i] = myReader.GetString(3);
                comboBox1.Items.Add(ggg1[i]);
                i = i + 1;
            }
            myReader.Close();
            cn.Close();
Добавлено через 8 минут
Цитата Сообщение от Mikky Mous Посмотреть сообщение
Индекс находился вне границ массива.
Если всё остальное сделано правильно, то проверьте через MessageBox.Show значение "col": соответствует ли оно количеству записей в таблице. Второй вариант - где-то в записях пустое значение и получается разное количество значений в полях.
0
0 / 0 / 1
Регистрация: 01.12.2014
Сообщений: 133
10.07.2015, 12:36  [ТС]
ошибка та же возникает в строке

C#
1
2
textBox1.Text = ggg2[ind];
            textBox2.Text = ggg3[ind];
следующая

C#
1
Индекс находился вне границ массива.
Добавлено через 1 минуту
мне кажется, что я куда-то не туда вставил строки

C#
1
2
3
 int ind = comboBox1.SelectedIndex;
            textBox1.Text = ggg2[ind];
            textBox2.Text = ggg3[ind];
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
10.07.2015, 12:38
Выложите полностью код.

Добавлено через 52 секунды
Тот, что связан с ридером и комбобоксом.
0
0 / 0 / 1
Регистрация: 01.12.2014
Сообщений: 133
10.07.2015, 12:42  [ТС]
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
 public void comboBox1_SelectedValueChanged_1(object sender, EventArgs e)
        {
            String connectionString = "Server=192.10.1.1;Port=5432;User=123;Password=;Database=123";
            NpgsqlConnection npgSqlConnection = new NpgsqlConnection(connectionString);
            npgSqlConnection.Open();
            NpgsqlCommand comm = new NpgsqlCommand("SELECT COUNT (*) FROM export", npgSqlConnection);
            int col = Convert.ToInt32(comm.ExecuteScalar());
            NpgsqlCommand cmd = new NpgsqlCommand("SELECT * FROM export", npgSqlConnection);
            NpgsqlDataReader myReader = cmd.ExecuteReader();
 
            string[] ggg1 = new String[col];
            string[] ggg2 = new String[col];
            string[] ggg3 = new String[col];
            int i = 0;
 
             while (myReader.Read())
            {
                    ggg1[i] = myReader.GetString(1);// порядковый номер считается с 0
                    ggg2[i] = myReader.GetString(2);
                    ggg3[i] = myReader.GetString(3);
                    comboBox1.Items.Add(ggg1[i]);
                    i = i + 1;
            }
            myReader.Close();
            npgSqlConnection.Close();
 
            int ind = comboBox1.SelectedIndex;
            textBox1.Text = ggg2[ind];
            textBox2.Text = ggg3[ind];
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
10.07.2015, 12:49
Конечно не туда Сделайте его отдельно на событие изменения значения комбо:
C#
1
2
3
4
5
6
     private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
     {
            int ind = comboBox1.SelectedIndex;
            textBox1.Text = ggg2[ind];
            textBox2.Text = ggg3[ind];
     }
0
0 / 0 / 1
Регистрация: 01.12.2014
Сообщений: 133
10.07.2015, 12:51  [ТС]
Ошибка 2 Элемент "ggg3" не существует в текущем контексте.

Ошибка 1 Элемент "ggg2" не существует в текущем контексте.
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
10.07.2015, 13:05
1) Только сейчас обратил внимание: работу с самой базой нужно поставить не на comboBox1_SelectedIndexChanged, а либо на кнопку, либо на Form_Load. На comboBox1_SelectedIndexChanged оставить только три строки.
2) Перенесите определение массивов вне событий, то есть сделайте:
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
public string[] ggg1;
public string[] ggg2;
public string[] ggg3;
private void button1_Click(object sender, EventArgs e) // или Form_Load
        {
            String connectionString = "Server=192.10.1.1;Port=5432;User=123;Password=;Database=123";
            NpgsqlConnection npgSqlConnection = new NpgsqlConnection(connectionString);
            npgSqlConnection.Open();
            NpgsqlCommand comm = new NpgsqlCommand("SELECT COUNT (*) FROM export", npgSqlConnection);
            int col = Convert.ToInt32(comm.ExecuteScalar());
            NpgsqlCommand cmd = new NpgsqlCommand("SELECT * FROM export", npgSqlConnection);
            NpgsqlDataReader myReader = cmd.ExecuteReader();
 
            ggg1 = new String[col];
            ggg2 = new String[col];
            ggg3 = new String[col];
            int i = 0;
 
             while (myReader.Read())
            {
                    ggg1[i] = myReader.GetString(1);// порядковый номер считается с 0
                    ggg2[i] = myReader.GetString(2);
                    ggg3[i] = myReader.GetString(3);
                    comboBox1.Items.Add(ggg1[i]);
                    i = i + 1;
            }
            myReader.Close();
            npgSqlConnection.Close();
 }
 public void comboBox1_SelectedValueChanged_1(object sender, EventArgs e)
{
            int ind = comboBox1.SelectedIndex;
            textBox1.Text = ggg2[ind];
            textBox2.Text = ggg3[ind];
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.07.2015, 13:05
Помогаю со студенческими работами здесь

Составить интервальный ряд распределения для выборки.
помогите пожалуйста!!!! Задана выборка Х 81 92 86 80 81 94 85 102 90 86 80 91 80 76 68 81 85 76 90 88 ...

Составить регэксп для выборки картинок из fb2 файла
нужно выбрать коды картинок из fb2 файла, которые в base64 выглядит так: <binary content-type="image/jpg"...

Составить функцию для выборки из компонент заданного вектора наибольшего элемента
Составить функцию для выборки из компонент заданного вектора a(a1,a2,...,an) наибольшего элемента. Компонент вектора относятся к величинам...

Составить функцию для выборки из компонент заданного вектора наибольшего элемента
Создать программ с использованием функций: Составить функцию для выборки из компонент заданного вектора a(a1 ,a2,...,an) наибольшего...

Условие выборки
Есть две таблицы: юзеры и записи юзеров. В таблице 'записей юзеров' есть поле где пишется логин юзера, тоесть кому принадлежит запись. Надо...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru