• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Удаление записи из таблицы

  • Автор темы MishaMW
  • Дата начала
M

MishaMW

Данные в DBGrid выводятся из связанных таблиц в хранимой процедуре через TADOStoredProc.

При удалении записи через DBNavigator выскакивает ошибка
"Недостаточно сведений ключевого поля для обновления".

Как в этом случае можно удалять записи?
 
M

MishaMW

Для: MishaMW
Сколько раз уже говорилось ... никогда не используй ADOTable, ADOQuery и ADOStoredProc
только ADOCommand и ADODataSet

Да я бы с удовольствием.
Но это уже готовый проект, в котором все завязано на более чем сотни компонентов ADOStoredProc.
И все переписывать не вариант. Поэтому хотелось бы решить этот вопрос с данными условиями.
 
M

MishaMW

в компонент ADOStoredProc загружена вот такая процедура:
Код:
Create Procedure DBO.dpGetProbShablonsList
@OperationID int
as
begin
Select 
OPSH.ProblemNumberInOperation,
OPSH.ProblemID,
PSH.ProblemName,
PSH.TimeBegin,
PSH.ProblemLength,
PSH.IsControlProblem,
PSH.ControlCriterionID,
ControlCriterionName = CC.Name, 
PSH.ControlPostID, 
ControlPostName = CE.Name
from [b]dbo.OperationsProblems_Shablons[/b] OPSH,[b]dbo.Problems_Shablons[/b] PSH
Left Join dbo.ControlCriterions CC ON (PSH.ControlCriterionID = CC.ControlCriterionID)
Left Join dbo.Posts CE ON (PSH.ControlPostID = CE.PostID)
Where OPSH.ProblemID = PSH.ProblemID AND OPSH.OperationID = @OperationID AND @OperationID is not null
AND IsNull(OPSH.DateDelete,0) = 0 AND IsNull(PSH.DateDelete,0) = 0
Order By OPSH.ProblemNumberInOperation
end

Данные из ADOStoredProc через DataSource выводятся в DBGridEh. К DataSource соответственно подкючен DBNavigator.

При выделении строки в DBGridEh и нажатии на nbDelete выскакивает ошибка
"Недостаточно сведений ключевого поля для обновления",
что естественно для связанных таблиц.

В DataSet есть свойства Unique Table и Resync Command и там это хорошо решается.
А вот что нужно здесь, чтобы удалить строку в Problems_Shablons и соответствующую ей в OperationsProblems_Shablons ?
 
B

Barmutik

Стоит просто не использовать встроенные средства аля TDBNavigatora а удалятьручками .. потому как он криво работает с таблицами без ключей или со множественными ключами...
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!