2015-08-19 3 views
0

Я хотел бы написать программное обеспечение, которое отображает содержимое базы данных в приложении Forms. Чтобы упростить объяснение, я использую список покупок в качестве примера.Как отображать информацию из объединенных таблиц в DataGridView

  • У меня есть несколько списков в одной таблице tLists
  • У меня есть ряд tProductPackages в другой таблице
  • список может состоять из многих productPackages и один productPackage может быть во многих списках. Это отношение m: n отражается в отдельной таблице с именем tListProdPacks.
  • Продукт Продукт содержит продукт. Продукт может иметь несколько продуктов. В каждой записи tProductPackage есть внешний ключ FK_ProductID, который ссылается на запись в таблице tProducts.

Приложение My forms должно перемещаться по всем спискам с помощью BindingNavigator. В некоторых связанных элементах управления он должен отображать детали выбранного списка. Это работает нормально. (Только связанные элементы управления.)

Все содержимое списка (записи в tListProdPacks для выбранного элемента tLists) должно отображаться в DataGridView. Это также отлично работает. Также отображаются данные продукта Packages (tProductPackages, т. Е. Один переход к следующей таблице). В этой таблице значение продукта доступно как ID (FK_ ProductID) (внешний ключ для tProducts).

Есть ли способ показать имя продукта (только в tProducts) в DataGridView, чей DataSource tListProdPacks? (легко отобразить tProductPackages участников, так как первичный ключ от tProductPackages ссылается на него tListProdPacks и с помощью этого идентификатора я могу показать все остальные данные от tProductPackages, просто продолжайте использовать одно и то же значениеMember, но используйте разные значения DisplayMember для отдельных столбцов DataGridView [используя выпадающих элементов управления в DGV].) Но когда вы прыгаете на один стол дальше (т.е. при прыжке в таблицу), это больше не работает.

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

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

Я не уверен, смогу ли я описать то, что хотел бы достичь достаточно хорошо. Если нет, пожалуйста, помогите мне, что предоставить дополнительно.

С наилучшими пожеланиями, Том

ответ

1

и можно связать таблицы с помощью объединений, если они содержат первичный ключ внешнего ключа отношения. используя объединения, вы можете получить один набор результатов, содержащий все поля, которые могут понадобиться.

+1

u можете использовать Ado.net –

+0

Но при использовании JOINs я не могу обновить базу данных, не так ли? Что, если я тоже хочу делать ОБНОВЛЕНИЯ? – TomS

+1

для этого лучше разбить все таблицы и вставить соответствующие данные в порядок, но с использованием свойств транзакции и фиксации, чтобы, если какое-либо обновление не удалось, оно будет откатываться. вам нужно сделать некоторую логику там, например, какую таблицу обновить ist и которая последняя или вам нужен любой идентификатор из таблицы ist для обновления во второй и т. д. –

Смежные вопросы