powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Добавление в список
41 сообщений из 41, показаны все 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
Добавление в список
    #32541058
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я сделал так (работает):

Combo0:
Format = оставил пустым
Input Mask = "8-("000") "000\-0000;1;_""
Source = SELECT Format(Phone,"""8-(""@@@) @@@-@@@@") AS Expr1 FROM Phone;

Private Sub Combo0_NotInList(NewData As String, Response As Integer)

If MsgBox("Phone not in list! Add?", vbOKCancel) = vbOK Then
CurrentDb.Execute "Insert into Phone (Phone) Values ('" & NewData & "')"

Me.Combo0.Undo
DoEvents
Me.Combo0.Requery
Me.Combo0 = Format(NewData, """8-(""@@@) @@@-@@@@")
Response = acDataErrContinue
SendKeys "{Enter}"

Else
Response = acDataErrContinue
Me.Combo0.Undo
End If

End Sub

Не использую дополнительную форму, если нкжно ввести новый номер, то зачем открывать форму раз уж он введен!?
...
Рейтинг: 0 / 0
Добавление в список
    #32541214
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Roma R:
Строка
Код: plaintext
If IsMissing(x) Then x = ctlList.Text
при передаче аргумента х, значение х не меняет. Так что вроде как она исключена. Попробывал изменить ее на
Код: plaintext
If Not IsMissing(x) Then x = ctlList.Text
, х стал равен (095) 123-4567, теперь вылезает ошибка, что выражение слишком длинное для поля(длина поля = 10).
2 RD:
Дополнительная форма при вводе нового значения (в т.ч. и телефона) нужна для ввода некоторых доп.данных, поэтому без передачи нового значения не обойтись.
Не пойму где я ошибаюсь? Формата в таблице нет, маска не сохраняет в поле "посторонних" знаков типа скобок, тире и т.д. Передаю в аргументе неформатированное 10-значное число. Почему-то влияет формат источника поля со списком. А в Хелпе сказано, что формат влияет только на изображение. :((
...
Рейтинг: 0 / 0
Добавление в список
    #32541293
Roma R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При передаче аргумента х, значение х и не должно меняться. В этом то и суть изменений. Если Вы не передаете в функцию x, то она (функция) работает, как работала и ранее, т.е при открытии формы OpenArgs=ctlList.Text, как и было раньше и Вам в передыдыщих вызовах этой функции ничего менять не надо.

Если задаете x при вызове функции (x=NewData), то OpenArgs=NewData, т.у. в данном случае 10 цифр.

P.S. Не забудьте задать формат для поля Телефон на диалоговой форме.
...
Рейтинг: 0 / 0
Добавление в список
    #32541372
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не забудьте задать формат для поля Телефон на диалоговой форме
На какой именно? На той, где ввожу новый номер или той, куда передается значение(т.н. доп.форма)? И какой формат, как в источнике поля со списком?
...
Рейтинг: 0 / 0
Добавление в список
    #32541454
Roma R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На обеих одинаковый, какой у Вас был изначально
"8-("000") "000\-0000;1;_""
Format([Телефон];"""8-(""@@@) @@@-@@@@")
...
Рейтинг: 0 / 0
Добавление в список
    #32541644
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это у Tim2 такая маска была, а у меня: \("000") "000\-0000;1;_
Формата у меня в полях форм не было(только в источнике поля со списком).
Указал в обеих формах формат (@@@") "@@@-@@@@...
НЕ РАБОТАЕТ!!!
...
Рейтинг: 0 / 0
Добавление в список
    #32542081
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Продолжаю мучения. Перепробывал разные сочетания маски и формата. Работает только в двух случаях: если поле в таблице хранит номер со всеми знаками или если поле не хранит все "посторонние" знаки, но в запросе-источнике поля со списком в форме не указан формат поля(т.е. в списке номера в виде 0951234567). А вот чтоб и рыбку съесть, и ... - не выходит.
Зараза!
...
Рейтинг: 0 / 0
Добавление в список
    #32542131
Roma R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй
"("000") "000\-0000;1;_
Format([Телефон];"(@@@"") ""@@@-@@@@")
...
Рейтинг: 0 / 0
Добавление в список
    #32543204
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Судя по упоминании функции Format это надо вписать в запрос-источник поля со списком? Вписал - без изменений.
Если скопировать из выражения только выражение формата, то оно тут же преобразуется к (@@@") "@@@-@@@@, что и так уже есть.
Замена первого знака в маске с \ на " тоже ничего не меняет.
...
Рейтинг: 0 / 0
Добавление в список
    #32544161
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, отказаться от попытки решить проблему?
...
Рейтинг: 0 / 0
Добавление в список
    #32544170
Roma R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выложи базу с этими двумя формами, функцией и таблицами. Посмотрим
...
Рейтинг: 0 / 0
Добавление в список
    #32544776
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выкладываю....
Входная форма: "ВыборТел".
...
Рейтинг: 0 / 0
Добавление в список
    #32545114
Roma R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В форме ВыборТел

Для поля со списком cmbTel в окне свойств на вкладке Макет
1. Убери формат списка
2. Сделай ширину первого столбца 0,002см
...
Рейтинг: 0 / 0
Добавление в список
    #32545217
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну....(тут я снимаю шляпу)!!!
А что это было? Почему только если присоединенный столбец сделать >0, то все работает?
...
Рейтинг: 0 / 0
Добавление в список
    #32545229
Roma R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потому, что если ширина 1-го столбца равна 0, то введенное значение сравнивается со значением из второго столбца и естественно эти значения не равны
...
Рейтинг: 0 / 0
Добавление в список
    #32545362
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понял, спасибо!
...
Рейтинг: 0 / 0
41 сообщений из 41, показаны все 2 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Добавление в список
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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