|
|
|
| есть форма по сотрудникам, на ней все поля связанны с таблицей сотрудники и есть поле со списком для выбора ФИО сотрудника.
по умолчанию при старте форма грузится в режиме добавления новой записи
DoCmd ,,AcNew Rec
подразумевается что сотрудников с пустой фамилией не бывает поэтому на событии Form_BeforUpdate стоит проверка и при пустом поле с фамилией Cancel=True.
Если начать вводить информацию в новую запись после старта, после этого допустим пользователь передумал и постирал все в полях и ткнул в список для выбора сотрудников, возникает ошибка, в Debug вываливается на эту строчку Me.Bookmark = .Bookmark
кто может объяснить что происходит и как с этим справится?
я так думаю что нужно как то проверить если поле фамилии пустое то надо отменить всевозможные попытки базы сохранить эту запись (которые по умолчанию происходят), только не знаю какое свойство отследить и на какое событие это прицепить..... | |
|
| |
|
|
|
| Загляни в этот архив от Lukas по ссылке. http://hiprog.com/forum/files/5007-20090418133744.zip
Над подобной темой я и Санька уже давно бьемся. Пока не решили что и как. Загляни подробнее http://hiprog.com/forum/read.php?id_forum=1&id_theme=5007&page=1 Там множество всяких решений. Может понравятся. | |
|
| |
|
|
|
| похожу у меня чуть чуть другая проблема:( у меня ошибка 2001 и возникает она похоже события BeforeUpdate где я присваиваю Cancel=True при пустом значении | |
|
| |
|
73 Кб. |
|
| вот поглядите мой пример кто что подскажет? естественно все в коде "сотрудники" :) | |
|
| |
|
|
|
| Не, тут я ничем помочь не могу. Где таблицы? Я бы просто на таблицах сделал, поставил бы поле поиска в форме, а если есть подчиненная, то через связь все бы отображалось и там. И кодов бы никаких не было.
А все таки куда инфа вносится? Просто интересно. В скрытых элемнтах таблиц тоже не просматривается. | |
|
| |
|
|
|
| инфа в таблицах естественно только у них префиксы Usys | |
|
| |
|
|
|
|
Private Sub ПолеВыбораСотрудника_AfterUpdate()
If Me.Dirty Then Me.Undo: Me.Undo
...
|
Поля можно и не очищать вручную.
Еще пара советов:
1. После удаления записи обновляйте поле со списоком сотрудников, чтоб в нем не оставалось #Удалено!
2. В настройках VBA установите флажок "Обязательное объявление переменных" (чтоб в заголовке модулей присутствовало Option Explicit). Вы, вроде, ничего не забыли, но так - надежнее. | |
|
| |
|
|
|
| спасибо! щас попробую:)
1. А какое поле? обновлять поле со списком? я вроде не видел в своей форме #Удалено (расскажите как получается)?... Хотя раньше встречалось:)
2. спасибо за совет:) | |
|
| |
|
|
|
|
я вроде не видел в своей форме #Удалено (расскажите как получается)?
|
Удалите любую запись и сразу откройте список.
ЗЫ. Me.Undo в вашем случае можно выполнить 1 раз. | |
|
| |
|
|
|
| ЗЫ. Me.Undo в вашем случае можно выполнить 1 раз. - подскажите чем мне это грозит???
не понял про "...Поля можно и не очищать вручную..." ???
поя\сните пожалуйста эти два момента:) (хочется просто вычитить все сразу от ошибок возможных, поэтому так чщательно копаюсь в вроде бы простой формочке:):):))
про #удалено щас исправлю:) | |
|
| |
|
|
|
| еще разок про #удалено... что то у меня не появляется такой ошибки.. просто при открытии списка у меня обновляется источник строк и переопрашивается(обновляется) список, поэтому наверно у меня после удаления я не вижу такой ошибки! хотя конечно логично переопрашивать(обновлять) при удалении! | |
|
| |
|
|
|
| точнее обновление списка стоит на событие Got_focus... | |
|
| |