Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.04.2017, 19:41   #1
tuchin
 
Регистрация: 08.02.2017
Сообщений: 5
Вопрос Как обеспечить зависимость значений для ввода в поле базы данных от значения в другом поле базы данных?

В таблицу DicFactor вводятся факторы, а в связанную с ней таблицу FactorValue вводятся допустимые значения факторов. Например, для фактора 0 вводятся допустимые значения Большой, Средний, Малый, а для фактора 1 - Да, Нет. Хотелось бы сделать следующее:
- чтобы после ввода фактора в dgvTable в списке для ввода значений факторов в dgvTableValue появлялись бы только допустимые факторы;
- чтобы после ввода фактора в dgvRule в списке для ввода значений факторов появлялись бы только допустимые факторы.
Помогите, пожалуйста. Проект прикрепил.
Вложения
Тип файла: zip EsTest.zip (32.0 Кб, 19 просмотров)
tuchin вне форума Ответить с цитированием
Старый 19.04.2017, 20:59   #2
hoolygan
Пользователь
 
Регистрация: 11.04.2017
Сообщений: 64
По умолчанию

Вот так сходу, не смотря на код. Смотрите в сторону linq запросов в таблицу. Думаете сильно интересно скачивать, распаковывать, всматриваться в код, понять что и ауда? Дайте сюда кусок кода, который пробовали для отработки выборки, тогда подсказать можно. А так... сколько готовы заплатить? На фрилансе?
hoolygan вне форума Ответить с цитированием
Старый 21.04.2017, 10:56   #3
tuchin
 
Регистрация: 08.02.2017
Сообщений: 5
По умолчанию

Я использую ADO.NET и не хочу использовать LinQ. Поясню, что хотелось бы реализовать. Создаю структуру таблицы dgvTableValue:
Код:
      dgvTableValue.Columns.Add(new DataGridViewTextBoxColumn()
      {
        Name             = "ID",
        HeaderText       = "ID",
        DataPropertyName = "ID"
      });
      dgvTableValue.Columns.Add(new DataGridViewTextBoxColumn()
      {
        Name             = "TableFactorID",
        HeaderText       = "TableFactorID",
        DataPropertyName = "TableFactorID"
      });
      dgvTableValue.Columns.Add(new DataGridViewComboBoxColumn()
      {
        Name             = "FactorValueID",
        HeaderText       = "Значение целевого фактора",
        DataPropertyName = "FactorValueID",
        DataSource       = ds.Tables["DicFactorValue"],
        DisplayMember    = "FactorValue",
        ValueMember      = "ID"
      });
      dgvTableValue.Columns.Add(new DataGridViewTextBoxColumn()
      {
        Name             = "TableValueMemo",
        HeaderText       = "Примечание",
        DataPropertyName = "TableValueMemo"
      });
В DataSource = ds.Tables["DicFactorValue"] надо подставить не все данные из таблицы, а только те, которые связаны с выбранным фактором и находятся в таблице FactorValue. Но при этом нужна возможность выбора этих связанных с фактором данных из списка.
tuchin вне форума Ответить с цитированием
Старый 21.04.2017, 17:54   #4
hoolygan
Пользователь
 
Регистрация: 11.04.2017
Сообщений: 64
По умолчанию

А каким образом идет зависимость linq от ADO - мы может на разных планетах живем?
Вот живой код из моего проекта
Код:
DataTable dt = MCReferences.dtInvoiceStatuses.AsEnumerable().Where(r => r.Field<int>("Id") != 3).CopyToDataTable();
            lueStatus.Properties.DataSource = dt;
hoolygan вне форума Ответить с цитированием
Старый 21.04.2017, 19:41   #5
tuchin
 
Регистрация: 08.02.2017
Сообщений: 5
По умолчанию

Я, честно говоря, не знаю, для чего нужен LinQ. Без него нельзя решить мою задачу? Если нельзя, то тогда придется заняться его изучением. Если можно, то хотелось бы решить задачу без него.
tuchin вне форума Ответить с цитированием
Старый 21.04.2017, 20:48   #6
hoolygan
Пользователь
 
Регистрация: 11.04.2017
Сообщений: 64
По умолчанию

Это запросы, наподобии того, как делаешь к сиквелу. И таки да, желательно поизучать, для работы с БД без них практически никуда. Самый простой пример - скорость. Выборка небольших объемов в linq в памяти в тысячи раз быстрее, чем чтение из БД. А в своем запросе я делаю новую табличку, в которой из старой передаю значения, убирая тройку из колонки с именем "Id" и связываю эту таблицу с контролом. Собственно это и есть решение твоей задачи, только логику навешать нужно.

Последний раз редактировалось hoolygan; 21.04.2017 в 20:51.
hoolygan вне форума Ответить с цитированием
Старый 22.04.2017, 12:31   #7
tuchin
 
Регистрация: 08.02.2017
Сообщений: 5
По умолчанию

Спасибо, постараюсь разобраться
tuchin вне форума Ответить с цитированием
Старый 22.04.2017, 13:35   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от hoolygan Посмотреть сообщение
Выборка небольших объемов в linq в памяти в тысячи раз быстрее, чем чтение из БД.
лучше изначально тогда не читать в память лишнее.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 22.04.2017, 18:21   #9
hoolygan
Пользователь
 
Регистрация: 11.04.2017
Сообщений: 64
По умолчанию

Та ну ладно. Допустим -стоит задача, как раз как у ТС.
2 контрола lookupedit (грубо как и комбобоксы) - к ним подвязаны датасорсы.
1- список бизнесов
2 - список филлиалов
Филлиалов в общей сложности порядка 3000 - необходимы только названия, бизнесов 15 - у каждого свои.
linq выборка филлиалов идет порядка 0,2 - 0,5 мс (простые выборки по значению в таблице датасорса).
И мне предлагается каждый раз на дерганье первого контрола дергать соединение с БД? Да ну нафиг )
hoolygan вне форума Ответить с цитированием
Старый 23.04.2017, 01:07   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

либо кэшировать, либо дергать, да.

зависит еще от объема данных, от частоты обновления данных и тп.
правильно сформированная БД работает довольно быстро.
когда я работал со справочником КЛАДР, мне не приходилось думать о задержках(весь КЛАДР целиком не влезет в памяти x86 процесса), так как запросы шли по индексам.
и так как раз шли все эти зависимости, любой пункт ниже зависит от пунктов выше.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 23.04.2017 в 01:09.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проверка ввода данных в поле Swatch JavaScript, Ajax 1 11.08.2014 07:50
Проверка значения в поле базы exedmxexe PHP 14 17.03.2012 21:30
Как использовать значения из базы данных? c# Anton007 Общие вопросы C/C++ 1 17.05.2011 00:13
Значения в поле подстановок зависят от значения в другом поле pyhtelka Microsoft Office Access 4 13.06.2010 10:42
Можно ли скопировать поле базы данных в ListBox? Вася Рогов БД в Delphi 4 07.05.2009 19:45