Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: ошибка при обработке Me.Bookmark=Bookmark
 
 автор: joka   (22.04.2009 в 16:30)   личное сообщение
 
 

есть форма по сотрудникам, на ней все поля связанны с таблицей сотрудники и есть поле со списком для выбора ФИО сотрудника.
по умолчанию при старте форма грузится в режиме добавления новой записи
DoCmd ,,AcNew Rec
подразумевается что сотрудников с пустой фамилией не бывает поэтому на событии Form_BeforUpdate стоит проверка и при пустом поле с фамилией Cancel=True.

Если начать вводить информацию в новую запись после старта, после этого допустим пользователь передумал и постирал все в полях и ткнул в список для выбора сотрудников, возникает ошибка, в Debug вываливается на эту строчку Me.Bookmark = .Bookmark

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

  Ответить  
 
 автор: Goblin   (22.04.2009 в 17:06)   личное сообщение
 
 

Загляни в этот архив от Lukas по ссылке. http://hiprog.com/forum/files/5007-20090418133744.zip
Над подобной темой я и Санька уже давно бьемся. Пока не решили что и как. Загляни подробнее http://hiprog.com/forum/read.php?id_forum=1&id_theme=5007&page=1 Там множество всяких решений. Может понравятся.

  Ответить  
 
 автор: joka   (22.04.2009 в 17:41)   личное сообщение
 
 

похожу у меня чуть чуть другая проблема:( у меня ошибка 2001 и возникает она похоже события BeforeUpdate где я присваиваю Cancel=True при пустом значении

  Ответить  
 
 автор: joka   (22.04.2009 в 17:52)   личное сообщение
73 Кб.
 
 

вот поглядите мой пример кто что подскажет? естественно все в коде "сотрудники" :)

  Ответить  
 
 автор: Goblin   (22.04.2009 в 18:17)   личное сообщение
 
 

Не, тут я ничем помочь не могу. Где таблицы? Я бы просто на таблицах сделал, поставил бы поле поиска в форме, а если есть подчиненная, то через связь все бы отображалось и там. И кодов бы никаких не было.
А все таки куда инфа вносится? Просто интересно. В скрытых элемнтах таблиц тоже не просматривается.

  Ответить  
 
 автор: joka   (23.04.2009 в 10:43)   личное сообщение
 
 

инфа в таблицах естественно только у них префиксы Usys

  Ответить  
 
 автор: Анатолий (Киев)   (22.04.2009 в 18:29)   личное сообщение
 
 


Private Sub ПолеВыбораСотрудника_AfterUpdate()
 If Me.Dirty Then Me.Undo: Me.Undo
...


Поля можно и не очищать вручную.

Еще пара советов:
1. После удаления записи обновляйте поле со списоком сотрудников, чтоб в нем не оставалось #Удалено!
2. В настройках VBA установите флажок "Обязательное объявление переменных" (чтоб в заголовке модулей присутствовало Option Explicit). Вы, вроде, ничего не забыли, но так - надежнее.

  Ответить  
 
 автор: joka   (23.04.2009 в 10:42)   личное сообщение
 
 

спасибо! щас попробую:)
1. А какое поле? обновлять поле со списком? я вроде не видел в своей форме #Удалено (расскажите как получается)?... Хотя раньше встречалось:)
2. спасибо за совет:)

  Ответить  
 
 автор: Анатолий (Киев)   (23.04.2009 в 11:18)   личное сообщение
 
 


я вроде не видел в своей форме #Удалено (расскажите как получается)?


Удалите любую запись и сразу откройте список.

ЗЫ. Me.Undo в вашем случае можно выполнить 1 раз.

  Ответить  
 
 автор: joka   (23.04.2009 в 11:23)   личное сообщение
 
 

ЗЫ. Me.Undo в вашем случае можно выполнить 1 раз. - подскажите чем мне это грозит???

не понял про "...Поля можно и не очищать вручную..." ???

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

про #удалено щас исправлю:)

  Ответить  
 
 автор: joka   (23.04.2009 в 11:28)   личное сообщение
 
 

еще разок про #удалено... что то у меня не появляется такой ошибки.. просто при открытии списка у меня обновляется источник строк и переопрашивается(обновляется) список, поэтому наверно у меня после удаления я не вижу такой ошибки! хотя конечно логично переопрашивать(обновлять) при удалении!

  Ответить  
 
 автор: joka   (23.04.2009 в 11:30)   личное сообщение
 
 

точнее обновление списка стоит на событие Got_focus...

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList