Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB .NET > Загрузка даных из Access в Combobox


Автор: Student2006 20.3.2011, 22:07
Нужно, чтобы из базы данных Access загружались значения  в Combobox. 
В Data Source выбираю нужную таблицу. В display member поле из таблицы, в value member соответствующий этому полю код (id). В selected value ставлю поле в которое будет подставляться value member. Что я делаю не так? Или я что-то не так понимаю,  когда запускаю программу в combobox'e появляются нужные значения, но если выбрать одно из них в программе ничего нельзя больше сделать (всё блокируется). Как только в combobox'e ставлю код (например 1) всё работает нормально.
Подскажите, в чем проблема, буду ОЧЕНЬ благодарен


Автор: diadiavova 20.3.2011, 22:12
Цитата(Student2006 @  20.3.2011,  22:07 Найти цитируемый пост)
В selected value ставлю поле в которое будет подставляться value member.

Вот этого не понял.
Цитата(Student2006 @  20.3.2011,  22:07 Найти цитируемый пост)
Как только в combobox'e ставлю код (например 1)

И этого тоже.

Автор: Экскалупатор 20.3.2011, 22:16
Student2006, 
Цитата(Student2006 @  20.3.2011,  21:07 Найти цитируемый пост)
selected value 

это выбранное значение, т.е. сюда можно поставить номер той записи(в комбобоксе) которая будет выделена и никаких 

Цитата(Student2006 @  20.3.2011,  21:07 Найти цитируемый пост)
подставляться value member


Автор: Student2006 20.3.2011, 22:20
Есть таблица в базе, например "ФИО" с полями id, name
Я В Data Source выбираю ФИО. В display member name, в value member id. В selected value выбираю другую таблицу в которую  собираюсь загрузить данные из combobox'a. Не знаю как еще объяснить :(

Автор: diadiavova 20.3.2011, 22:22
Цитата(Экскалупатор @  20.3.2011,  22:16 Найти цитируемый пост)
т.е. сюда можно поставить номер той записи(в комбобоксе)

Номер записи - это SelectedIndex. SelectedValue возвращает то свойство выбранного элемента(или столбец таблицы), которое указано в свойстве ValueMember комбобокса.

Автор: Экскалупатор 20.3.2011, 22:24
совсем не могу понять вот эту фразу

Цитата(Student2006 @  20.3.2011,  21:20 Найти цитируемый пост)
В selected value выбираю другую таблицу в которую  собираюсь загрузить данные из combobox'a. Не знаю как еще объяснить


Автор: diadiavova 20.3.2011, 22:24
Цитата(Student2006 @  20.3.2011,  22:20 Найти цитируемый пост)
 В selected value выбираю другую таблицу в которую  собираюсь загрузить данные из combobox'a. Не знаю как еще объяснить :( 

Тебе надо просто обработать событие SelectedIndexChanged и в обработчике выбирать таблицу или что там ты хочешь делать. А это свойство служит для другой цели(написал выше)

Автор: Экскалупатор 20.3.2011, 22:29
Цитата(diadiavova @  20.3.2011,  21:22 Найти цитируемый пост)

Номер записи - это SelectedIndex. SelectedValue возвращает то свойство выбранного элемента(или столбец таблицы), которое указано в свойстве ValueMember комбобокса. 

точно, немного перепутал... сори.

Student2006, почитай http://msdn.microsoft.com/ru-ru/library/system.windows.forms.combobox.aspx.

Автор: Student2006 20.3.2011, 22:39
Я, конечно, в программировании ничего не понимаю, но что конкретно я задал не так? Вроде бы всё правильно, почему не работает :(

Автор: Экскалупатор 20.3.2011, 22:58
Student2006, опиши подробнее что должно происходить, хоть своими словами

Автор: Student2006 20.3.2011, 23:09
Ну есть например БД "записная книжка" в ней предположим две таблицы:" имена" с полями id и name, и "книга" с полями id, name и phone(данныe в name подставляются из таблицы "имена"). мне нужно сделать запись во вторую таблицу. Соответсвенно, чтобы имена загружались из комбобокса. Все работает без проблем если в комбобоксе у меня id, но мне нужно что бы из него выпадали имена, а не цифры.

Автор: diadiavova 20.3.2011, 23:43
Student2006, объясни, пожалуйста, а зачем тебе понадобилось разбивать эти данные на 2 таблицы, в то время как они, по идее, должны содержаться в одной?

Опять-таки не очень понятно, что значит
Цитата(Student2006 @  20.3.2011,  23:09 Найти цитируемый пост)
мне нужно сделать запись во вторую таблицу

Как ты собираешься ее отображать и с помощью чего редактировать(если, конечно, речь идет о редактировании)?
Цитата(Student2006 @  20.3.2011,  23:09 Найти цитируемый пост)
Все работает без проблем если в комбобоксе у меня id, но мне нужно что бы из него выпадали имена, а не цифры. 

Общий расклад с привязкой данных такой: 
Комбобокс привязываешь к датасету через байндингсорс. Выбираешь в нем дисплеймембер какой тебе надо(данные, ессно, содержатся в одной таблице. Это не обязательно для реализации функционала, но в твоем случае для разделения нет причин).
Далее, я так понимаю тебе надо, чтобы в другом контроле отображалос значение выбранного в комбобоксе элемента. Возьмем к примеру текстбокс, можно его свойство Text привязать к тому же байндингсорсу, выбрать нужную колонку, которую хочешь отображать в текстбоксе и при выборе элемента в комбобоксе, в текстбоксе будет отображаться значение выбранного элемента.

Добавлено через 8 минут и 11 секунд
Вот собственно пример. Без базы данных, но с базой все так же выглядит.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)