Реферат: Лабораторные работы (в ХГТУ)

except

messagedlg('Данный автор присутствует в списке',mtinformation,[mbok],0); // сюда никогда

//не перейдет

end;

end

elsebegin

table2.Cancel;

messagedlg('Данный автор присутствует в списке',mtinformation,[mbok],0);

end;

end;

Из-за ошибки в Delphi пришлось вставлять еще два компонента TableProv и DataProv – для того, чтоб сначала искать такую же запись в таблице соответствия, какую хотим ввести, и не задействовать уникальный индекс, построенный по полям Kknig и Kavt. Так как программа потом перестает работать. Вот вырезка из конференции:

Николаев Констанитн   (04.12.01 20:54)

Уважаемые специалисты!
Что значит ошибка "Index is out of date"?
С уважением,
Константин.

Ю.Ю.   (05.12.01 02:48)

Ошибка в индексном файле. Нужно удалить и создать заново.

kaif ©   (05.12.01 22:13)

Эта ошибка существует в D3,D4,D5. В D6 не проверял, но уверен и там она есть. Я пробовал писать даже на Borland Second Team по этому поводу, но никто меня слушать даже не захотел - отсылали на форумы. Хотя это чудовищный баг, по моему мнению. Ошибка генерится по следующему алгоритму:
1. Вставляете запись в таблицу Paradox, с нарушением уникального индекса. Неважно, первичного или вторичного. Возникает Key violation.
2. Делаете невинный SQL-запрос против этой таблицы. Любой, например,
SELECT * FROM


3. Вставляете еще раз запись с нарушением уникального индекса. сообщение Key violation больше не появляется.
После переоткрытия таблицы будете гарантированно иметь "Index is out of date."
Кто не верит, могу выслать исходный код демонстрационной программы .
Из за этого мне пришлось выбирать между Paradox и Local SQL. Выбор был трудный. И я выбрал InterBase.
Главная подлость этой ошибки в том, что программист не пытается обычно создать более 1 key violation подряд. Этим обычно занимается пользователь. Поэтому ошибка плохо уловима и иногда вылезает через пару месяцев работы базы.

С описанной ошибкой столкнулся и я.


Форма выбора автора

В роли списка выступает компонент DBLookupListBox, который берет код из таблицы авторов и вставляет его в таблицу соответствия. При закрытии формы срабатывает процедура TSvaz.vstavka:

procedure TVibor_Avt.FormClose(Sender: TObject; var Action: TCloseAction);

begin

ShowWindow(Vibor_Avt.Handle, SW_HIDE); // скрыть форму, но не закрывать

action:=canone;

svaz.Enabled:=true;

if ((svaz.Table2.State=dsInsert) or (svaz.Table2.State=dsedit)) then svaz.vstavka;

К-во Просмотров: 294
Бесплатно скачать Реферат: Лабораторные работы (в ХГТУ)