Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как подавить NotInList / 25 сообщений из 25, страница 1 из 1
14.08.2003, 11:19
    #32236263
Latuk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подавить NotInList
Есть у меня справочник работников
ID int , Name varchar(30)
На форме поле со списком.
Иногда удобней вместо фамилии набрать код работника.
В обработчике отсутствия в списке пишу
Private Sub cboRBT_ID_B_NotInList(NewData As String, Response As Integer)
If IsNumeric(NewData) Then
cboRBT_ID_B = CLng(NewData)
Response = acDataErrAdded
End If

Вроде Response = acDataErrAdded должно подавлять собщение о отсутствии в списке (так и происходит в класическом случае от Геца когда в список действительно добавляется значение соотв введенному)
но в моем случае соответствие не добавляется и сообщение появляется,
хотя содержание поля уже то которое нужно.

Как его подавить ?
...
Рейтинг: 0 / 0
14.08.2003, 11:23
    #32236272
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подавить NotInList
On Error Resume Next
...
Рейтинг: 0 / 0
14.08.2003, 11:25
    #32236276
Артист
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подавить NotInList
мож CLng(NewData) он опять как NewData считает?
...
Рейтинг: 0 / 0
14.08.2003, 11:27
    #32236281
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подавить NotInList
Ой... :)
...
Рейтинг: 0 / 0
14.08.2003, 11:54
    #32236336
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подавить NotInList
2Latuk

Правильно выводит. Значение (цифровое) отсуствует в списке (текстовом)
Response Будет работать если ты действительно исправишь ситуацию.
Тебе вероятно прийдеться по ID Искать текст и впендиривать его в поле-со-списком и затем Response = acDataErrAdded, что подавит сообщение.
Таким образом - оператор, вбив цифру, получит в списке Фамилию рабочего
==
Еще одна мысля - менять ширину столбцов списка (сам не пробовал), ведь NonList работает с первой не нулевой колонкой. Т.е. указть первой колнке (ID) 2см, а второй (ФИО) 0. Когда будут вводит ФИО - менять. Но это, возможно, только мои фантазии :) и первый вариант мне симпатичней
А еще можно сделать два поля со списком (вренее просто поле и поле-с-списком): ID и ФИО - пусть тыкаю куда хотят, а если их синхронизировать... :)
...
Рейтинг: 0 / 0
14.08.2003, 12:18
    #32236386
Latuk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подавить NotInList
Может плохо объяснил(кроме Senin Viktor)

Классический случай
Private Sub cboADR_ID_Otkuda_B_NotInList(NewData As String, Response As Integer)
'Когда значения нет в списке
'Добавляю значение в справочник
CNN.Execute "ADR_upd_P '" & NewData & "'"
'устанавливаю значение контрола в соответствии с вновь добавленной строкой справочника
cboADR_ID_Otkuda_B = DLookup("IDVal", "GetNewID")
'Подавляю сообщение отсутств в списке
Response = acDataErrAdded
'Обновляю источник строк
cboADR_ID_Otkuda_B.Requery
End Sub

Мой случай
Набираю в поле со списком работника вместо имени(Иванов) код (234)
Естественно он в списке отсутствует
Private Sub cboRBT_ID_B_NotInList(NewData As String, Response As Integer)
'это код или просто ошибка
If IsNumeric(NewData) Then
'присваиваю код контролу
cboRBT_ID_B = CLng(NewData)
'Подавляю сообщение отсутств в списке(вернее пытаюсь)
Response = acDataErrAdded
End If

Но видимо из-за того что NewData остается "234"
сообщение об отсутствии в списке выводится , хотя контрол уже имеет
нужное мне значение

2Senin Viktor
>по ID Искать текст и впендиривать его в поле-со-списком
Как получить доступ к вводимому тексту ?
...
Рейтинг: 0 / 0
14.08.2003, 12:25
    #32236397
eGorka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подавить NotInList
me.cboRBT_ID_B.undo
me.cboRBT_ID_B = CLng(NewData)
Response = acDataErrContinue
...
Рейтинг: 0 / 0
14.08.2003, 12:36
    #32236418
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подавить NotInList
2Latuk
>Как получить доступ к вводимому тексту

вместо cboRBT_ID_B = CLng(NewData)
надо написать что-то что возратить текст (ФИО) по ID
Например,использовать DlookUp
Код: plaintext
1.
cboRBT_ID_B =DlookUp( "Поле_в_Таблице_С_ФИО_Рабочего" ,  "ИмяТаблицыСФИО" ,  "ИмяПоляID_В_Таблице" =& CLng(NewData) )


Если у тебя MS SQL - то лучше сделать ХП. А если mdb - То лучше запрос с парметром (надеюсь про тормознутость в сети функций по подмножеству на слышен)
Не забыдь предусмортеть обработку ошибки (ввели не существующий номер)

