![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поиск ошибки [D7, XP]
Alex7 © (2006-05-03 15:14:00)Уважаемые мастера! Ищу следующую ошибку:
На форме есть кнопка, в которой обработчик
"onClick" состоит из 1-го оператора:
Table1.Next.
Этот оператор выполняетя, но затем
управление передается в обработчик другого
компонента(DBCheckBoxClick), оттуда
в следующий(DВEditChange) и так,погуляв,
возвращается на исходную точку.
Так происходит и для других команд навигации,
и в других обработчиках, где есть Table1.Next;
причем только на этой форме. На другой
форме для той же "Table1" все работает
нориально.
Просмотрел события вклинившихся компонентов,
ничего не увидел.
Не могу сообразить где и как искать ошибку.
Может быть, что-нибудь подскажите.
Спасибо.
Alex7 (2006-05-04 07:57:00) [1]> про ключи, уникальные индексы
Спасибо. Вот это решение.
Ну, упустил из виду. Даже неловко
как-то. Подтверждается польза общения.
sniknik (2006-05-03 22:22:00) [2]> попытки предотвратить внесение дублирующих записей.
рассекречена первая строчка первого листа тз.... ;о)
про ключи, уникальные индексы, не допускающие повторов без внещнего вмешательства в курсе? почитй в справке по все еще секретной БД.
p.s. пожелание: поменьше мутной воды, побольше ясности и кода...
vovnuke (2006-05-03 19:05:00) [3]вообще я думал что за проверка правильности ввода того или иного значение в поле проверяется в OnValidate а не в OnChange.
Alex7 (2006-05-03 18:44:00) [4]Спасибо. Надо переварить.
Но, на первый взгляд:
1. При выборке тоже происходит навигация
по таблице.
2. Дольше, чем по индексу.
3. В общем виде SQL сложнее, чем проверка
по полям записи.
Плохиш (2006-05-03 18:13:00) [5]
> Alex7 (03.05.06 18:03) [10]
> > Вы свою задачу держите в большом секрете
> Нет никаких секретов. Вопрос возник при реализации
> попытки предотвратить внесение дублирующих записей.
В событии OnBeforePost выполняете SQL-запрос в WHERE пишите условие для проверки введённых данных, если будет возвращена запись с данными, то говорите пользователю, что он не прав и выполняете функцию abort.
PS. Что за привычка пытаться совершить взаимоисключающие действия с одним набором данных?
Alex7 (2006-05-03 18:03:00) [6]> Вы свою задачу держите в большом секрете
Нет никаких секретов. Вопрос возник при реализации
попытки предотвратить внесение дублирующих записей.
Делать это в режимах dsInsert и dsEdit не получается,
т.к. нужно двигаться по таблице.
Не смог ничего придумать, кроме как занести, проверить
и если окажется дубль, то удалить.
Плохо, но ничего другого не пришло на ум. Буду рад,
если предложите что-нибудь получше.
Alex7 (2006-05-03 18:03:00) [7]Удалено модератором
Плохиш (2006-05-03 17:35:00) [8]
> При навигации изменяются значения полей в
> компонентах DBEdit и т.п., а значит появляются
> события OnChange. Значит они и срабатывают?
Да
> Тогда программа становится мало управляема.
Почему? Вы же представляете для чего использовали события OnChange
> А как эту ситуацию Заблокировать?
Не использовать события OnChange.
Т.к. Вы свою задачу держите в большом секрете, то можно только порекомендовать обратить своё внимания на события OnBeforePost и OnAfterScroll.
Alex7 (2006-05-03 17:09:00) [9]В продолжение не очень результативной беседы
возникло такое предположение.
При навигации изменяются значения полей в
компонентах DBEdit и т.п., а значит появляются
события OnChange. Значит они и срабатывают?
Так?. Тогда программа становится мало управляема.
А как эту ситуацию Заблокировать?
Alex7 (2006-05-03 16:25:00) [10]Ну вот это другое дело.
Хорошо побеседовали. Спасибо.
Мефисто (2006-05-03 16:15:00) [11]Alex7 (03.05.06 16:04) [4]
Телепаты в отпуске. Код в студию
Плохиш (2006-05-03 16:13:00) [12]
> Пытаюсь понять, что является причиной нарушение
> нормальной последовательности выполнения операторов
> По-моему ясно, что BreakPoint'ы
> и пошаговое прохождение ничего
> не дает.
Често сказать, даже и не знаю чем Вам помочь, свечку если только поставить.
PS. Ctrl-Alt-S
Alex7 (2006-05-03 16:04:00) [13]Может быть можно было намекнуть,
каким средством отладчика имеет
смысл восползоваться.
По-моему ясно, что BreakPoint'ы
и пошаговое прохождение ничего
не дает.
Полезным мог быть "EventLog",
если бы в нем отражался перечень
выполняемых событий. Но я
видно неправилно что-то
делаю.
Плохиш (2006-05-03 15:32:00) [14]
> Пытаюсь понять, что является причиной нарушение
> нормальной последовательности выполнения операторов
Про нарушение сам подумал или надоумил кто?
PS. см. PS из [1]
Alex7 (2006-05-03 15:28:00) [15]> Осталось только озвучить, что за ошибку ищешь
Пытаюсь понять, что является причиной нарушение
нормальной последовательности выполнения операторов
и хочу эту причину устранить.
Плохиш (2006-05-03 15:21:00) [16]
> На другой форме для той же "Table1"
Врёшь, это другая "Table1"
> Просмотрел события вклинившихся компонентов,
> ничего не увидел
Хм, может стоит очки риобрести?
> Не могу сообразить где и как искать ошибку
Осталось только озвучить, что за ошибку ищешь
> Может быть, что-нибудь подскажите
Если очки не помогут, то можно попробовать танцы с бубном.
PS. Интересно, кто-нибуть из "начинающих" знает для чего в делфи включён отладчик?