русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Добавление записи возможно, если разрешена модификация набора данных. Подтверждение добавлений выполняется методом Post, а отмена методом Cancel.


Дата добавления: 2013-12-23; просмотров: 981; Нарушение авторских прав


Edit; - переводит набор данных в режим редактирования, то есть в состояние dsEdit.

Post; override;- записывает измененную запись в базу данных и переводит набор данных в режим просмотра. Может вызываться только тогда, когда набор данных находится в состоянии dsEditили dsInsert.Метод вызывается автоматически при перемещении курсора на новую текущую запись, если набор данных находится в состоянии dsEditили dsInsert.Если при вызове этого метода набор данных не находился в режиме редактирования, то будет сгенерирована исключительная ситуация.

Cancel; - отменяет изменения, сделанные при редактировании до применения Post. Генерируются события BeforeCancel и AfterCancel. Отменить внесенные изменения можно также при работе с компонентом DBGrid, нажав клавишу Esc.

Refresh; - извлекает данные из базы данных для обновления набора данных,

SetFields (const Values: array of const); - устанавливает значения всем полям записи, используя порядок полей в таблице. Значения полей могут быть литералы, переменные, NULL или nil. Здесь Values – массив значений, которые присваиваются полям текущей записи, nil – без изменения значения. После выполнения метода набор данных переводится в режим просмотра.

!!! Ключевое слово nil означает отсутствие значения, а слово null подразумевает нулевое значение.

 

Например,

TbTovar.Edit;

TbTovar.SetFields([nil,Edit1.Text,100,nil,nil]);

TbTovar.Post;

Например.

// изменение данных в поле T_Cena таблицы Tovar.

if TbTovar.CanModify then begin

TbTovar.Edit; // перевод в режим редактирования

TbTovar.FieldByName('T_Cena').AsString:=Edit1.Text;

TbTovar.Post; // запись данных в физическую таблицу

TbTovar.Refresh; //обновление содержимого визуальных компонентов

end

else MessageDlg(Редактирование невозможно!!',

mtInformation,[mbOk],0);



 

Методы набора данных Table:

Insert; –переводит Stateв состояниеdsInsert, вставляет новую пустую запись в позицию, на которой находится указатель текущей записи. Заполнить запись можно методом SetFields,

InsertRecord (const Values: array of const); - вставляет новую запись в текущую позицию курсора и одновременно задает значения всех или некоторых ее полей.

AppendиAppendRecord аналогичны методамInsertи InsertRecord,только добавляют новую запись в конец набора данных.

Например,

TbTovar.Insert; // перевод набора в режим вставки

TbTovar.FieldByName('T_Nazv').AsString:=Edit1.text;

TbTovar.Post; // запись сделанных изменений

Например,

TbTovar.InsertRecord([EdTovar.text,EdCena.text,
StrToInt(EdKol_vo.text),EdPrim.text]);

При использовании компонента DBGrid добавление новой записи можно выполнить двойным щелчком на записи, перед которой будет вставлена новая. После установки курсора нужно нажать клавишу Ins, и появиться пустая строка.

Удаление записи можно производить только из модифицируемого набора данных. Удаляется текущая запись с помощью метода:

Delete; -удаляет активную запись из базы данных, и перемещает курсор на следующую запись. Если в момент удаления набор данных не активен, то инициируется исключительная ситуация. При удалении записи выполняются обработчики событий BeforeDeleteиAfterDelete.

Пример Модификация записей в БД “Pokupka”.

1) Добавление записи в таблицу Tovar

// проверка на наличие такой записи в наборе данных

If DM2.TbTovar.Locate('T_Nazv;T_Cena',
VarArrayOf([LENazv.Text,LECena.Text]),[])
then ShowMessage('Такая запись уже есть!')

else Begin

// добавление записи

DM2.TbTovar.Append;

DM2.TbTovarT_Nazv.AsString:=LENazv.Text;

DM2.TbTovarT_Cena.AsVariant:=LECena.Text;

DM2.TbTovar.Post;

end;

2) Редактирование текущей записи в таблице Tovar

// проверка на наличие такой записи в наборе данных

If DM2.TbTovar.Locate('T_Nazv;T_Cena',
VarArrayOf([LENazv.Text,LECena.Text]),
[loCaseInsensitive])
then ShowMessage ('Такая запись уже есть!')

else Begin

// сохранение отредактированной записи

DM2.TbTovar.Edit;

DM2.TbTovarT_Nazv.AsString:=LENazv.Text;

DM2.TbTovarT_Cena.AsVariant:=LECena.Text;

DM2.TbTovar.Post;

end;

3) Удаление текущей записи в таблице Tovar, каскадное удаление

var n:Variant;

begin

// определение кода названия товара

n:=DM2.TbTovarT_Code.AsVariant;

// проверка на наличие такой записи в наборе данных Pokupka

if DM2.TbPokupka.Locate('P_Tovar',VarArrayOf([n]),

[loCaseInsensitive])
then begin

if MessageDlg('Соответствующая запись в таблице Pokupka есть!'+#13+'Выполнить каскадное удаление?',

mtConfirmation,[mbYes,mbNo],0)=mrYes
then begin

// удаление соответствующих записей в таблице Pokupka

with DM2.TbPokupka do begin

First;

while not eof do begin

if FieldByName('P_Tovar').AsVariant=n then Delete

else Next;

end; end;

// удаление выбранной записи в таблице Tovar

DM2.TbTovar.Delete;

end end

else DM2.TbTovar.Delete; end;

4) Добавление новой записи в таблицу Pokupka

var cod:Variant;

begin

// определение кода названия товара

DM2.TbTovar.IndexFieldNames:='T_Nazv';

cod:=DM2.TbTovar.Lookup('T_Nazv',ComboBox1.Text,'T_Code');

// проверка на наличие такой записи в наборе данных

if DM2.TbPokupka.Locate('P_Tovar;P_Date;P_Kol_vo',

VarArrayOf([cod,DateTimePicker1.Date,LEKol_vo.Text]),
[loCaseInsensitive])
then ShowMessage('Такая запись уже есть!')

else Begin

DM2.TbPokupka.Append;

Dm2.TbPokupka.SetFields([nil,DateTimePicker1.Date,
cod,StrToInt(LEKol_vo.Text)]);

DM2.TbPokupka.Post;

end;
end;

5) Редактирование текущей записи в таблице Pokupka

var cod:Variant;

begin

// определение кода названия товара

DM2.TbTovar.IndexFieldNames:='T_Nazv';

cod:=DM2.TbTovar.Lookup('T_Nazv',ComboBox1.Text,'T_Code');

// проверка на наличие такой записи в наборе данных

if DM2.TbPokupka.Locate('P_Tovar;P_Date;P_Kol_vo',

VarArrayOf([cod,DateTimePicker1.Date,LEKol_vo.Text]),
[loCaseInsensitive])
then ShowMessage('Такая запись уже есть!')

else Begin

// сохранение отредактированной записи в наборе данных

DM2.TbPokupka.Edit;

DM2.TbPokupkaP_Date.AsVariant:=DateTimePicker1.Date;

DM2.TbPokupkaP_Kol_vo.AsVariant:=LEKol_vo.Text;

DM2.TbPokupkaP_Tovar.AsVariant:=cod;

DM2.TbPokupka.Post;

end;

end;

 

6) Удаление текущей записи из таблицы Pokupka

DM2.TbPokupka.Delete;

 

 




<== предыдущая лекция | следующая лекция ==>
Тема. Модификация набора данных. | Тема. Работа с отчетами


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.005 сек.