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

Форум: MS ACCESS

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

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

 
 

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

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

тема: Run time error 2105
 
 автор: lulukyan   (14.09.2011 в 20:45)   личное сообщение
 
 

Непонятно как испортилась работающая форма. Есть кнопка с кодом на OnClick

   DoCmd.GoToRecord Record:=acNewRec 


Нажатие стало ни с того ни с сего вызывать ошибку


Run time error 2105 You can't go to the specified record.


Причём recordsource просто таблица. Все свойства формы разрешающию модификацию данных установлены.

Заменяю вышеуказанную строчку кода на

 Set rs = Me.Recordset
 With rs
   .AddNew
   !Date = Now
   !SupplierID = 1
   .Update
 End With
 


Этот код работает только когда в форме находишься на последней записи. Иначе выдает ошибку


Run time error 3020. Update or CancelUpdate without AddNew or Edit


на следующей после AddNew строчке

  Ответить  
 
 автор: час   (15.09.2011 в 09:09)   личное сообщение
 
 

DoCmd.GoToRecord Record:=acNewRec

а зачем тут двоеточие и знак равенства?

  Ответить  
 
 автор: lulukyan   (15.09.2011 в 13:34)   личное сообщение
 
 

Это альтернативный способ записи команды с именованными параметрами. тоже самое что
DoCmd.GoToRecord , , acNewRec

Видимо ни у кого никаких идей не возникло, а жаль. Мои попытки решить проблему тоже пока безрезультатны. Сжатие БД не помогло. Создал пустую БД и импортировал все объекты из проблемной БД. При импортировании возникали ошибки на некоторых объектах, но проблемных объектов среди них не было. Результат по прежнему нулевой.

  Ответить  
 
 автор: osmor   (15.09.2011 в 14:25)   личное сообщение
 
 

ну все очень похоже на невозможность или запрет на добавление записей. либо из за прав или из-за свойств формы

  Ответить  
 
 автор: lulukyan   (15.09.2011 в 18:37)   личное сообщение
 
 

не так всё просто :-) я уже говорил что нужные свойства формы установлены и что она базируется на простой таблице. Других пользователей или форм использующих эту таблицу нет. Сама таблица правда связанная локально но думаю это не имеет значения. До этого это форма работала а потом без видимых причин перестала.
Да Ещё вот что. К уже цитированному коду добавил строку перехвата ошибки

On Error Resume Next
после этого кнопка с полученным кодом

 On Error Resume Next
 Set rs = Me.Recordset
 With rs
   .AddNew
   !Date = Now
   !SupplierID = 1
   !InvoiceIn = Nz(DMax("InvoiceIn", "ProductIn")) + 1 
   .Update
 End With


Стала срабатывать после двукратного нажатия

Кто нить может это как то объяснить?

  Ответить  
 
 автор: час   (15.09.2011 в 20:02)   личное сообщение
 
 

снести офис?

  Ответить  
 
 автор: lulukyan   (15.09.2011 в 20:36)   личное сообщение
 
 

в обоих(2003 и 2007) то же самое

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

а пошагово в отладке - где спотыкается?
val(DMax("InvoiceIn", "ProductIn")) + 1

  Ответить  
 
 автор: Дядя Федор   (16.09.2011 в 07:56)   личное сообщение
 
 

Nz(DMax("InvoiceIn", "ProductIn"),0)

  Ответить  
 
 автор: lulukyan   (17.09.2011 в 18:49)   личное сообщение
 
 

О чём это вы? Спотыкается на первой же строчке после AddNew. В данном случае
!Date = Now

Впрочем я уже обошёл эту проблемму. Просто хотелось бы на будущее понять истоки этой ошибки.

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