|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
|||||||||||
Отношение между таблицами25.10.2016, 21:26. Показов 2428. Ответов 8
Метки нет (Все метки)
Привет всем. Такой вопрос. Хочу создать отношение между двумя таблицами по foreign key.
К примеру таблицы:
Затем в вкладке Data Sources вижу свой DataSet с таблицами, и начинаю переносить эти таблицы на форму - в итоге получаю два DataGridView на форме, привязанные к DataSet через BindingSource. Теперь запускаю прогу. Все работает... НО по идеи когда я должен нажимать на разные строки в DataGridView, который отображает таблицу Firm, должна проходить выборка по ключу в DataGridView, который отображает Person, и показывать мне только те строки, которые соответствуют правилам id(Firm) = id_firm(Person) Но у меня никакая выборка не происходит - просто все строки отображаются как в одном DataGridView, так и в другом. В чем может быть проблема, не подскажете? Вопрос №2(Задаю его здесь же, так как очень два вопроса связаны между собой): Опять же отношение между таблицами. Таблицы те же, что я описывал выше. Только теперь есть на форме TabControl, который будет нести смысл первой таблицы - TabPages.text отображать поле firm из таблицы Firm. Также есть один DataGridView, который отображает таблицу Person и находится в TabControl. Нужно сделать так, чтобы при переходе с TabPage на другую TabPage происходила выборка по ключу, и отображала соответствующую информацию в DataGridView. Короче все тоже самое что и в Вопросе 1, только место одного DataGridView у нас TabControl. P.S. можно сделать тупо через DataView выборку, но это глупо...зачем тогда эти отношения вообще нужны, если все автоматически не работает?
0
|
|||||||||||
| 25.10.2016, 21:26 | |
|
Ответы с готовыми решениями:
8
Отношение между двумя таблицами Отношение между несколькими таблицами |
|
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
|
|
| 26.10.2016, 09:03 | |
|
FK нужны для обеспечения целостности данных, а не для того, что вы подумали
0
|
|
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
|
| 26.10.2016, 09:13 [ТС] | |
|
Ну что, кто нибудь поможет? Вот даже видео записал, чтобы более понятнее было мою проблему:
0
|
|
|
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
|
|
| 26.10.2016, 09:23 | |
|
master/detail это называется. И FK тут вовсе не причем. Однако благородный дон не желает читать ответы
0
|
|
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
|||||||||||
| 26.10.2016, 21:33 [ТС] | |||||||||||
|
pincet, я не увидел Ваш первый пост. Извините. А что такое master/detail и как его организовать?
И что по поводу второго вопроса? Как привязать таблицу к TabControl Добавлено через 12 часов 5 минут Короче сделал сам. Оказывается нужно было привязать BindingSource у зависимой таблицы к независимой, и выставить поле DataMember на внешний ключ зависимых таблиц:
personBindingSource - BindingSource зависимой таблицы Person firmBindingSource - BindingSource зависимой таблицы Firm FK_Person_ToFirm - внешний ключ Но теперь вопрос другой, к примеру у меня есть еще одна таблица Сity, которая имеет такую структуру:
Нужно сделать так, чтобы ТАКЖЕ АВТОМАТОМ, при выводе в DataGridView таблицы Person, место столбца id_city показывался город, соответствующий данному ключу. Как такое организовать?
0
|
|||||||||||
|
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
|
||
| 27.10.2016, 10:50 | ||
|
DataSource -источник данных ValueMember -поле, в котором отображается значение. Название города в вашем случае. DisplayMember - поле, в котором находится идентификатор. id_city.
1
|
||
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
|||||||||||
| 27.10.2016, 22:54 [ТС] | |||||||||||
|
Igr_ok, да так прокатило) но с DataGridViewComboBoxColumn как то глупо выглядит, так как там не список, а одно значение. Нужно скорее всего DataGridViewTextBoxColumn, но к нему почему то нет привязки(
Добавлено через 7 минут Блин, решил одну проблему, появилась новая. Короче есть те же 2 таблицы - Firm, Person. Firm привязана к ComboBox, Person - к DataGridView. Все нормально работает, при переходе с пункта на пункт в ComboBox строки в DataGridView фильтруются. Все как надо... Тут решил организовать поиск по таблице Person. Создал TextBox, в событии TextChanged пишу такой код:
Попробовал сделать вот так:
НО при переходе на другой пункт из ComboBox перестает обновляться DataGridView %) Жесть какая то. Я так понимаю при передачи this.personBindingSource.DataSource = MyDataView; сбивается вот привязка по ключу в DataGridViewthis.personBindingSource.Dat aMember = "FK_Person_ToFirm"; this.personBindingSource.DataSource = this.firmBindingSource; Я уже с ума схожу с этим GUI С C# вообще на "Вы", но нужно написать Помогите решить проблему, так как я даже не знаю как правильно в гугл обратиться с этим вопросом
0
|
|||||||||||
|
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
|
|
| 28.10.2016, 08:43 | |
|
потому, что нужно забыть про всякую ерунду типа BindingSource и иже с ним и получать с сервера готовые наборы данных. Это раз
Изучить JOIN, это 2
0
|
|
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
|
| 28.10.2016, 23:04 [ТС] | |
|
pincet, если получать с сервера наборы данных, то это намного будет тормозить программу. Легче грузануть все в DataSet при открытии программы, и при закрытии сохранять уже все...ну это на мой взгляд...
0
|
|
| 28.10.2016, 23:04 | |
|
Помогаю со студенческими работами здесь
9
Отношение между таблицами в типизированном DataSet
Связи между таблицами Связи между таблицами Связи между таблицами в Code First Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
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 .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|