|
0 / 0 / 0
Регистрация: 10.08.2016
Сообщений: 31
|
||||||
UpdateCommand для SELECTa из нескольких таблиц24.09.2017, 17:14. Показов 2301. Ответов 15
Нуждаюсь в помощи на понимание C#.
Ткните пожалуйста носом как писать запросы для DataAdaptera если SELECT тянет данные из несколькиз таблиц. Пробовал писать INSERT, DELET и UPDATE команды по аналогии с командами сгенерированными типизированными DataSetами, но успеха не достиг. Еще в DataGridView вводятся новые данные которые затрагивают только одну таблицу данные из других таблиц не трогаются, то есть по идее изменения должны вноситься INSERTOом, но срабатывает UPDATE. Объясните как правильно записывать изменения из DataGridView в БД. Вот селект:
0
|
||||||
| 24.09.2017, 17:14 | |
|
Ответы с готовыми решениями:
15
Запрос для нескольких таблиц Один идентификатор для нескольких таблиц
|
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
||
| 24.09.2017, 17:25 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 10.08.2016
Сообщений: 31
|
||
| 24.09.2017, 18:08 [ТС] | ||
|
0
|
||
|
214 / 214 / 73
Регистрация: 12.01.2011
Сообщений: 767
|
|||||||||||||||||||||||||||||||||||||||||
| 24.09.2017, 18:54 | |||||||||||||||||||||||||||||||||||||||||
Сообщение было отмечено sparkstas как решение
Решение
вариант 1:
как сказал kolorotur, через представления. Но в этом случае я бы не стал использовать представления + sql. Зачем их мешать ? Если использовать представления (+LINQ) то EntityFramework, в нем есть все необходимое: как пример небольшой: есть 2 таблицы: TCustomer(покупатель)
Вариант 2: Конечно можно и средствами голого SQL но тогда придется использовать транзакции. Как то делал дипломную человеку было у меня ограничение только SQL (просто представления, EF, и прочее они не проходили). к примеру таблица TPerson(люди) и ее подчиненная TSize(размеры одежды) UPDATE выглядел так:
и функция в базу:
1
|
|||||||||||||||||||||||||||||||||||||||||
|
0 / 0 / 0
Регистрация: 10.08.2016
Сообщений: 31
|
|||||||||||
| 24.09.2017, 18:55 [ТС] | |||||||||||
|
В DataGridView у меня получается вот такая таблица:
В поле Показания заносятся данные после чего их нужно сохранить. В БД даныые заносятся в таблицу indications в поля apartment_id и indication. Т. е. запрос должен быть такой:
Необработанное исключение типа "System.Data.SqlClient.SqlException" в System.Data.dll Дополнительные сведения: Необходимо объявить скалярную переменную "@Идентификатор".
0
|
|||||||||||
|
0 / 0 / 0
Регистрация: 10.08.2016
Сообщений: 31
|
|||
| 24.09.2017, 19:29 [ТС] | |||
|
Добавлено через 10 минут А что присвоить параметру?
0
|
|||
|
214 / 214 / 73
Регистрация: 12.01.2011
Сообщений: 767
|
|
| 24.09.2017, 19:39 | |
|
0
|
|
|
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,230
|
||||||
| 24.09.2017, 19:55 | ||||||
|
Как то у вас не по фэн-шую сделано: при выборке набор данных формируется из 3-таблиц, однако в гриде есть столбец, данные для которого вставляются вообще в 4 таблицу.
Как уже сказали, создайте view на основе 4-х таблиц работайте с этой view. Добавлено через 10 минут Вроде вот так будет выглядеть запрос:
1
|
||||||
|
0 / 0 / 0
Регистрация: 10.08.2016
Сообщений: 31
|
||||
| 24.09.2017, 19:58 [ТС] | ||||
|
Я бы рад работать с представлением, если подскажете, как мне в представлении организовать колонку с пустыми строками. Задача такая, есть таблица со списком квартир и таблица с показаниями, нужно для каждой квартиры внести показания. Как это лучше всего организовать. Добавлено через 2 минуты
0
|
||||
|
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,230
|
|||
| 24.09.2017, 20:04 | |||
|
А на гриде вы можете назвать колонки уже более удобными для пользователя именами, либо скрыть ненужные. Добавлено через 1 минуту
0
|
|||
|
360 / 287 / 76
Регистрация: 21.06.2016
Сообщений: 1,115
|
|
| 24.09.2017, 20:24 | |
|
sparkstas, если работаете с ms sql, то можно попробовать работать с xml данными, и не заморачиваться с адаптером. К тому же при использовании внешних ключей основанных на identity, тяжело будет делать insert более 1-ой записи в разные таблицы. Для упрощения я бы советовал временные таблицы, используя функционал OUTPUT(INSERTED). По скорости можно проиграть, но по простоте выиграть, поскольку EFВы не используете.
1
|
|
|
0 / 0 / 0
Регистрация: 10.08.2016
Сообщений: 31
|
||
| 24.09.2017, 20:29 [ТС] | ||
|
0
|
||
|
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,230
|
|||||||
| 24.09.2017, 20:37 | |||||||
Btw, можно не указывать ключевое слово INNER в запросе, поскольку в TSQL INNER JOIN является JOIN-ом по-умолчанию.
0
|
|||||||
|
0 / 0 / 0
Регистрация: 10.08.2016
Сообщений: 31
|
|||
| 24.09.2017, 20:53 [ТС] | |||
|
Добавлено через 10 минут
0
|
|||
|
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,230
|
|
| 24.09.2017, 20:56 | |
|
Как вариант, можно вместо вьюхи написать процедуру, которая принимает дату (месяц и год), и возвращат набор данных, отфильтрованный по месяцу и году. Если в таблице Indication есть колонка с датой (месяц и год), а она там должна быть логически, то добавляете проверку в условие
on последнего join-а.
0
|
|
|
0 / 0 / 0
Регистрация: 10.08.2016
Сообщений: 31
|
|
| 24.09.2017, 21:00 [ТС] | |
|
0
|
|
| 24.09.2017, 21:00 | |
|
Помогаю со студенческими работами здесь
16
Создание таблиц для нескольких пользователей Уникальный индекс для нескольких таблиц Стили для нескольких таблиц на странице
MySQL запрос для нескольких таблиц! Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|