Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обработка ошибок 
:(
    Опции темы
Yashustik
Дата 26.8.2008, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 29.5.2007

Репутация: нет
Всего: нет



Помогите решить такую проблему: у меня есть таблица с обязательными для ввода полями, при попытке закрытия таблицы Access ругается если хотя бы одно из этих полей не заполнено. Как можно обработать эту ошибку, чтобы в корректной форме пользователь мог отказать от сохренения такой записи.
PM MAIL   Вверх
Akina
Дата 26.8.2008, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



А почему пользователю вообще дозволено напрямую работать с таблицами??? для этого существуют формы ввода - связанные или свободные.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Yashustik
Дата 26.8.2008, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 29.5.2007

Репутация: нет
Всего: нет



Так он и работает через ленточную форму, данных вводить надо много, в какой то момент он передумал заводить все доконца и решил закрыть форму, вот тут то ошибки и побежали, пользователь пугается, нельзя ли его более корректно предупредить что данные не сохранятся(точнее только последняя запись)

Это сообщение отредактировал(а) Yashustik - 26.8.2008, 15:11
PM MAIL   Вверх
Akina
Дата 26.8.2008, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



А вы используйте Default Value для каждого поля - никаких предупреждений и не будет. А если дефолтные значения будут формально валидны, но смысловО нелогичны - выслеживание таких "недоделанных" записей, случайно попавших в таблицы, станет очень простым делом. Их можно будет и исключить из обработки, и предлагать на редактирование при следующем открытии формы ввода.

Хотя по-хорошему надо бы оторвать форму от таблицы и записывать туда сразу всю запись со всеми полями. Программненько. По кнопочке. А заодно проверять, чего там оператор навносил...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Yashustik
Дата 26.8.2008, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 29.5.2007

Репутация: нет
Всего: нет



Попробовала везде по умолчанию забить нули, но ошибка все равно вываливается...:(
PM MAIL   Вверх
Yashustik
Дата 26.8.2008, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 29.5.2007

Репутация: нет
Всего: нет



Попробовала сделать так, но даже после закрытия формы сообщение об ошибке все равно вылетает :(
Код

Private Sub Form_Error(DataErr As Integer, Response As Integer)
Dim strMsg As String
DoCmd.SetWarnings False
    strMsg = "Заполнены не все обязательные поля!"
    strMsg = strMsg & " Нажмите ДА для редактирования или НЕТ для отмены изменений и закрытия формы."
    If MsgBox(strMsg, vbQuestion + vbYesNo, "Редактировать данные?") = vbYes Then
        'do nothing
    Else
        DoCmd.RunCommand acCmdUndo
        DoCmd.Close
        
    End If
    DoCmd.SetWarnings True
End Sub

PM MAIL   Вверх
bopoha
Дата 26.8.2008, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

Репутация: 21
Всего: 21



А как именно аксес рукгается?

Цитата(Yashustik @  26.8.2008,  16:02 Найти цитируемый пост)
Попробовала везде по умолчанию забить нули, но ошибка все равно вываливается...:( 


Есть подозрение, что не на обязательное поле ругается. 
Возможные шаги для решения:
1. Обратите внимание на текстовые поля. Например, Null вводить нельзя, а он естественно вводится. Или нельзя вводить пустые значения.
2. При этом еще проверте по структуре таблицы условия на значения полей.
3. Найдите это поле (или несколько), при не заполнении которого, происходит ошибка.
PM MAIL WWW ICQ Skype GTalk   Вверх
Yashustik
Дата 26.8.2008, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 29.5.2007

Репутация: нет
Всего: нет



Мне в принципе не важно на что ругается, главное, чтобы была возможность у пользователя несохранять недоделанную по каким бы то причинам запись, откатиться назад, либо просто выйти без сохранения.
PM MAIL   Вверх
Akina
Дата 26.8.2008, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(Yashustik @  26.8.2008,  17:35 Найти цитируемый пост)
даже после закрытия формы сообщение об ошибке все равно вылетает 

А сообщение об ошибке не связано с формой, оно генерируется подсистемой контроля целостности данных.

Цитата(Yashustik @  26.8.2008,  17:02 Найти цитируемый пост)
Попробовала везде по умолчанию забить нули, но ошибка все равно вываливается

Значит, где-то что-то пропускаете. Забивайте не тупые нули, а осмысленные формально валидные значения. А то ноль, скажем, в дате, ну никак контроля не пройдет...

Добавлено через 52 секунды
Цитата(Yashustik @  26.8.2008,  17:54 Найти цитируемый пост)
несохранять недоделанную по каким бы то причинам запись, откатиться назад, либо просто выйти без сохранения. 

Код

Me.Undo



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
bopoha
Дата 26.8.2008, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

Репутация: 21
Всего: 21



Нужно же понять почему и где.
Попробуйте обработать ошибку (штатными средствами VB - On error) в события до вставки и до обновления (только я не уверен, что это может помочь).
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Access | Следующая тема »


 




[ Время генерации скрипта: 0.1074 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.