Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.05.21;
Скачать: CL | DM;

Вниз

Поиск ошибки   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.038 c
2-1146503348
sarafat
2006-05-01 21:09
2006.05.21
получение картинки из сети


3-1143635944
Inna_Z
2006-03-29 16:39
2006.05.21
Как правильно сделать независимую копию датасета?


2-1145870692
Жаннка
2006-04-24 13:24
2006.05.21
api


3-1143189457
VitaWED
2006-03-24 11:37
2006.05.21
SQL Server и большие объемы


6-1136586503
oleg_
2006-01-07 01:28
2006.05.21
Как запостить файл?