Курсовые работы, лабораторные, доклады для студентов
можете скачать и поделиться с другими,
если не жалко.

 
на правах рекламы


Создание форм 1:М для просмотра, вставки, удаления и обновления данных в связанных таблицах с помощью компонента IBQuery, Ouery.


Вопрос 31. Создание форм 1:М для просмотра, вставки, удаления и обновления данных в связанных таблицах с помощью компонента IBQuery, Ouery.

На такие формы размещаются следующие компоненты: IBQuery1 ( будет использован для реализации операции вставки), IBQuery2 (для отображения содержимого табл. к кот. добавляется запись), IBQuery3 (используется для создания списков

DBLookUpComboBox для выбора ВК), IBDatabase, IBTransaction, Edit1, Edit2 и DBLookUpComboBox.



Вставка в таблицу "Student" в свойстве SQL объекта IBQuery1 пишем :
Insert into student (kod, fio, kod_gr)
values (:pkod, :pfio, :pkod_gr)
в свойстве SQL объекта IBQuery2 пишем :
select * from student
в свойстве SQL объекта IBQuery3 пишем :
select * from gruppa

Перенос значений текущей записи в поля ввода и списка
Событие AfterScroll компонента IBQuery2:
Edit1.Text:= IBQuery2;
FieldByName('kod').Asstring;
Edit2.Text:= IBQuery2.FieldByName('fio'). Asstring;
DBLookUpComboBox.KeyValue:= IBQuery2.FieldByName('kod_gr'). Asinteger;


Обработка нажатия кнопки "Вставить":

IBQuery1.Close;
IBQuery1.ParamByName('pkod'). Asinteger:=StrToInt(Edit1.Text);
IBQuery1.ParamByName('pfio'). Asinteger:=StrToInt(Edit2.Text);
IBQuery1.ParamByName('pkod_gr'). Asinteger :=DBLookUpComboBox1.KeyValue;
IBQuery1.ExecSQL;
IBQuery2.Close;
IBQuery3.Open;


Замечание: В данном примере ПК в таблице студент (kod_stud) вводится вручную. Для того чтобы этот шаг генерировался автоматически можно либо создать генератор и триггер на добавление записи в табл. student, либо создать генератор и функцию GEN_ID вызвать непосредственно командой Insert into student value (GEN_ID(...)...)
Если ключ генерируется автоматически, то его на форме можно вообще не отображать
Замечание: Свойство всех объектов формы можно задать вручную в инспекторе объектов, либо задать их программным путем в виде обраб. формы события Activate:

IBQuery1.SQL:= 'insert into...'

Замечание: Если вставка, удаление и обновление данных в таблице осуществляется на одной и той же форме , то на форму помещается 3 кнопки; можно разместить на форме несколько запросов каждый из которых будет содержать следующие команды :
IBQuery1-Insert, IBQuery2 - Update, IBQuery3 - Delete.
Вставка добавл и удал. с помощью ХП
Для доступа к ХП erBase используется компонент IBStoredProc
Основный свойства:
StoredProcName - имя ХП, созданной в БД
ParamByName ('') - обращение к параметру
Метод: ExecProc - вызов исполняемых процедур
Вставка нов строки в табл. student:

IBQuery1 - отображения содержимого таблицы
IBQuery1.SQL:='select * from student'
IBQuery2 - формирования списка для выбора наименования группы ВК
IBQuery2.SQL:= 'select * from gruppa'
ХП Vvod: Insert into student (kod, fio,kod_gr)values (:pkod, :pfio, :pkod_gr)
Обработка нажатия кнопки "Добавить"

IBStoredProc1. StoredProcName:='Vvod';
IBStoredProc1. ParamByName('pkod').Asinteger:=StrToInt(Edit1.Text);
IBStoredProc1. ParamByName('pfio').Asstring:= Edit2.Text;
IBStoredProc1. ParamByName('pkod_gr').Asinteger:= DBLookUpComboBox1.KeyValue;
IBStoredProc1. ExecProc;
IBQuery1.Close;
IBQuery1.Open;


Замечание : Чтобы ПК в таблице student генерировался автоматически необходимо создать генератор и ХП будет след. вида:
Insert into student (kod, fio, kod_gr) values (GEN_ID(gen_grup, 1) :pfio, :pkod_gr)
Если значение ПК генерируется, то его запрещается обновлять, поэтому столбец ПК желательно скрыть.

Замечание: Если на 1 форме осуществляется и вставка и удал. и обновление все равно достаточно разместить на форме только1 объект IBStoredProc, при этом значение св-ва IBStoredProcName должно задаваться программным путем, а не в инспекторе объектов.

Выполнение запросов с помощью ХП выборки
ХП выборки студента заданной группы.
ХП stud_from создается в InterBase
create procedure stud_from (pkod integer) returns (pfio char (30))
as
begin
for
select fio
from student
where kod_gr=:pkod_gr
into :pfio
do
begin
suspend;
end ;
end.


Замечание: Объект IBStoredProc на форму не выносится. IBQuery для вызова ХП свойством SQL: IBQuery1.SQL:= 'select * from stud_from (:p)'

Комментарии:

Оставить комментарий
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.