realref.ru

Case RadioGroup2.Itemlndex of


ii-stadiya-vklyuchaet-poisk-informacii-i-ee-obrabotku.html
ii-stadiya-vzimaniya-nalogov-v-usloviyah-sushestvovaniya-gosudarstva.html
ii-standart-predostavleniya-gosudarstvennoj-uslugi.html
ii-stanovlenie-filosofii-v-stranah-drevnego-vostoka.html

Case RadioGroupl.Itemlndex of

Begin

Статический и динамический запросы

DELETE FROM Store

Удаление записей

WHERE C_Date BETWEEN 1.1.07 AND 31.12.07

FROM Cards

SELECT C_Code, CJfove, C_Date

INSERT INTO CardsArchives

(Code, Move, Date)

В архивную таблицу CardsArchives добавляется группа записей из таблицы Cards движения товара. Для записей, сделанных в 2007 году, в архив копируют­ся код товара, приход или расход и дата.

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

Замечание

Перемещение записей целесообразно оформлять в рамках транзакции, чтобы обеспечить надежность выполнения операции и сохранение целостности БД.

Для удаления группы записей используется оператор delete, имеющий формат:

DELETE FROM

[WHERE ] ;

В результате выполнения этого оператора из таблицы, имя которой указано по­сле слова from, удаляются все записи, которые удовлетворяют критерию отбора.

Замечание

Если критерий отбора не задан, то из таблицы будут удалены все записи.

Вот соответствующий запрос:

WHERE S_Quantity = 0

Из таблицы склада store удаляются все записи о товаре, которого нет на скла­де. Отметим, что если с записями этой таблицы связаны записи другой таблицы, например, движения товара, то может потребоваться их предварительное удале­ние, что связано с действием бизнес-правил и налагаемыми ими ограничения­ми.


Как уже отмечалось, в зависимости от способа формирования SQL-запрос мо­жет быть

§ статическим;

§ динамическим.

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

Динамический SQL-запрос формируется или изменяется при выполнении при­ложения. Такой запрос обычно применяется, если его текст зависит от действий пользователя, например, при управлении сортировкой набора данных, когда в тексте запроса изменяются названия полей и добавляется или исключается опи­сатель DESC.

Рассмотрим в качестве примера процедуру, в которой осуществляется формиро­вание динамического запроса:

procedure TForml.btnSortClick(Sender: TObject);

var str: string;

Queryl.Close;

Queryl.SQL.Clear;

Queryl.SQL.Add('SELECT * FROM Personnel. db') ;

0: str:='ORDER BY Name ';

1: str:='ORDER BY BirthDay ';

end;



0:;

1: str:=str + ' DESC;

end;

Queryl.SQL.Add(str);

Query1.Open;

end;

При нажатии кнопки btnSort список сотрудников сортируется по полям Name или BirthDay. Пользователь управляет выбором поля с помощью группы RadioGroupl независимых переключателей. В группе RadioGroup2 выбирается порядок сортировки.

Для настройки статического SQL-запроса во время выполнения приложения в его тексте можно использовать параметры. Параметр есть специальная пере­менная, перед именем которой ставится двоеточие в тексте запроса. Двоеточие не является частью имени параметра и ставится только в тексте запроса. Как и для обычных переменных программы, в процессе выполнения приложения на место параметра подставляется его значение.

Параметры удобно использовать для передачи в текст SQL-запроса внешних значений. Например, если необходимо вывести фамилии сотрудников с окладом не менее указанного в редакторе Editl, то организовать формирование и вы­полнение динамического запроса можно следующим образом:

procedure TForml.ButtonlClick(Sender: TObject);