Обновление Datagridview для нескольких таблиц без использования bindingsource или tableadapter - PullRequest
0 голосов
/ 02 ноября 2018

У меня есть рабочий запрос Select, но, поскольку он содержит несколько таблиц, я не могу обновить его из своего представления данных.
Я уверен, что его можно переписать, чтобы разрешить обновления, но мой SQL довольно ограничен.

SELECT 
d.Unique_Part_ID, 
d.Location_ID, 
d.Recorded_Value, 
d.Date_Time_Stamp, 
d.Traceability, 
d.Part_Status, 
d.Measure_State,
p.Part_Number,  
p.Part_Rev,
c.CN, 
c.Characteristic_Requirement, 
c.Characteristic_Name, 
c.Tol_min, 
c.Nominal_Value, 
c.Tol_Max, 
c.Proprietary_Tag 
FROM GE_KC_Data AS d 
INNER JOIN GE_Key_Characteristics AS c ON d.Characteristic_ID = c.ID 
INNER JOIN GE_Parts AS p ON c.PartID = p.ID 
WHERE IsNull(d.Reported,'False')='False' 
ORDER BY d.Date_Time_Stamp DESC

Кто-нибудь из вас, гений, может помочь? Использование операторов подзапроса также возвращает ошибку «Только одно выражение может быть указано в списке выбора, если подзапрос не введен с EXISTS» И, конечно, я понятия не имею, что это значит.

1 Ответ

0 голосов
/ 03 ноября 2018

Я уверен, что его можно переписать, чтобы разрешить обновления

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

Если вы обновите две разные таблицы, напишите хранимую процедуру для обновления, передайте данные sproc (снова назначив их команде update в адаптере данных) и обновите несколько таблиц внутри sproc

Или зацикливать таблицу данных, с которой связано представление данных, и фиксировать обновленные строки самостоятельно, используя несколько запросов на обновление

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

Таким образом, вы не получите повторяющиеся мастер-ячейки в одной сетке (если у вас были заказы и элементы заказа, то данные заказов повторяются для каждой позиции заказа:

  ordernum | customer name | item ordered
  123      | John Smith    | washer pump
  123      | John Smith    | door seal

Если вы измените имя одной строки на Джейн Смит, а имя в другой строке на Джон Джонс, какая строка выиграет?

Наличие двух сеток и связанных данных является правильным способом сделать это. Для получения дополнительной информации см .:

https://msdn.microsoft.com/en-us/library/fxsa23t6.aspx

Рекомендую начать с прочтения учебника «Создание простого приложения для обработки данных», независимо от того, насколько другие могут показаться в вашей ситуации;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...