powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Добавление в список
25 сообщений из 41, страница 1 из 2
Добавление в список
    #32536923
tim2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поле со списком "Телефон", маска ввода:
Код: plaintext
"8-("000") "000\- 0000 ; 1 ;_""
, в запросе-источнике списка поле отформатировано как:
Код: plaintext
Format([Телефон];"""8-(""@@@) @@@-@@@@") 
на событие Отсутствие в списке - процедура добавления в список. Открывается еще одна форма с уже заполненным полем "№ телефона".... вообщем много раз использованная схема.
Но в этот раз получаю сообщение, что введенный текст не соответствует ни одному из элементов списка. Может я чего с маской/форматом намудрил?
...
Рейтинг: 0 / 0
Добавление в список
    #32537089
Roma R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Response = acDataErrContinue
...
Рейтинг: 0 / 0
Добавление в список
    #32537185
tim2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И куда это вписать?
Точно такая же процедура, слово в слово, работает без всяких ошибок. Одно отличие - там речь идет об обычном текстовом поле, без всяких форматов и масок.
...
Рейтинг: 0 / 0
Добавление в список
    #32537197
tim2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыл добавить: в случае с телефоном, после сообщения об ошибке, новое значение в список не добавляется, но в таблице появляется.
Все-таки что-то в маске/формате дело, если убрать маску и формат и вводить телефон как 11-и значное число, то все работает.
...
Рейтинг: 0 / 0
Добавление в список
    #32537199
Roma R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Процедуру можно увидеть?
...
Рейтинг: 0 / 0
Добавление в список
    #32537208
Roma R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во втрой форма маска есть?
...
Рейтинг: 0 / 0
Добавление в список
    #32537260
tim2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Процедура:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
НетВСписке(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:
Код: plaintext
Response = НетВСписке("frmТелРедакт")
Событие Load формы frmТелРедакт:
Код: plaintext
1.
2.
3.
If Not IsNull(Me.OpenArgs) Then
 Me![Телефон] = Me.OpenArgs
Else
End If
В форме frmТелРедакт поле Телефон имеет такую же маску(но формат не указан).
...
Рейтинг: 0 / 0
Добавление в список
    #32537302
Kelme
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Глупый вопрос:
LimitToList равно No?
...
Рейтинг: 0 / 0
Добавление в список
    #32537317
Roma R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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)
...
Рейтинг: 0 / 0
Добавление в список
    #32537318
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Kelme

так вроде если NO то не будет случаться событие отсутствие в списке?
или я не прав?
...
Рейтинг: 0 / 0
Добавление в список
    #32537334
tim2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Kelme
Глупый ответ: равно Yes во всех случаях
...
Рейтинг: 0 / 0
Добавление в список
    #32537335
Kelme
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор
2 Kelme

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


ну я же предупреждал, что глупый вопрос :)
...
Рейтинг: 0 / 0
Добавление в список
    #32537354
Kelme
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При данной маске формата ctlList.Text отличается от NewData
ctlList.Text выглядит след. образом 8-(345) 343-9999
a NewData 3453439999

Roma R прав.
...
Рейтинг: 0 / 0
Добавление в список
    #32537359
Roma R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поправка
НетВСписке(strForm As String, NewData As String) As Integer
...
Рейтинг: 0 / 0
Добавление в список
    #32537428
tim2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А нельзя как-нибудь не менять процедуру? В смысле - добавлять аргумент NewData. Она во многих местах завязана, придется добавлять проверку откуда вызвана....
...
Рейтинг: 0 / 0
Добавление в список
    #32537442
Kelme
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда надо изменить "8-("000") "000\-0000;1;_"" на
"8-("000") "000\-0000;0;_""

правда номера тогда будут хранится в виде: 8 - (095) 123456
...
Рейтинг: 0 / 0
Добавление в список
    #32537447
Kelme
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообщем они будут хранится в формате маски ввода, со всеми скобками и тире.
И соответсвенно не надо будет их форматировать для вывода с комбобоксе.
...
Рейтинг: 0 / 0
Добавление в список
    #32537460
tim2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Способ Rom-ы вызывает то же сообщение, правда теперь все приведено к виду 3453439999
...
Рейтинг: 0 / 0
Добавление в список
    #32537492
tim2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Kelme
Вообще мрак! Сообщение осталось, добавилось искажение номеров в выпадающем списке - скобки перескочили на другое место. Может все-таки формат все портит?
...
Рейтинг: 0 / 0
Добавление в список
    #32537495
Kelme
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй убери формат в запросе
...
Рейтинг: 0 / 0
Добавление в список
    #32537524
tim2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо!!!
Т.к. аргумент 0 в маске сохраняет номер телефона "как есть", то формат только мешал и все коверкал.
...
Рейтинг: 0 / 0
Добавление в список
    #32538082
Kelme
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
удачи ;)
...
Рейтинг: 0 / 0
Добавление в список
    #32540096
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А у меня не получилось избежать сообщения об ошибке, хотя вроде все повторил как здесь советывали.
В таблице у поля нет ни маски, ни формата. Поле со списком в форме:
маска - \("000") "000\-0000;1;_ (мне надо сохранять только цифры).
формат присоединенного поля в источнике списка - Format([Телефон],"(@@@) @@@-@@@@")
При отсутствии значения в процедуру(которая здесь была приведена) передаю значение NewData (равно 0951234567). В форме, где происходит добавление, поле Телефон имеет опять маску \("000") "000\-0000;1;_ и новый номер выглядит как (095) 123-4567. А дальше, при попытке сохранить запись - сообщение об ошибке, но запись в таблице сохраняется .
Пробовал добавить в запрос-источник в качестве присоединенного поля номер без формата, задав ему ширину=0, ничего не изменилось.
А вот если вообще убрать отформатированное поле из источника, то все работает, но выпадающий список содержит 10-и значные числа в неудобочитаемом виде.
...
Рейтинг: 0 / 0
Добавление в список
    #32540960
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну помогите кто-нибудь!!!
...
Рейтинг: 0 / 0
Добавление в список
    #32541002
Roma R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Могу предложить немного подправить функцию, без изменения вызова в других случаях

НетВСписке(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)
...
Рейтинг: 0 / 0
25 сообщений из 41, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Добавление в список
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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