Реклама:

Когда мы хотим перезаписать запись в таблице источника данных, то мы должны сначала извлечь "старую" запись из источника данных. Сделать это нетрудно по Original-версиям значений столбцов первичного ключа (в данном случае это столбцы KK и KP). Однако нужно убедиться, что и прочие столбцы записи хранят те значения, что были в них на момент заливки записи в набор данных и не изменены другим

1 Подробнее о версиях записей и о подтверждении или откате сделанных в наборе данных изменений см. 6.1 и 6.2.

пользователем Вследствие этого оператор и имеет столь громоздкий вид: в предложении SET употребляются параметры, значениями которых являются версии Current для соответствующих столбцов; в предложении WHERE - версии Original значений столбцов. В этом можно убедиться, проглядев коллекцию Parameters для команды. Приведем таблицу, содержащую: номер параметра по порядку; столбец, из которого в параметр подставляется значение; версию значения столбца.

Позиционный номер параметра

Столбец, из которого в параметр берется значение

Используемая версия значения столбца

KK

Current

KP

Current

FIO

Current

Rank

Current

KP

Original

б

FIO

Original

FIO

Original

s

KK

Original

KK

Original

Rank

Original

Rank

Original

Текст команды для адаптера ЗдІБаЬаАоіарЬег построен по тому же принципу, но с использованием именованных параметров. Имена параметров в значительной степени облегчают восприятие их назначения. Для полноты ниже приводим таблицу, где содержатся имя параметра, имя столбца и используемая параметром версия столбца.

UPDATE Prep

SET KK = @KK, KP = @KP, FIO = @FIO, Rank = @Rank

WHERE (KK = @Original_KK) AND (KP = @Original_KP) AND (FIO = @Original_FIO OR

@Original_FIO IS NULL AND FIO IS NULL) AND (Rank = @Original_Rank OR

@Original_Rank IS NULL AND Rank IS NULL); SELECT KK, KP, FIO, Rank FROM Prep

WHERE (KK = @KK) AND (KP = @KP)

Имя параметра

Столбец, из которого в параметр берется значение

Используется версия значения столбца

@KK

KK

Current

@KP

KP

Current

@FIO

FIO

Current

@Rank

Rank

Current

1 Более подробно о том, как отслеживается одновременное изменение одних и тех же данных разными пользователями, см. 6.2.

@Original

KK

KK

Original

@Original

KP

KP

Original

@Original

FIO

FIO

Original

@Original

Rank

Rank

Original

2.2.12.4. Команда DeleteCommand

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

DELETE FROM Prep WHERE (KP = ?) AND

(FIO = ? OR ? IS NULL AND FIO IS NULL) AND

(KK = ? OR ? IS NULL AND KK IS NULL) AND

(Rank = ? OR ? IS NULL AND Rank IS NULL)

Для удаления записи в источнике данных сначала нужно ее там отыскать. Удалять запись можно, если она уже не изменена другим пользователем, т. е. все ее столбцы содержат значения, идентичные версиям Original столбцов той же, уже удаленной, записи в таблице данных. В том, что в предложении WHERE оператора DELETE в качестве значений параметров используются только Original-версии значений столбцов, можно убедиться, просмотрев коллекцию Parameters команды. Приведем ниже таблицу, содержащую: номер параметра по порядку; столбец, из которого в параметр подставляется значение; версию значения столбца.


⇐ Предыдущая страница| |Следующая страница ⇒