Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
2 / 2 / 0
Регистрация: 26.12.2011
Сообщений: 46

Как при выборе в ComboBox, привязанному к столбцу БД, получить значения других полей

03.10.2014, 15:40. Показов 3430. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, уважаемые форумчане!
Впал в ступор вот с какой проблемой:
Есть таблица полученная из запроса к БД с тремя столбцами (id, fullname, password).
далее она прилеплена к combobox
VB.NET
1
2
3
ChangeUser.DataSource = userTable
ChangeUser.DisplayMember = "fullname"
ChangeUser.ValueMember = "id"
Но впал в ступор как получить значения password выбранного значения combobox. id получил следующим образом:
VB.NET
1
Me.ChangeUser.SelectedValue
Заранее благодарен за любые советы!
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.10.2014, 15:40
Ответы с готовыми решениями:

Изменение текста элементов привязанному к данным ComboBox без изменения его значения
Собственно по теме, есть форма в которой расположен combobox- где значения берутся из БД Form1.Tochki.MoveFirst() m = -1 ...

C# Как сделать чтобы при выборе в combobox , менялись значения в других combobox?
Приветствую коллеги. Только встал на путь программирования и столкнулся с дилеммой. Есть форма, на ней 4 combobox. В каждом combobox по...

Как сделать чтобы при выборе в combobox , менялись значения в других combobox?
Есть два combobox. Как их сделать зависимыми друг от друга. Что бы при выборе одного combobox менялись данные в другом. К примеру: В...

14
Почетный модератор
 Аватар для Памирыч
23248 / 9160 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
03.10.2014, 16:42
Наверняка это костыль, но попробуйте
VB.NET
1
2
3
    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
          MsgBox(tbl.Rows(ComboBox1.SelectedIndex)("password"))
    End Sub
1
2 / 2 / 0
Регистрация: 26.12.2011
Сообщений: 46
03.10.2014, 17:44  [ТС]
К сожалению данный подход не дал результатов.

Появилась идея присвоить полю id primarykey.
Далее поcредством свойства .Rows.Find получить одну строку
И уже из нее получить значение password.
Однако данный подход застопорился на этапе присвоения ключа ошибкой на 4 строке листинга:
Невозможно преобразовать значение типа "System.Data.DataColumn" в "1-мерный массив из System.Data.DataColumn".
VB.NET
1
2
3
4
        Dim uColName As DataColumn
        uColName = userTable.Columns("id")
        uColName.Unique = True
        userTable.PrimaryKey = uColName
0
Почетный модератор
 Аватар для Памирыч
23248 / 9160 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
03.10.2014, 18:13
Trigun68, результаты он дает, у меня выдает что нужно. Но я пробовал на БД Access, какая БД у Вас - мне неизвестно.
VB.NET
1
MsgBox(tbl.Rows(ComboBox1.SelectedIndex)("password"))
Тут в кавычках у меня имя поля. Можно поставить индекс поля вместо имени (индекс начинается с нуля)
0
 Аватар для dimsaratov
356 / 295 / 78
Регистрация: 02.10.2013
Сообщений: 476
Записей в блоге: 5
03.10.2014, 18:34
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

VB.NET
1
2
3
Dim PrimaryKey(0) as DataColumn
PrimaryKey(0) = userTable.Columns("id")
userTable.PrimaryKey = PrimaryKey
Получаем значение поля:
VB.NET
1
2
dim dRow as DataRow= userTable.Rows.Find(ComboBox1.SelectedIndex)
MsgBox(userTable.Rows("password").toString
3
2 / 2 / 0
Регистрация: 26.12.2011
Сообщений: 46
03.10.2014, 19:41  [ТС]
Памирыч, у меня Visual Studio и подключение к MySQL.
dimsaratov, спасибо.
Вот только логику никак не пойму второго блока кода.
в первой строке выбираем строку и пишем в новое поле. а во второй строке опять терзаем таблицу и ищем строку с именем столбца.
0
 Аватар для dimsaratov
356 / 295 / 78
Регистрация: 02.10.2013
Сообщений: 476
Записей в блоге: 5
03.10.2014, 20:00
Странно вроде писал одно, а на форуме другое вот так должно быть:
VB.NET
1
2
 Dim dRow as DataRow =userTable. Rows .Find (ComboBox1.SelectedValue )
MsgBox (dRows ("password" ).toString)
логика в том что сколько колонок к ComboBox не подключай в нем используется (доступно) только 2

Добавлено через 7 минут
SelectedIndex вернет порядковый номер начиная с 0 выбранной записи который может!! не совпасть с Id
а SelectedValue вернет имеено ID
далее в таблице мы ищем не строку с именем столбца с строку с PrimaryKey =Id
После этого из этой строки мы можем получить значение любого поля
0
Почетный модератор
 Аватар для Памирыч
23248 / 9160 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
03.10.2014, 20:00
Цитата Сообщение от dimsaratov Посмотреть сообщение
Странно вроде писал одно, а на форуме другое
Сравнивая Ваши посты, пришел к выводу, что этого не может быть)

