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

Форум: MS ACCESS

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

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

 
 

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

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

тема: #Удалено
 
 автор: joka   (26.05.2009 в 10:15)   личное сообщение
 
 

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

вопрос: как сделать "защиту от дурака", надо как то обновить форму? или поля? или надо сделать что то другое?

п.с. форма документы является подчиненной на основной форме.

  Ответить  
 
 автор: час   (26.05.2009 в 10:16)   личное сообщение
 
 

Попробуйте recalc
хотя мигать всё равно будет.

  Ответить  
 
 автор: joka   (26.05.2009 в 12:13)   личное сообщение
 
 

recalc это для формы подчиненной или для основной?

  Ответить  
 
 автор: joka   (26.05.2009 в 12:22)   личное сообщение
 
 

да и на какое событие это прицепить????

  Ответить  
 
 автор: час   (26.05.2009 в 12:33)   личное сообщение
 
 

Можно для основной.
А собыие это вам выбрать надо.

это где то тута
при заполнении информации если оператор попытался ввести некорректную дату (например он не знает дату выдачи полностью а занет только год) возникает ошибка и во все ячейки текущей записи (форма ленточная) проставляется #Удалено

Можно после обновления поля, в которое вносятся даты.

_AfterUpdate()

  Ответить  
 
 автор: joka   (26.05.2009 в 12:38)   личное сообщение
 
 

попробовал для подчиненной (то есть для той с которой связана таблица документы) на событие after_update выставил Me.Requery вроде заработало. Recalc не попер, все равно было #Удалено... Может отработал бы если сделать для основной.

  Ответить  
 
 автор: час   (26.05.2009 в 12:41)   личное сообщение
 
 

  Ответить  
 
 автор: joka   (26.05.2009 в 12:44)   личное сообщение
 
 


а вообще известна природа этой ошибки? или это глюк access?
Щас вот попробовал, пишу дату некорректную (Requery убрал для экспериментов), Акцесс ругается и не отпускает с поля все нормуль, тогда я имитируя непонятливого оператора тупо стираю дату (ну вроде разозлился и решил дату уже не вводить) и вот тут во всех полях (а не только в том что дата), мой злобный оператор (до того как я поправил код) увидит #Удалено

  Ответить  
 
 автор: osmor   (26.05.2009 в 12:49)   личное сообщение
 
 

кто генерит ошибку?
Вы сами? JET? событие формы?
кто не дает пользователю занести только год? маска ввода?

  Ответить  
 
 автор: joka   (26.05.2009 в 12:51)   личное сообщение
 
 

о как?
точно не я сам генерю ошибку. у меня база в mysql , но ругается не odbc драйвер а сам акцесс, год просто завести не пробовал.

  Ответить  
 
 автор: joka   (26.05.2009 в 12:55)   личное сообщение
 
 

никаких дополнительных ограничений нет, маски тоже нет
ошибка следующая

Введеное значение не подходит для данного поля
Например в числовое поле введен текст или число превышающее предел, заданный в свойстве рамер поля(Field Size)


может ещше дело в том что фОРМА ЛЕНТОЧНАЯ?

  Ответить  
 
 автор: час   (26.05.2009 в 14:29)   личное сообщение
 
 

#Удалено
это connection раконективается- получаеся
И приложение от базы отключается
или посто запись удаляется

  Ответить  
 
 автор: joka   (26.05.2009 в 18:12)   личное сообщение
 
 

ясно что ничего не ясно... ладно главное есть вариант как победить!

  Ответить  
 
 автор: osmor   (26.05.2009 в 18:20)   личное сообщение
 
 

вообще почитав ваши посты про даты, я бы посоветовал разделить дату на 3 поля, если не в таблице, то хотя бы "интерфейсно" использовав свободные поля. А при сохранении записи собирать дату из тех данных что ввел пользователь, добавляя недостающие данные значениями по умолчанию.
т.е. если ввели только год, то число будет 1 (или 15 или 30, как по вашей технологии правильнее) а месяц 1-й (или 6-й или 12-й)

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

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

  Ответить  
 
 автор: osmor   (27.05.2009 в 12:17)   личное сообщение
 
 

как вариант.
Пользователь вводит данные в 3 поля (или в одно текстовое)
В базе сохранятся 2 поля
1-е дата собранная программой с участием дефолтовых значений
2-е текстовый вариант того что ввел пользователь

  Ответить  
 
 автор: joka   (27.05.2009 в 14:54)   личное сообщение
 
 

такой тоже вариант возможен, но тут два значения надо хранить, а я реализовал с одним, но по сути тоже самое, просто разбор в моем случае надо устраивать в запросах и т.п.

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