Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.05.14;
Скачать: CL | DM;

Вниз

DBGrid - редактирование данных, полученных из двух таблиц.   Найти похожие ветки 

 
Vladgen ©   (2006-04-25 12:18) [0]

Добрый день!
Наверняка вопрос такой был, но я к сожалению не нашел ответ. Если кому не сложно ткните носом...

Суть вопроса.
Есть файловая база MDB. Подключена через ADO.
Проблема при редактировании данных, полученных составным запросом.
Упрощено это выглядит примерно так:

A.ID
A.Name

B.ID
B.Date
B.AID  // ID раздела справочника из таблички А
B.Value

Задача - задается дата. На экране формируется таблица для заполнения. Т.е. в первой колонке выводятся ВСЕ строки справочника «А» а во второй колонке выводятся значения «Value» по условию B.AID = A.ID и D.Date = выбранной ранее дате.
Это естественно работает.

SELECT A.Name, B.Value
FROM A LEFT JOIN (Select * from B where  B.Date = :DT) as m
ON A.ID = M.AID

Но дальше надо, чтоб при заполнении пустых ячеек в сводной таблице, в таблицу «B» заносились новые записи с соответствующим образом заполненным полем D.Date. Ну и при редактировании заполненных – обновлялись.

При попытке добавления записей выдается сообщение «Недостаточно сведений ключевого поля для обновления».

Как корректно организовать вставку и редактирование записей, полученных через такой  запрос?


 
Sergey13 ©   (2006-04-25 12:38) [1]

Самое простое - подключи к выборке из одной таблицы В справочник А через лукап поле.


 
Vladgen ©   (2006-04-25 12:53) [2]

Тогда я не получу все записи из справочника А. А только те, для которых уже занесены данные. Так будет неудобно "забивать"  новые данные.

Я хочу иметь полный список разделов справочника, а справа только наколотить нужные цифры в соответствуюших строчках.


 
Sergey13 ©   (2006-04-25 13:02) [3]

2 [2] Vladgen ©   (25.04.06 12:53)
Ну тогда дополни запросом таблицу В с пустым B.Value и в гриде редактируй только его.


 
Vladgen ©   (2006-04-25 13:44) [4]

Т.е. при открытии данных в начале выполнить запрос из таблицы "А" и заполнить таблицу "B" всеми записями из таблицы "А", где B.AID = А.ID а B.Value = null.
Ну может и вариаент, тем более что подразумевается, что на каждый день будут почти все данные заполнятся... Но все-же это как-то не очень нравится.  
Так а по другому никак не сделать?


 
Sergey13 ©   (2006-04-25 13:46) [5]

2 [4] Vladgen ©   (25.04.06 13:44)
Ну сделай редактирование на отдельной модальной форме. В зависимости от ситуации либо вставляй записи либо редактируй.


 
Vladgen ©   (2006-04-25 22:10) [6]

Я все-же так понимаю, что при редактировании формируется неправильный запрос на вставку данных. Так а может тогда как-то можно перехватить изменения данных и сформировать свой insert в нужную мне таблицу?



Страницы: 1 вся ветка

Текущий архив: 2006.05.14;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.177 c
2-1145455458
Luka.rus
2006-04-19 18:04
2006.05.14
Вопрос по ClientSocket


2-1145968760
Alarm
2006-04-25 16:39
2006.05.14
О фокусе формы


3-1143053472
Layner
2006-03-22 21:51
2006.05.14
Подскажите, можно ли сменить пароль в БД ACCESS из своего exe


1-1144130382
denmin
2006-04-04 09:59
2006.05.14
Печать данных в одну строку.


15-1145340053
Некто_
2006-04-18 10:00
2006.05.14
ГОСТ Р 41.52-2001 (Правила ЕЭК ООН № 52)