Добавление в список

tim2
Дата: 27.05.2004 15:12:35
Поле со списком "Телефон", маска ввода:
"8-("000") "000\-0000;1;_""
, в запросе-источнике списка поле отформатировано как:
Format([Телефон];"""8-(""@@@) @@@-@@@@") 
на событие Отсутствие в списке - процедура добавления в список. Открывается еще одна форма с уже заполненным полем "№ телефона".... вообщем много раз использованная схема.
Но в этот раз получаю сообщение, что введенный текст не соответствует ни одному из элементов списка. Может я чего с маской/форматом намудрил?
Roma R
Дата: 27.05.2004 16:12:21
Response = acDataErrContinue
tim2
Дата: 27.05.2004 16:43:43
И куда это вписать?
Точно такая же процедура, слово в слово, работает без всяких ошибок. Одно отличие - там речь идет об обычном текстовом поле, без всяких форматов и масок.
tim2
Дата: 27.05.2004 16:49:04
Забыл добавить: в случае с телефоном, после сообщения об ошибке, новое значение в список не добавляется, но в таблице появляется.
Все-таки что-то в маске/формате дело, если убрать маску и формат и вводить телефон как 11-и значное число, то все работает.
Roma R
Дата: 27.05.2004 16:49:12
Процедуру можно увидеть?
Roma R
Дата: 27.05.2004 16:51:43
Во втрой форма маска есть?
tim2
Дата: 27.05.2004 17:12:42
Процедура:
НетВСписке(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ТелРедакт поле Телефон имеет такую же маску(но формат не указан).
Kelme
Дата: 27.05.2004 17:26:01
Глупый вопрос:
LimitToList равно No?
Roma R
Дата: 27.05.2004 17:30:03
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.05.2004 17:30:06
2 Kelme

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