Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.08.2017, 08:21   #1
klim8
Пользователь
 
Регистрация: 07.08.2016
Сообщений: 23
По умолчанию Как сделать чтобы выбранные из списка значения накапливались в поле формы?

Используется
Access 2016

Сценарий:
- вводим первые символы значения из списка;
- список "подкидывает" в строку ввода наиболее подходящее значение из списка;
- наживаем "Ввод";
- Выбранное значение попадает в поле формы "Поле1" через запятую;
и т.д. для остальных значений.

Рисунок (ГИФка) - ссылка

Вопрос.
Как сделать чтобы выбранные в списке значения накапливались в поле формы через запятую?
Значение предполагается использовать: текстовые, числовые, текстовые+числовые.

Рисунок
Вложения
Тип файла: zip vpr_00_pl_nak.zip (32.9 Кб, 18 просмотров)
klim8 вне форума Ответить с цитированием
Старый 28.08.2017, 08:06   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Код:
Private Sub znak_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = 13 Then
      If Len(Поле1.Value) > 0 Then
            Поле1 = Поле1 & ", " & znak.Text
        Else
        Поле1 = znak.Text
       End If
    End If
End Sub
как сделать возврат курсора в комбобокс - ищите сами.
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 28.08.2017, 12:17   #3
klim8
Пользователь
 
Регистрация: 07.08.2016
Сообщений: 23
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
Код:
Private Sub znak_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = 13 Then
      If Len(Поле1.Value) > 0 Then
            Поле1 = Поле1 & ", " & znak.Text
        Else
        Поле1 = znak.Text
       End If
    End If
End Sub
как сделать возврат курсора в комбобокс - ищите сами.
Что-то не работает.
Плохо разбираюсь...

Добавил возврат:
Me.znak.SetFocus

Добавил проверку на уникальность:
If Поле1 Like "*" & znak.Text & "*" Then

в чём проблема может быть?

Код:
Private Sub znak_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = 13 Then '
      If Len(Поле1.Value) > 0 Then
                ' проверка на совпадения
                ' If Me.Поле1.Value Like "*" & Me.znak.Text & "*" Then
                If Поле1 Like "*" & znak.Text & "*" Then
                MsgBox "Ошибка ХХХ. Тектс уже существует !!!"
                End If
                ' занесение текста в поле
                Поле1 = Поле1 & ", " & znak.Text
                
                 
                 Me.znak.SetFocus
                                  
        Else
        Поле1 = znak.Text
        Me.znak.SetFocus
       End If
    End If
End Sub


PS
Плохо разбираюсь в VBA, поэтому сделал как понимаю
klim8 вне форума Ответить с цитированием
Старый 28.08.2017, 12:25   #4
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Что не работает? Вы хотели: по нажатию Ентер в комбобокс, чтобы текст из єтого комбобокса перемещался в Поле. Код ето и делает.
А проверки на уникальности, игры с фокусом - побочные задания которые не были оглашены в первом сообщении, а значит вы сами их можете решить
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 28.08.2017, 14:00   #5
klim8
Пользователь
 
Регистрация: 07.08.2016
Сообщений: 23
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
Что не работает?
Прошу прощения, некорректно сформулировал.

Сценарий:
- Поле.znak. Ввёл первые символы фамилии;
- Поле.znak. Нажал Ввод;
- Поле.Поле1. Фамилия полностью прописалась;
- Мышкой возвращаю курсор в Поле.znak;

Вопрос 1
Как сделать чтобы после нажатия "Ввод" и после того как введённая фамилия прописалась Поле.Поле1 курсор возвращался в Поле.znak?
Чтобы можно было вводить следующую фамилию.

Вопрос 2
Как сделать чтобы в Поле.Поле1 нельзя было ввести две одинаковых фамилии?
Проблема в том, что если фамилия вводится и нажимается "Ввод", то появляется окно с сообщением "Ошибка ХХХ. Текст уже существует !!!", а если нажать ещё раз "Ввод", то окно с сообщением пропадает, а фамилия прописывается повторно.

Последний раз редактировалось klim8; 28.08.2017 в 14:05.
klim8 вне форума Ответить с цитированием
Старый 29.08.2017, 09:40   #6
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Код:
Private Sub znak_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = 13 Then
       If Len(Поле1.Value) > 0 Then
            If Поле1 Like "*" & Trim(znak.Text) & "*" Then
               If MsgBox("Ошибка ХХХ. Тектс уже существует !!!" & vbNewLine _
                         & "Все равно добавить?", vbOKCancel + vbCritical) = vbOK Then
                    Поле1 = Поле1 & ", " & znak.Text
                End If
            Else
                Поле1 = Поле1 & ", " & znak.Text
            End If
        Else
            Поле1 = znak.Text
        End If
        DoCmd.CancelEvent
    End If
End Sub
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать чтобы при создании формы происходило 2 события? artbotva Общие вопросы Delphi 7 06.05.2012 18:27
как сделать так чтобы при нажатии на ComboBox выводилось поле из таблицы DBGrid? jawa250t БД в Delphi 4 21.04.2012 21:57
Access 2003: как сделать изменяющийся список выбора в зависимости от значения в соседнем поле tanchikb Microsoft Office Access 14 14.01.2010 10:46
Как сделать, чтобы один элемент списка в ComboBox писался в несколько строк? Andr Общие вопросы Delphi 5 15.08.2007 22:24
Скажите как сделать так, чтобы размер формы оставался фиксированным? Faramund Помощь студентам 2 20.03.2007 20:14