Если использовать предложение eGorka, то просто поле очиститься и ничего не будет выбрано :(
...
Рейтинг: 0 / 0
14.08.2003, 12:44
    #32236440
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подавить NotInList
Маленькая очяпятка. исправляюсь:
Код: plaintext
1.
cboRBT_ID_B =DlookUp( "Поле_в_Таблице_С_ФИО_Рабочего" ,  "ИмяТаблицыСФИО" ,  "ИмяПоляID_В_Таблице="  & CLng(NewData) )
...
Рейтинг: 0 / 0
14.08.2003, 13:02
    #32236494
Latuk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подавить NotInList
Получить Name по ID легко благо оно уже в списке находится (скорость тут не важна.Сначала программа работает , потом работает хорошо)

Но вот как это значение запихнуть в поле
cboRBT_ID_B="НекоеИмя" не катит т.к. поле привязано к числовому ID
а надо поменять введенный текст что-то типа cboRBT_ID_B.Column(1)="НекоеИмя" (только не так конечно)
...
Рейтинг: 0 / 0
14.08.2003, 13:07
    #32236506
Latuk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подавить NotInList
2 eGorka
undo
попробывал результат точно такой же
содержание контрола то что нужно.
Сообщение не подавляется.
...
Рейтинг: 0 / 0
14.08.2003, 13:14
    #32236519
Latuk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подавить NotInList
Заменил acDataErrAdded (значит 2) на 0
сообщение подавилось.
только фокус остался в томже поле.

Какие там еще значения Response (с расшифровкой значения) могут быть
ато у меня Help зараза ничего не выдает
...
Рейтинг: 0 / 0
14.08.2003, 13:21
    #32236532
incold
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подавить NotInList
If IsNumeric(NewData) Then
Me.cboRBT_ID_B.Text = DLookup(.....)
Response = acDataErrContinue
End If
...
Рейтинг: 0 / 0
14.08.2003, 13:21
    #32236533
eGorka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подавить NotInList
Response = acDataErrContinue !!!
acDataErrAdded - предпологает что введенное значение появилось в списке
acDataErrContinue - подавляет ошибку
> то просто поле очиститься и ничего не будет выбрано :(
Если есть значение с указанным ID - будет(может еще и покажет в раскрывшемся списке), а проверочку на существующий ID конечно надо бы...
...
Рейтинг: 0 / 0
14.08.2003, 13:22
    #32236537
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подавить NotInList
>Какие там еще значения Response (с расшифровкой значения) могут быть

acDataErrAdded = 2
acDataErrContinue = 0
acDataErrDisplay = 1

Блин, толко щас до шло: твой пример должен работать
м.б. действительно попробовать cboRBT_ID_B.Column( 0 ) = CLng(NewData) ?
Так же попробуй сделать cboRBT_ID_B.Requery после присваиванаия (только попробуй сперва на своем варианте - а вдруг... :)
...
Рейтинг: 0 / 0
14.08.2003, 14:09
    #32236627
Latuk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подавить NotInList
Dim SaveRbt As Long
If IsNumeric(NewData) Then
SaveRbt = cboRBT_ID_B
cboRBT_ID_B = CLng(NewData)
If Nz(cboRBT_ID_B.Column(1), "") = "" Then 'Вот сделал проверку
cboRBT_ID_B = SaveRbt
Else
Response = acDataErrContinue
SendKeys "{ENTER}"
End If
End If

Все вроде работает , но после ввода номера
раскрывается список и фокус остается в поле
Как сделать ,чтоб реакция была такая же как после ввода имени
т.е. фокус перескакивал на сл поле
Ато SendKeys "{ENTER}" както режет глаз.
...
Рейтинг: 0 / 0
14.08.2003, 14:23
    #32236660
--------------
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подавить NotInList
Убрать "только из списка".
По выходу поставить свою проверку.
...
Рейтинг: 0 / 0
14.08.2003, 16:26
    #32236901
Latuk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подавить NotInList
>Убрать "только из списка".
А ты пробывал?
Лично мне акес говорит что этого сделать нельзя ,
т.к. срисоедененное поле не отображается.
...
Рейтинг: 0 / 0
14.08.2003, 17:30
    #32237014
Как подавить NotInList
Можно повесить проверку на нажатие клавиш.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Private Sub lst_KeyDown(KeyCode As Integer, Shift As Integer)
    Select Case KeyCode
    Case vbKeyReturn, vbKeyTab ' добавить сюда все клавиши
        If IsNumeric(lst.Text) Then
            lst.Value = CLng(lst.Text)
            KeyCode = vbKeyTab
        End If
    End Select
End Sub


Но такое решение не полностью избавляет от NotInList, осталось переход к следующему полю с помощью мыши. :-(
...
Рейтинг: 0 / 0
14.08.2003, 19:05
    #32237171
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подавить NotInList
2Latuk

cboRBT_ID_B.Requery пробовал?
У меня он везде напихан , поэтому и забыл: эффект Copy&Paste :(
...
Рейтинг: 0 / 0
14.08.2003, 21:28
    #32237227
Latuk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подавить NotInList
>cboRBT_ID_B.Requery пробовал?
Код от 14:09 полностью рабочий
просто мне не нравятся изврачения типа SendKeys "{ESC}" вместо undo
Вот я и думал может можно также заменить SendKeys "{ENTER}"

А cboRBT_ID_B.Requery тут совсем не к месту
Зачем набор заново с сервера тащить если он и так актуальный.
...
Рейтинг: 0 / 0
16.08.2003, 17:52
    #32238289
Haker
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подавить NotInList
А я откуда знаю, спроси у черта, может он поможет !
...
Рейтинг: 0 / 0
16.08.2003, 17:53
    #32238290
Haker
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подавить NotInList
А я откуда знаю, спроси у черта, может он поможет !
...
Рейтинг: 0 / 0
16.08.2003, 19:40
    #32238307
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подавить NotInList
если ты набираешь вместо фио работника его номер
т.е. фио уже есть в списке
надо
Response = acDataErrContinue

вместо

Response = acDataErrAdded
...
Рейтинг: 0 / 0
16.08.2003, 22:55
    #32238341
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подавить NotInList
прошу прошщение ...
не внимательно прочитал..
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как подавить NotInList / 25 сообщений из 25, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]