Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Добавление в список  [new]
tim2
Member

Откуда:
Сообщений: 430
Поле со списком "Телефон", маска ввода:
"8-("000") "000\-0000;1;_""
, в запросе-источнике списка поле отформатировано как:
Format([Телефон];"""8-(""@@@) @@@-@@@@") 
на событие Отсутствие в списке - процедура добавления в список. Открывается еще одна форма с уже заполненным полем "№ телефона".... вообщем много раз использованная схема.
Но в этот раз получаю сообщение, что введенный текст не соответствует ни одному из элементов списка. Может я чего с маской/форматом намудрил?
27 май 04, 15:12    [705270]     Ответить | Цитировать Сообщить модератору
 Re: Добавление в список  [new]
Roma R
Member

Откуда:
Сообщений: 457
Response = acDataErrContinue
27 май 04, 16:12    [705528]     Ответить | Цитировать Сообщить модератору
 Re: Добавление в список  [new]
tim2
Member

Откуда:
Сообщений: 430
И куда это вписать?
Точно такая же процедура, слово в слово, работает без всяких ошибок. Одно отличие - там речь идет об обычном текстовом поле, без всяких форматов и масок.
27 май 04, 16:43    [705682]     Ответить | Цитировать Сообщить модератору
 Re: Добавление в список  [new]
tim2
Member

Откуда:
Сообщений: 430
Забыл добавить: в случае с телефоном, после сообщения об ошибке, новое значение в список не добавляется, но в таблице появляется.
Все-таки что-то в маске/формате дело, если убрать маску и формат и вводить телефон как 11-и значное число, то все работает.
27 май 04, 16:49    [705705]     Ответить | Цитировать Сообщить модератору
 Re: Добавление в список  [new]
Roma R
Member

Откуда:
Сообщений: 457
Процедуру можно увидеть?
27 май 04, 16:49    [705707]     Ответить | Цитировать Сообщить модератору
 Re: Добавление в список  [new]
Roma R
Member

Откуда:
Сообщений: 457
Во втрой форма маска есть?
27 май 04, 16:51    [705723]     Ответить | Цитировать Сообщить модератору
 Re: Добавление в список  [new]
tim2
Member

Откуда:
Сообщений: 430
Процедура:
НетВСписке(strForm As String) As Integer
Dim ctlList As Control
Set ctlList = Screen.ActiveControl
If MsgBox("Значение отсутствует в списке. Добавить?", vbOKCancel) = vbOK Then
      NotInList = acDataErrAdded
      DoCmd.OpenForm strForm, , , , acAdd, acDialog, ctlList.Text
Else
      NotInList = acDataErrContinue
        ctlList.Undo
End If
Вызов ее по событию NotInList:
Response = НетВСписке("frmТелРедакт")
Событие Load формы frmТелРедакт:
If Not IsNull(Me.OpenArgs) Then
 Me![Телефон] = Me.OpenArgs
Else
End If
В форме frmТелРедакт поле Телефон имеет такую же маску(но формат не указан).
27 май 04, 17:12    [705809]     Ответить | Цитировать Сообщить модератору
 Re: Добавление в список  [new]
Kelme
Member

Откуда: Riga, Latvia
Сообщений: 1488
Глупый вопрос:
LimitToList равно No?
27 май 04, 17:26    [705867]     Ответить | Цитировать Сообщить модератору
 Re: Добавление в список  [new]
Roma R
Member

Откуда:
Сообщений: 457
ctlList.Text передает не значение поля, а отформатированное значение (c символами, добавляемыми Format).
Вам нужно использовать параметр процедуры NewData или преобразовать ctlList.Text, чтобы возвращался только номер

Предлагаю так

НетВСписке(NewData As String) As Integer
If MsgBox("Значение отсутствует в списке. Добавить?", vbOKCancel) = vbOK Then
NotInList = acDataErrAdded
DoCmd.OpenForm strForm, , , , acAdd, acDialog, NewData
Else
NotInList = acDataErrContinue
ctlList.Undo
End If

Response = НетВСписке(NewData)
27 май 04, 17:30    [705887]     Ответить | Цитировать Сообщить модератору
 Re: Добавление в список  [new]
АлексейК
Member

Откуда: http://www.msdatabase.ru , Moscow
Сообщений: 7683
2 Kelme

так вроде если NO то не будет случаться событие отсутствие в списке?
или я не прав?
27 май 04, 17:30    [705888]     Ответить | Цитировать Сообщить модератору
 Re: Добавление в список  [new]
tim2
Member

Откуда:
Сообщений: 430
2 Kelme
Глупый ответ: равно Yes во всех случаях
27 май 04, 17:33    [705906]     Ответить | Цитировать Сообщить модератору
 Re: Добавление в список  [new]
Kelme
Member

Откуда: Riga, Latvia
Сообщений: 1488
автор

2 Kelme

так вроде если NO то не будет случаться событие отсутствие в списке?
или я не прав?


ну я же предупреждал, что глупый вопрос :)
27 май 04, 17:33    [705907]     Ответить | Цитировать Сообщить модератору
 Re: Добавление в список  [new]
Kelme
Member

Откуда: Riga, Latvia
Сообщений: 1488
При данной маске формата ctlList.Text отличается от NewData
ctlList.Text выглядит след. образом 8-(345) 343-9999
a NewData 3453439999

Roma R прав.
27 май 04, 17:43    [705933]     Ответить | Цитировать Сообщить модератору
 Re: Добавление в список  [new]
Roma R
Member

Откуда:
Сообщений: 457
Поправка
НетВСписке(strForm As String, NewData As String) As Integer
27 май 04, 17:44    [705940]     Ответить | Цитировать Сообщить модератору
 Re: Добавление в список  [new]
tim2
Member

Откуда:
Сообщений: 430
А нельзя как-нибудь не менять процедуру? В смысле - добавлять аргумент NewData. Она во многих местах завязана, придется добавлять проверку откуда вызвана....
27 май 04, 18:15    [706043]     Ответить | Цитировать Сообщить модератору
 Re: Добавление в список  [new]
Kelme
Member

Откуда: Riga, Latvia
Сообщений: 1488
Тогда надо изменить "8-("000") "000\-0000;1;_"" на
"8-("000") "000\-0000;0;_""

правда номера тогда будут хранится в виде: 8 - (095) 123456
27 май 04, 18:21    [706061]     Ответить | Цитировать Сообщить модератору
 Re: Добавление в список  [new]
Kelme
Member

Откуда: Riga, Latvia
Сообщений: 1488
вообщем они будут хранится в формате маски ввода, со всеми скобками и тире.
И соответсвенно не надо будет их форматировать для вывода с комбобоксе.
27 май 04, 18:24    [706069]     Ответить | Цитировать Сообщить модератору
 Re: Добавление в список  [new]
tim2
Member

Откуда:
Сообщений: 430
Способ Rom-ы вызывает то же сообщение, правда теперь все приведено к виду 3453439999
27 май 04, 18:29    [706088]     Ответить | Цитировать Сообщить модератору
 Re: Добавление в список  [new]
tim2
Member

Откуда:
Сообщений: 430
2 Kelme
Вообще мрак! Сообщение осталось, добавилось искажение номеров в выпадающем списке - скобки перескочили на другое место. Может все-таки формат все портит?
27 май 04, 18:45    [706129]     Ответить | Цитировать Сообщить модератору
 Re: Добавление в список  [new]
Kelme
Member

Откуда: Riga, Latvia
Сообщений: 1488
Попробуй убери формат в запросе
27 май 04, 18:49    [706135]     Ответить | Цитировать Сообщить модератору
 Re: Добавление в список  [new]
tim2
Member

Откуда:
Сообщений: 430
Спасибо!!!
Т.к. аргумент 0 в маске сохраняет номер телефона "как есть", то формат только мешал и все коверкал.
27 май 04, 19:09    [706178]     Ответить | Цитировать Сообщить модератору
 Re: Добавление в список  [new]
Kelme
Member

Откуда: Riga, Latvia
Сообщений: 1488
удачи ;)
28 май 04, 10:21    [706951]     Ответить | Цитировать Сообщить модератору
 Re: Добавление в список  [new]
Benzin
Member

Откуда:
Сообщений: 523
А у меня не получилось избежать сообщения об ошибке, хотя вроде все повторил как здесь советывали.
В таблице у поля нет ни маски, ни формата. Поле со списком в форме:
маска - \("000") "000\-0000;1;_ (мне надо сохранять только цифры).
формат присоединенного поля в источнике списка - Format([Телефон],"(@@@) @@@-@@@@")
При отсутствии значения в процедуру(которая здесь была приведена) передаю значение NewData (равно 0951234567). В форме, где происходит добавление, поле Телефон имеет опять маску \("000") "000\-0000;1;_ и новый номер выглядит как (095) 123-4567. А дальше, при попытке сохранить запись - сообщение об ошибке, но запись в таблице сохраняется.
Пробовал добавить в запрос-источник в качестве присоединенного поля номер без формата, задав ему ширину=0, ничего не изменилось.
А вот если вообще убрать отформатированное поле из источника, то все работает, но выпадающий список содержит 10-и значные числа в неудобочитаемом виде.
30 май 04, 16:51    [709857]     Ответить | Цитировать Сообщить модератору
 Re: Добавление в список  [new]
Benzin
Member

Откуда:
Сообщений: 523
Ну помогите кто-нибудь!!!
31 май 04, 13:51    [711059]     Ответить | Цитировать Сообщить модератору
 Re: Добавление в список  [new]
Roma R
Member

Откуда:
Сообщений: 457
Могу предложить немного подправить функцию, без изменения вызова в других случаях

НетВСписке(strForm As String, Optional x) As Integer
Dim ctlList As Control
Set ctlList = Screen.ActiveControl

If IsMissing(x) Then x = ctlList.Text


If MsgBox("Значение отсутствует в списке. Добавить?", vbOKCancel) = vbOK Then
NotInList = acDataErrAdded
DoCmd.OpenForm strForm, , , , acAdd, acDialog, x
Else
NotInList = acDataErrContinue
ctlList.Undo
End If

Вызов

Response = НетВСписке("frmТелРедакт", NewData)
31 май 04, 14:07    [711119]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft Access Ответить