информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Атака на InternetГде водятся OGRы
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / beginners
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Господа, будьте снисходительны, не бросайтесь сразу штрафовать за, как вам кажется, глупые вопросы - beginners на то и beginners.
Спасибо! Заработало. Всё дело в последних двух строчках было. С ними даже без err.clear работает. 15.03.11 05:43  Число просмотров: 10385
Автор: Vedrus <Serokhvostov Anton> Статус: Member
Отредактировано 15.03.11 05:58  Количество правок: 1
<"чистая" ссылка>
И ещё один маленький вопрос... После всех этих манипуляций список открытым становится, можно ли его как-то закрыть, чтобы каждый раз <ESC> не жать? Я нашёл в combobox'е свойство Dropdown, но оно только на раскрытие работает, а присваивать ему логические значения, увы, нельзя.
<beginners>
[MS Access, VBA] Как отключить предупреждение об отсутствии в списке? 12.03.11 14:57  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
Отредактировано 12.03.11 14:57  Количество правок: 1
<"чистая" ссылка>
Ситуация следующая. У меня на форме стоит combobox, в который можно вводить только те значения, которые есть в его списке (список формируется из таблицы). Я добавил следующую фичу: если введено значение, которое отсутствует в списке, то выдаётся диалог с предложением добавить это значение в список. В случае согласия я выполняю запрос на добавление и делаю requery, т.о. добавляю «нелегальный» элемент.

Всё работает, но после того как элемент уже добавлен, выпадает сообщение: «Введенный текст не соответствует ни одному из элементов списка», хотя соответствующая запись уже присутствует. Когда я закрываю это сообщение и «ухожу с текущей записи», то жалоб больше не поступает. Как отключить это предупреждение?
При этом не перезапрашиваются данные для выпадающего... 13.03.11 04:29  
Автор: Den <Denis> Статус: The Elderman
<"чистая" ссылка>
> Ситуация следующая. У меня на форме стоит combobox, в
> который можно вводить только те значения, которые есть в
> его списке (список формируется из таблицы). Я добавил
> следующую фичу: если введено значение, которое отсутствует
> в списке, то выдаётся диалог с предложением добавить это
> значение в список. В случае согласия я выполняю запрос на
> добавление и делаю requery, т.о. добавляю «нелегальный»
> элемент.

При этом не перезапрашиваются данные для выпадающего списка.

> Всё работает, но после того как элемент уже добавлен,
> выпадает сообщение: «Введенный текст не соответствует ни
> одному из элементов списка», хотя соответствующая запись
> уже присутствует. Когда я закрываю это сообщение и «ухожу с
> текущей записи», то жалоб больше не поступает. Как
> отключить это предупреждение?

Попробуй переприсвоить свойство RowSource после выполнения запроса на добавление нового значения.
Не понял, о чём вы? Я добавляю новое значение в таблицу, из... 14.03.11 05:14  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
Отредактировано 14.03.11 05:15  Количество правок: 1
<"чистая" ссылка>
> При этом не перезапрашиваются данные для выпадающего
> списка.
Не понял, о чём вы? Я добавляю новое значение в таблицу, из которой выпадающий список берёт данные. После этого делаю requery выпадающему списку.

> Попробуй переприсвоить свойство RowSource после выполнения
> запроса на добавление нового значения.
Написал после requery «action.RowSource = action.RowSource» Но какой в этом смысл? Запрос-то у меня не меняется, он всегда один. После requery новое значение присутствует как в таблице, так и в списке, проблема именно только в этом окне.

Такое ощущение, что Access «принимает решение вывести это окно» ещё до того, как я проделал все свои вышеописанные махинации, и его уже не волнует, есть в списке такое значение или нет – он в любом случае выводит это окно.

Но значение в списке уже точно есть, п.ч. если ввести несуществующее значение и нажать <enter>, то выведется это сообщение. При повторных нажатиях оно также будет выводиться. А у меня оно выводится только в первый раз, а потом не выводится, потому что оно уже есть в списке.

На одном из форумов я нашёл обсуждение похожей темы, но там решение так и не было представлено. Там один человек предложил «обработать ошибку». Я попытался последовать этому совету, но так и не нашёл событие, в котором эта ошибка возникает. Я почти во всех событиях combobox’а поставил такие строки:
On Error GoTo Err_action_BeforeUpdate
Err_action_BeforeUpdate:

---
Но сообщение по-прежнему вылетает.
Посмотрел как я это делал в своих старых проектах. 14.03.11 10:57  
Автор: Den <Denis> Статус: The Elderman
<"чистая" ссылка>
Посмотрел как я это делал в своих старых проектах.
В самом начале обработчика события NotInList достаточно поставить Err.Clear
не помогает ((( 14.03.11 15:05  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
Отредактировано 14.03.11 15:22  Количество правок: 2
<"чистая" ссылка>
Поставил эту штуку абсолютно во все события выпадающего списка, но окно по прежнему вылетает. Такое ощущение, что обработчик этой ошибки находится вне пределов действия combobox'а. Я прогонял программу в пошаговой отладке. В начале и в конце события NotInList поставил err.clear. Даже когда отладчик доходит до последней строчки, этого окна ещё нет, но когда последний раз жмёшь F8 (когда курсор на end'е стоит), то вылетает это окно
есть еще пара ньюансов. 14.03.11 20:26  
Автор: Den <Denis> Статус: The Elderman
Отредактировано 14.03.11 20:29  Количество правок: 3
<"чистая" ссылка>
1. если bounded колонкой выпадающего списка является идентификатор значения, а не его описание, то и присваивать значению combobox (cmboxAction.Value) надо именно идентификатор добавленного значения.

2. посмотрел внимательнее своё решение... порядок обработки следующий::
Err.Clear
With Me.cmboxAction
  .Undo
  .Requery
  .Value = NewActionID
End With
Response = acDataErrAdded
Response = acDataErrContinue

---
Спасибо! Заработало. Всё дело в последних двух строчках было. С ними даже без err.clear работает. 15.03.11 05:43  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
Отредактировано 15.03.11 05:58  Количество правок: 1
<"чистая" ссылка>
И ещё один маленький вопрос... После всех этих манипуляций список открытым становится, можно ли его как-то закрыть, чтобы каждый раз <ESC> не жать? Я нашёл в combobox'е свойство Dropdown, но оно только на раскрытие работает, а присваивать ему логические значения, увы, нельзя.
переведи фокус на другой объект 15.03.11 11:33  
Автор: Den <Denis> Статус: The Elderman
<"чистая" ссылка>
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 1 s   Design: Vadim Derkach