-Поиск по дневнику

Поиск сообщений в rss_sql_ru_access_programming

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 16.03.2006
Записей:
Комментариев:
Написано: 4


Обработка BeforeUpdate во время NotInList

Понедельник, 12 Декабря 2016 г. 17:18 + в цитатник
Доброго дня!
Снова прошу помощи, никак мне не победить эту штуку..

Смысл в том, что юзеры повадились вводить новые товары с пробелами в начале.
Я ставлю Trim в процедуре NotInList.
Если после Trim оказывается, что товар уже есть, то нужно его выбрать в комбобоксе.
Если нет - то оттриммить и добавить через форму acDialog.
Через тернии я вроде поняла примерно, как должен работать код, но теперь новая проблема.

У меня стоит проверка комбобокса BeforeUpdate. Если эту проверку товар не проходит, то NotInList стопорится с ошибкой, причём ошибки выдаёт разные... Мне надо, чтобы вновь созданный товар нельзя было выбрать в комбо, если не пройдена проверка.

Не знаю, понятно ли объясняю (( Может, меня вообще не в ту степь занесло?
Если использовать ctl = NewData вместо ctl.Text = NewData, то BeforeUpdate не возникает.
Если использовать acDataErrAdded, то ошибка вылезает, что отсутствует в списке.

Код ниже, пример в приложении. Проблема при добавлении товара типа ' Пельмени 5' или ' Пельмени 19' с пробелом в начале.

Private Sub ВидПельменей_BeforeUpdate(Cancel As Integer)
    MsgBox "До обновления. Такое значение нельзя добавить."
    Cancel = True
    ВидПельменей.Undo
End Sub

Private Sub ВидПельменей_NotInList(NewData As String, Response As Integer)
    Dim ctl As Control
    Set ctl = Me.ActiveControl
    NewData = Trim(NewData)
    If DCount("ВидПельменей", "Пельмени", "ВидПельменей='" & NewData & "'") > 0 Then
        ctl.Undo
        ctl.Text = NewData
        Response = acDataErrContinue
        GoTo ExitSub
    End If
    If MsgBox("'" & NewData & "'" & " отсутствует в каталоге." & vbNewLine & "        Добавить?", vbYesNo) = vbYes Then
        DoCmd.OpenForm "Пельмени", , , , acFormAdd, acDialog, NewData
        NewData = DLookup("ВидПельменей", "Пельмени", "Код=" & DMax("Код", "Пельмени"))
        ctl.Undo
        ctl.RowSource = ctl.RowSource
        ctl.Text = NewData
        Response = acDataErrContinue
        GoTo ExitSub
    Else
        MsgBox "Выберите из списка."
        With ctl
            .Undo
            .Dropdown
        End With
        Response = acDataErrContinue
    End If
ExitSub:
    Set ctl = Nothing
End Sub

http://www.sql.ru/forum/1242325/obrabotka-beforeupdate-vo-vremya-notinlist


 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку