5 / 5 / 3
Регистрация: 15.01.2017
Сообщений: 678
|
||||||
1 | ||||||
При повторном появлении ошибки обработка ошибки не срабатывает12.02.2019, 19:15. Просмотров 525. Ответов 5
Метки нет Все метки)
(
Логика:
- Пользователь. Нажимает кнопку; - Код . Создаёт "Recordset" "rstStud"(студенты) и "rstGroupStud"(ГруппыСтуденты); - Код . Цикл. Перебирает "rstStud"; - - Код . Добавить запись в "rstGroupStud"; - - Код . Если запись существует - перейти к следующей записи в цикле; - - Код . Если запись новая - добавить запись в "rstGroupStud"; Суть: одно нажатие кнопки - добавить одну уникальную запись. Проблема. Когда цикл проходит !ИмяСтудента = "Имя Студента 2" в строке ".Update" получаю ошибку. Ошибка: "Не удалось внести изменения из-за повторяющихся значений в индексе, первичном ключе или связях. Измените данные в одном или нескольких полях, содержащих повторяющиеся значения, удалите индекс или переопределите его, разрешив повторяющиеся значения, и повторите попытку." Т.е. первый раз обработчик ошибок срабатывает нормально, а при повторном срабатывании получаю ошибку. Вопрос. Как сделать чтобы код работал согласно описанной логики?
0
|
|
12.02.2019, 19:15 | |
Остановка своей службы при появлении ошибки при повторном call валят ошибки Уже скомпилированный проект выдаёт ошибки при повторном запуске Обработка ошибки при не верном расширении
__________________
5
Помогаю в написании студенческих работ здесь. |
|
294 / 255 / 68
Регистрация: 18.06.2015
Сообщений: 570
|
||||||
13.02.2019, 09:16 | 2 | |||||
Не совсем понял конечной цели этого кода - добавить всех студентов в группу?
Зачем тогда выходите из процедуры в 28-й строке? При следующем нажатии цикл начинается заново, а такой студент уже есть, уникальный ключ не даст добавить второй раз того же студента в группу. Кто же ставит метку обработчика ошибки до выхода из цикла? И такие вещи лучше делать запросом, а не переором рекордсета. Добавлено через 11 минут А если вам нужно за раз добавить только одного студента, где проверка, что студент из текущей записи студентов уже существует в группе? "Проверять" с помощью попытки вставки и обработки ошибки также плохая практика. Если уж хотите сделать именно так (в учебных целях, как я понимаю), то после возникновения ошибки ее нужно обработать с помощью Resume, Resume Next или хотя бы Err.Clear Добавлено через 9 минут Типа вот так:
1
|
448 / 236 / 14
Регистрация: 29.10.2014
Сообщений: 954
|
|
13.02.2019, 09:25 | 3 |
это из какого набора? в предыдущ строках два With - я еще так не пробовал из соображен безопасности.
0
|
294 / 255 / 68
Регистрация: 18.06.2015
Сообщений: 570
|
|
13.02.2019, 09:33 | 4 |
rstGroupStud конечно. Вложенные With вполне допустимы, но их лучше избегать для лучшей читаемости программы, максимум короткие вставки на несколько строк, типа этой.
1
|
448 / 236 / 14
Регистрация: 29.10.2014
Сообщений: 954
|
|
13.02.2019, 10:21 | 5 |
0
|
Заблокирован
|
|
13.02.2019, 12:28 | 6 |
Soft17, с моей скромной точки зрения, у вас всё не правильно.
Нет индексов в таблицах (и уникальных в т.ч.) Нет схемы данных. И ещё: Группа объединяет некоторое кол-во студентов. Значит: в таблице "тбл_02_Студенты" должно быть поле связи с группой в которой студент учится на данный момент.
1
|
13.02.2019, 12:28 | |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь. Обработка ошибки при не существующем инклуде Обработка ошибки при разрыве связи Обработка ошибки при потере COM порта Обработка ошибки при вызове несуществующего макроса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |