|
|
|
| подскажите как бороться с такой ситуацией
есть таблица документы (id, тип документа, номер, дата выдачи)
дата выдачи поле типа дата
при заполнении информации если оператор попытался ввести некорректную дату (например он не знает дату выдачи полностью а занет только год) возникает ошибка и во все ячейки текущей записи (форма ленточная) проставляется #Удалено.
при перезагрузке формы видим, что все остается нормально (то есть в таблице документы занеслась запись с номером строки, типом документа и номером документа и пустым полем дата) и запись отображается в ячейках с пустой датой.
вопрос: как сделать "защиту от дурака", надо как то обновить форму? или поля? или надо сделать что то другое?
п.с. форма документы является подчиненной на основной форме. | |
|
| |
|
|
|
| Попробуйте recalc
хотя мигать всё равно будет. | |
|
| |
|
|
|
| recalc это для формы подчиненной или для основной? | |
|
| |
|
|
|
| да и на какое событие это прицепить???? | |
|
| |
|
|
|
| Можно для основной.
А собыие это вам выбрать надо.
это где то тута
при заполнении информации если оператор попытался ввести некорректную дату (например он не знает дату выдачи полностью а занет только год) возникает ошибка и во все ячейки текущей записи (форма ленточная) проставляется #Удалено
Можно после обновления поля, в которое вносятся даты.
_AfterUpdate() | |
|
| |
|
|
|
| попробовал для подчиненной (то есть для той с которой связана таблица документы) на событие after_update выставил Me.Requery вроде заработало. Recalc не попер, все равно было #Удалено... Может отработал бы если сделать для основной. | |
|
| |
|
|
|
|
|
а вообще известна природа этой ошибки? или это глюк access?
Щас вот попробовал, пишу дату некорректную (Requery убрал для экспериментов), Акцесс ругается и не отпускает с поля все нормуль, тогда я имитируя непонятливого оператора тупо стираю дату (ну вроде разозлился и решил дату уже не вводить) и вот тут во всех полях (а не только в том что дата), мой злобный оператор (до того как я поправил код) увидит #Удалено | |
|
| |
|
|
|
| кто генерит ошибку?
Вы сами? JET? событие формы?
кто не дает пользователю занести только год? маска ввода? | |
|
| |
|
|
|
| о как?
точно не я сам генерю ошибку. у меня база в mysql , но ругается не odbc драйвер а сам акцесс, год просто завести не пробовал. | |
|
| |
|
|
|
| никаких дополнительных ограничений нет, маски тоже нет
ошибка следующая
Введеное значение не подходит для данного поля
Например в числовое поле введен текст или число превышающее предел, заданный в свойстве рамер поля(Field Size)
может ещше дело в том что фОРМА ЛЕНТОЧНАЯ? | |
|
| |
|
|
|
|
| ясно что ничего не ясно... ладно главное есть вариант как победить! | |
|
| |
|
|
|
| вообще почитав ваши посты про даты, я бы посоветовал разделить дату на 3 поля, если не в таблице, то хотя бы "интерфейсно" использовав свободные поля. А при сохранении записи собирать дату из тех данных что ввел пользователь, добавляя недостающие данные значениями по умолчанию.
т.е. если ввели только год, то число будет 1 (или 15 или 30, как по вашей технологии правильнее) а месяц 1-й (или 6-й или 12-й) | |
|
| |
|
|
|
| спасибо за советы и участие:)
над такой технологией думал, в ней существует важная проблемма, после ввода даты по такой технологии
пусть допустим ввели только год и в базу занеслось 01.01.2009 (то есть добавили значения по умолчанию)
а как потом понять что вводил оператор только год? как отличить дату реально введеную 01.01.2009 от только введеного года 2009??? я не придумал как это решать... поэтому там где предусмотрено появление неполных дат вышел из положения только с помощью хранения даты в тексте... | |
|
| |
|
|
|
| как вариант.
Пользователь вводит данные в 3 поля (или в одно текстовое)
В базе сохранятся 2 поля
1-е дата собранная программой с участием дефолтовых значений
2-е текстовый вариант того что ввел пользователь | |
|
| |
|
|
|
| такой тоже вариант возможен, но тут два значения надо хранить, а я реализовал с одним, но по сути тоже самое, просто разбор в моем случае надо устраивать в запросах и т.п. | |
|
| |