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

Связь comboBox и textBox

07.07.2016, 15:35. Показов 1604. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть таблица Printer, имеет структуру:
Print_ID (PK)
Print_Name
Dept
Данные из Dept выводятся в комбобокс.
Как сделать, чтобы при выборе значения в комбобоксе, в текстбоксе выводилось print_name?

Код на данный момент
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
            string baseName = "Printers.db3";
            using (var connection = new SQLiteConnection())
            {
                connection.ConnectionString = "Data Source = " + baseName;
                SQLiteCommand command = new SQLiteCommand("select * from Printer", connection);
                connection.Open();
                DbDataReader reader = command.ExecuteReader();
                while (reader.Read())
                {
                    comboBox1.Items.Add((string)reader["Dept"].ToString());         //СтолбецТаблицы
                }
                connection.Close();
            }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.07.2016, 15:35
Ответы с готовыми решениями:

Связь combobox со связанными таблицами
Доброго времени суток! Поставил 2 combobox. В одной отображаются наименования региона, код региона - первичный ключ region_id. Во...

Как разорвать связь между двумя ComboBox?
Здравствуйте. Начинаю разбираться с программированием. Возникла проблема. Есть база данных в C#. Вставлена на форму с помощью DataGridView....

Связь ComboBox с DataGridView, где находятся данные из БД Access
Добрый вечер форумчане. Интересует следующий вопрос. Как реализовать связь combobox(привязаны группы студентов ВУЗа источником данных...

6
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
07.07.2016, 16:23
Kaberungula,
Я думаю, что никак.
В комбобокс заносится список значений поля Dept (предполагаю, что это подразделения). Это поле не является ключом, и значения будут повторяться, если в одном подразделении насколько принтеров. Т.е. в комбобоксе значения тоже будут повторяться. Можно было бы воспользоваться значением поля Print_ID и через него построить sql запрос типа
SQL
1
SELECT Print_Name FROM Printer WHERE Print_ID = значению_Print_ID_выбранного_в_комбобоксе_элемента
Но проблема в том, что комбобокс ничего об этом поле не знает.
В отличии от способа, предложенного в https://www.cyberforum.ru/ado-... ost9332752
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
07.07.2016, 19:49
Цитата Сообщение от Kaberungula Посмотреть сообщение
при выборе значения в комбобоксе, в текстбоксе выводилось print_name?
Типа того?
Модель для БД:
C#
1
2
3
4
5
6
7
8
9
10
11
12
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace PrinterTest {
    public class PrinterObj {
        public int PrintID { get; set; }
        public string PrintName { get; set; }
        public string Dept { get; set; }
    }
}
Класс для БД:
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Data;
using System.Data.SQLite;
 
namespace PrinterTest {
    public class SQLiteHelper {
        static string CONNECT_STR = string.Empty;
        static SQLiteHelper() {
            CONNECT_STR = string.Format("Data Source={0}",
                Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "database.sqlite"));
        }
 
        public PrinterObj[] GetPrinters() {
            string selectCmd = "SELECT * FROM Printers";
            List<PrinterObj> printers = new List<PrinterObj>();
            using (SQLiteConnection cnn = new SQLiteConnection(CONNECT_STR)) {
                cnn.Open();
                using (SQLiteCommand cmd = new SQLiteCommand(selectCmd, cnn)) {
                    using (SQLiteDataReader dr = cmd.ExecuteReader()) {
                        while (dr.Read()) {
                            printers.Add(new PrinterObj {
                                PrintID=int.Parse(dr["printId"].ToString()),
                                PrintName=(string)dr["printName"],
                                Dept=(string)dr["dept"]
                            });
                        }
                    }
                }
            }
            return printers.ToArray();
        }
    }
}
Код формы (на форме combobox и textbox):
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace PrinterTest {
    public partial class Form1 : Form {
        PrinterObj[] printers = null;
 
        public Form1() {
            InitializeComponent();
            this.Load += new EventHandler(Form1_Load);
            cmbDept.SelectedValueChanged += new EventHandler(cmbDept_SelectedValueChanged);
        }
 
        void cmbDept_SelectedValueChanged(object sender, EventArgs e) {
            string[] names = printers.Where(p => p.Dept == cmbDept.Text).Select(p => p.PrintName).ToArray();
            txtNames.Lines = names;
        }
 
        void Form1_Load(object sender, EventArgs e) {
            SQLiteHelper dbHelper = new SQLiteHelper();
            printers = dbHelper.GetPrinters();
            cmbDept.Items.AddRange(printers.Select(p => p.Dept).ToArray());
        }
    }
}
0
0 / 0 / 1
Регистрация: 24.05.2016
Сообщений: 48
08.07.2016, 10:50  [ТС]
А возможно ли из ридера загрузить значения в массив и вытягивать значения по индексу?