dimsaratov, Вы как человек с опытом работы с БД, не могли бы пояснить, в чем ошибка моего подхода? Просто интересно
0
 Аватар для dimsaratov
356 / 295 / 78
Регистрация: 02.10.2013
Сообщений: 476
Записей в блоге: 5
03.10.2014, 20:06
Памирыч
SelectedIndex может не совпасть с ID
0
Почетный модератор
 Аватар для Памирыч
23248 / 9160 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
03.10.2014, 20:16
Цитата Сообщение от dimsaratov Посмотреть сообщение
SelectedIndex может не совпасть с ID
А он и не должен с ним совпадать

Добавлено через 40 секунд
Хотя я сейчас лучше проверю
0
 Аватар для dimsaratov
356 / 295 / 78
Регистрация: 02.10.2013
Сообщений: 476
Записей в блоге: 5
03.10.2014, 20:21
В combobox нумерация идет с нуля а в БД id очень редко кто делает с нуля
Опять же если запись будет удалена нумерация точно не будет совпадать
0
Почетный модератор
 Аватар для Памирыч
23248 / 9160 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
03.10.2014, 20:24
dimsaratov, смотрите:
Загрузка формы
VB.NET
1
2
3
4
5
6
7
8
9
10
11
    Dim cn As OleDb.OleDbConnection
    Dim tbl As New DataTable
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        cn = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\1.mdb")
        cn.Open()
        da.SelectCommand = New OleDb.OleDbCommand("Select * from Таблица2", cn)
        da.Fill(tbl)
        ComboBox1.DataSource = tbl
        ComboBox1.DisplayMember = "Поле3"
    End Sub
Событие выбора
VB.NET
1
2
3
    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
        MsgBox(tbl.Rows(ComboBox1.SelectedIndex)("Поле5"))
    End Sub
Структура таблицы


Что выбираю в комбо - то и вижу, но из другого поля. Например, в комбо выбираю "Три", в сообщении - "Третий", выбираю "Шесть" - в сообщении "Шестой"
ЧЯДНТ?
0
 Аватар для dimsaratov
356 / 295 / 78
Регистрация: 02.10.2013
Сообщений: 476
Записей в блоге: 5
03.10.2014, 20:45
Поле 3—Поле 5
в событии выбора

в частности такой подход имеет право быть но перспективно это может стать источником ошибок

Добавлено через 10 минут
Не много не в тему но хранить password в базе данных большое ФФИИИ
0
03.10.2014, 20:49

Не по теме:

Цитата Сообщение от dimsaratov Посмотреть сообщение
но перспективно это может стать источником ошибок
Вот я и засомневался. Мало ли какие ситуации могут возникнуть. Какие - не знаю, от того и спросил.

0
 Аватар для Hemicide
121 / 114 / 62
Регистрация: 27.07.2014
Сообщений: 225
03.10.2014, 21:09
dimsaratov, используйте BindingSuurce
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.10.2014, 21:09
Помогаю со студенческими работами здесь

Как сделать чтобы при выборе в combobox , менялись значения в других combobox? Visual Basic 6.0
Есть несколько компонентов Combobox, списки через Form_load я прописал, теперь списки отображаются. Но как сделать так чтобы при выборе в...

При выборе значения в одном ComboBox меняются значения в других
Помогите, пожалуйста. Есть несколько ComboBox Выбирая значение в одном, почему-то меняются значения в других, а первое...

При выборе определённого значения в одном из ComboBox-ов автоматически убирать лишние значения в других
Здравствуйте, подскажите как при выборе определённого значения в одном из combobox автоматически убирались лишние значения в других...

Фильтр в ComboBox, привязанному к столбцу БД
Здравствуйте! У меня есть СomboBox к нему привязывается значение столбца из таблицы с помощью DataTable, хочу сделать чтобы при введении в...

Как при выборе значения в combobox получить его текст
На форме 7 Combobox все подключены к разным таблицам при помощи SQL-запросов. Нужно чтобы при выборе определенного значения в другую...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru