![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема проверки добавляемого значения. [D5, Paradox]
S!D © (2002-10-26 12:53:00)Проблема проверки добавляемого значения.
Есть таблица Table1, связанный с ее индексированным полем DBEdit1.
Необходимо перед обновлением произвести проверку присутствия или отсутствия в этом поле введенного значения (DBEdit1.Text).
Приведенный ниже код не работоспособен.
Буду признателен, если подкините решение данной проблемы и/или объясните в чем ошибка.
procedure TForm1.DataSource1UpdateData(Sender: TObject);
begin
if Table1.FindKey([DBEdit1.Text]) then
begin
...
S!D (2002-10-26 20:21:00) [1]И правда, чего это я?
спасибо за вправку извилин! :)
MsGuns (2002-10-26 17:05:00) [2]Естественно, она и ДОЛЖНА циклить. Что ж ты в событии, возникающем ПЕРЕД тем как постировать изменения, пытаешься покинуть ИЗМЕНЕННУЮ запись ?
Проверка на дублирование ключей должна ИМХО выполняться в событии OnKeyViolate (точнее, не проверка, а собственно реакция на повтор ключа) - никаких доп.поисков при этом не требуется.
Искать надо если поле не есть ключ или уникальный индекс и другим методом - LookUp, который ищет повторяемость, НЕ ПОКИДАЯ текущую запись.
К событиям TDataSource надо вообще относиться очень осторожно, хорошо понимая суть и последовательнось реакции отдельных составляющих программы (источника, отображателя, физ.НД и т.д.)
S!D (2002-10-26 14:52:00) [3].. т.е begin процедуры.
S!D (2002-10-26 14:50:00) [4]Debugger Exception Notification
Project raised exception class EStackOverFlow W/message "Stack overflow"
причем при трассировке видно что прога зацикливается с if на begin приведенного кода
Anatoly Podgoretsky (2002-10-26 13:01:00) [5]Как проявляется не работоспособность?