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