Добавлено через 14 часов 33 минуты
Подскажите, как написать грамотно этот участок?
C#
1
2
3
4
5
6
DbDataReader reader = command.ExecuteReader();
                while (reader.Read())
                {
                    string sDept  = reader.GetString["Dept"];
                    comboBox1.Items.Add(sDept);
                }
Выдает ошибку "Невозможно применить индексирование через [] к выражению типа "группа методов""
0
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
08.07.2016, 12:02
Цитата Сообщение от Kaberungula Посмотреть сообщение
А возможно ли из ридера загрузить значения в массив и вытягивать значения по индексу?
Пользуйтесь вместо ридера DataAdapter-ом и загружайте данные в DataTable.
Цитата Сообщение от Kaberungula Посмотреть сообщение
Выдает ошибку "Невозможно применить индексирование через [] к выражению типа "группа методов""
Нет такого метода. Так нужно:
C#
1
reader.GetString(0);
, где 0 - номер столбца.
0
0 / 0 / 1
Регистрация: 24.05.2016
Сообщений: 48
12.07.2016, 14:18  [ТС]
Не много подразобрался как связывать комбобокс с текстбоксом... Но теперь нужно как-то сделать, чтоб при выборе в комбобоксе отдела, появлялись разные имена принтеров в текстбоксах, т.к есть некоторые отделы с несколькими принтерами. Как это можно реализовать?

Добавлено через 2 часа 0 минут
Так понимаю, тут нужно уже будет делать связь в БД "от одно(dept) к многим(printer)" данные будут в двух таблицах. Но дальше то как? Подскажите алгоритм, а то уже голова разрывается)
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
12.07.2016, 20:22
Цитата Сообщение от Kaberungula Посмотреть сообщение
Но теперь нужно как-то сделать, чтоб при выборе в комбобоксе отдела, появлялись разные имена принтеров в текстбоксах, т.к есть некоторые отделы с несколькими принтерами. Как это можно реализовать?
Цитата Сообщение от Даценд Посмотреть сообщение
Это поле не является ключом, и значения будут повторяться, если в одном подразделении насколько принтеров.
Приведите в порядок схему БД
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.07.2016, 20:22
Помогаю со студенческими работами здесь

Связь между двумя формами. передача данных из combobox в DataGridView
Есть две формы. На первой - находятся 3 комбобокса (профиль-группа-студенты),заполненные данными из БД, и кнопки, которыми нужно...

DataTable textbox combobox
Есть кобмобокс который привязан к dataset есть несколько текстбоксов, есть несколько кнопок очистить все поля, создать. Возникла проблема...

Поиск по БД из textBox, combobox
Объясните пожалуйста как показать данные столбца из таблицы через Combobox, смотрела разные сайты, там показано как сделать через свойства...

Поиск по БД из textBox, combobox
Подскажите пж код или ссылки для поиска данных в БД. Использую данный код CSHARP] private void button1_Click(object sender, EventArgs e)...

Как связать TextBox с ComboBox?
Всем привет! Поясните пожалуйста на простом примере как сделать зависимым TextBox от ComboBox. Есть БД Access с таблицей Country и таблицей...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
1С: Программный отбор элементов справочника Номенклатура по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника Сотрудники по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru