|
|
|
Как подавить NotInList
|
|||
|---|---|---|---|
|
#18+
Есть у меня справочник работников 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 должно подавлять собщение о отсутствии в списке (так и происходит в класическом случае от Геца когда в список действительно добавляется значение соотв введенному) но в моем случае соответствие не добавляется и сообщение появляется, хотя содержание поля уже то которое нужно. Как его подавить ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2003, 11:19 |
|
||
|
Как подавить NotInList
|
|||
|---|---|---|---|
|
#18+
On Error Resume Next ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2003, 11:23 |
|
||
|
Как подавить NotInList
|
|||
|---|---|---|---|
|
#18+
мож CLng(NewData) он опять как NewData считает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2003, 11:25 |
|
||
|
Как подавить NotInList
|
|||
|---|---|---|---|
|
#18+
2Latuk Правильно выводит. Значение (цифровое) отсуствует в списке (текстовом) Response Будет работать если ты действительно исправишь ситуацию. Тебе вероятно прийдеться по ID Искать текст и впендиривать его в поле-со-списком и затем Response = acDataErrAdded, что подавит сообщение. Таким образом - оператор, вбив цифру, получит в списке Фамилию рабочего == Еще одна мысля - менять ширину столбцов списка (сам не пробовал), ведь NonList работает с первой не нулевой колонкой. Т.е. указть первой колнке (ID) 2см, а второй (ФИО) 0. Когда будут вводит ФИО - менять. Но это, возможно, только мои фантазии :) и первый вариант мне симпатичней А еще можно сделать два поля со списком (вренее просто поле и поле-с-списком): ID и ФИО - пусть тыкаю куда хотят, а если их синхронизировать... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2003, 11:54 |
|
||
|
Как подавить NotInList
|
|||
|---|---|---|---|
|
#18+
Может плохо объяснил(кроме 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 Искать текст и впендиривать его в поле-со-списком Как получить доступ к вводимому тексту ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2003, 12:18 |
|
||
|
Как подавить NotInList
|
|||
|---|---|---|---|
|
#18+
me.cboRBT_ID_B.undo me.cboRBT_ID_B = CLng(NewData) Response = acDataErrContinue ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2003, 12:25 |
|
||
|
Как подавить NotInList
|
|||
|---|---|---|---|
|
#18+
2Latuk >Как получить доступ к вводимому тексту вместо cboRBT_ID_B = CLng(NewData) надо написать что-то что возратить текст (ФИО) по ID Например,использовать DlookUp Код: plaintext 1. Если у тебя MS SQL - то лучше сделать ХП. А если mdb - То лучше запрос с парметром (надеюсь про тормознутость в сети функций по подмножеству на слышен) Не забыдь предусмортеть обработку ошибки (ввели не существующий номер) Если использовать предложение eGorka, то просто поле очиститься и ничего не будет выбрано :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2003, 12:36 |
|
||
|
Как подавить NotInList
|
|||
|---|---|---|---|
|
#18+
Маленькая очяпятка. исправляюсь: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2003, 12:44 |
|
||
|
Как подавить NotInList
|
|||
|---|---|---|---|
|
#18+
Получить Name по ID легко благо оно уже в списке находится (скорость тут не важна.Сначала программа работает , потом работает хорошо) Но вот как это значение запихнуть в поле cboRBT_ID_B="НекоеИмя" не катит т.к. поле привязано к числовому ID а надо поменять введенный текст что-то типа cboRBT_ID_B.Column(1)="НекоеИмя" (только не так конечно) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2003, 13:02 |
|
||
|
Как подавить NotInList
|
|||
|---|---|---|---|
|
#18+
2 eGorka undo попробывал результат точно такой же содержание контрола то что нужно. Сообщение не подавляется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2003, 13:07 |
|
||
|
Как подавить NotInList
|
|||
|---|---|---|---|
|
#18+
Заменил acDataErrAdded (значит 2) на 0 сообщение подавилось. только фокус остался в томже поле. Какие там еще значения Response (с расшифровкой значения) могут быть ато у меня Help зараза ничего не выдает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2003, 13:14 |
|
||
|
Как подавить NotInList
|
|||
|---|---|---|---|
|
#18+
If IsNumeric(NewData) Then Me.cboRBT_ID_B.Text = DLookup(.....) Response = acDataErrContinue End If ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2003, 13:21 |
|
||
|
Как подавить NotInList
|
|||
|---|---|---|---|
|
#18+
Response = acDataErrContinue !!! acDataErrAdded - предпологает что введенное значение появилось в списке acDataErrContinue - подавляет ошибку > то просто поле очиститься и ничего не будет выбрано :( Если есть значение с указанным ID - будет(может еще и покажет в раскрывшемся списке), а проверочку на существующий ID конечно надо бы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2003, 13:21 |
|
||
|
Как подавить NotInList
|
|||
|---|---|---|---|
|
#18+
>Какие там еще значения Response (с расшифровкой значения) могут быть acDataErrAdded = 2 acDataErrContinue = 0 acDataErrDisplay = 1 Блин, толко щас до шло: твой пример должен работать м.б. действительно попробовать cboRBT_ID_B.Column( 0 ) = CLng(NewData) ? Так же попробуй сделать cboRBT_ID_B.Requery после присваиванаия (только попробуй сперва на своем варианте - а вдруг... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2003, 13:22 |
|
||
|
Как подавить NotInList
|
|||
|---|---|---|---|
|
#18+
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}" както режет глаз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2003, 14:09 |
|
||
|
Как подавить NotInList
|
|||
|---|---|---|---|
|
#18+
Убрать "только из списка". По выходу поставить свою проверку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2003, 14:23 |
|
||
|
Как подавить NotInList
|
|||
|---|---|---|---|
|
#18+
>Убрать "только из списка". А ты пробывал? Лично мне акес говорит что этого сделать нельзя , т.к. срисоедененное поле не отображается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2003, 16:26 |
|
||
|
Как подавить NotInList
|
|||
|---|---|---|---|
|
#18+
Можно повесить проверку на нажатие клавиш. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Но такое решение не полностью избавляет от NotInList, осталось переход к следующему полю с помощью мыши. :-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2003, 17:30 |
|
||
|
Как подавить NotInList
|
|||
|---|---|---|---|
|
#18+
2Latuk cboRBT_ID_B.Requery пробовал? У меня он везде напихан , поэтому и забыл: эффект Copy&Paste :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2003, 19:05 |
|
||
|
Как подавить NotInList
|
|||
|---|---|---|---|
|
#18+
>cboRBT_ID_B.Requery пробовал? Код от 14:09 полностью рабочий просто мне не нравятся изврачения типа SendKeys "{ESC}" вместо undo Вот я и думал может можно также заменить SendKeys "{ENTER}" А cboRBT_ID_B.Requery тут совсем не к месту Зачем набор заново с сервера тащить если он и так актуальный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2003, 21:28 |
|
||
|
Как подавить NotInList
|
|||
|---|---|---|---|
|
#18+
А я откуда знаю, спроси у черта, может он поможет ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2003, 17:52 |
|
||
|
Как подавить NotInList
|
|||
|---|---|---|---|
|
#18+
А я откуда знаю, спроси у черта, может он поможет ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2003, 17:53 |
|
||
|
Как подавить NotInList
|
|||
|---|---|---|---|
|
#18+
если ты набираешь вместо фио работника его номер т.е. фио уже есть в списке надо Response = acDataErrContinue вместо Response = acDataErrAdded ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2003, 19:40 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32236263&tid=1679884]: |
0ms |
get settings: |
5ms |
get forum list: |
11ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
44ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 196ms |
| total: | 319ms |

| 0 / 0 |
