powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Обновление значений в поле со списком
10 сообщений из 10, страница 1 из 1
Обновление значений в поле со списком
    #39847665
DamirMustafin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Подскажите пожалуйста как решить данную проблему. Использую Access 2016.
Есть таблицы "Товар"(главная таблица), "Производитель" и "Категория" и соответственно формы "Добавить товар", "Добавить производителя" и "Добавить категорию".
В таблице "Товар" есть поля "Производитель", "Категория" связанные с соответствующими таблицами. При добавлении нового товара через форму "Добавить товар", значения "Категория" и "Производитель" выбираются из поля со списком. При отсутствии необходимого элемента в соответствующей таблице, можно по кнопке перейти в форму добавления категории или производителя. При добавлении новой записи в таблицу "Производитель"/"Категория", необходимо чтобы соответствующая таблица обновилась и новое значение появилось в поле со списком.
Можно ли данную операцию сделать без использования Basic, а только на одних макросах?
...
Рейтинг: 0 / 0
Обновление значений в поле со списком
    #39847684
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Преобразовать макрос в код VBA умею-наоборот нет
Поэтому только код: (макросы "глыбоко уважаю",а код VBA намного меньше в объеме,понятней и главное-VBA имеет средства отладки на которые в макросах нет даже намека)
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
Private Sub услуга_NotInList(NewData As String, Response As Integer)
    ' Добавляет новый тип при вводе с клавиатуры
    ' в поле со списком «Услуга».
    Dim intNewCategory As Integer, intTruncateName As Integer, strTitle As String, intMsgDialog As Integer
    Dim rs As DAO.Recordset
    ' Выводит окно сообщения с приглашением подтвердить
    ' добавление новой услуги.
       strTitle = "Услуга отсутствует в списке "
    intMsgDialog = vbYesNo + vbQuestion + vbDefaultButton1
    intNewCategory = MsgBox("Добавить новую услугу?", intMsgDialog, strTitle)
If intNewCategory = vbYes Then
        ' Удаляет новое имя из поля «услуга», позволяя выполнить
        ' обновление элемента управления при возвращении в форму.
        DoCmd.RunCommand acCmdUndo
               Set rs = CurrentDb.OpenRecordset("переченьУслуг") ' таблица-источник поляСоСписком
        rs.AddNew
        rs!наименование = NewData
        rs.Update
 ' или если надо добавить более одного поля открывает форму "ДобавлениеУслуги"на таблице переченьУслуг
'        DoCmd.OpenForm "переченьУслуг", acNormal, , , acAdd, acDialog, NewData
'при этом загрузку формы "переченьУслуг" обработать:
'Me.наименование(полеВтаблицеПереченьУслуг)=Me.NewData
        ' Продолжение без вывода стандартного сообщения об ошибке.
        Response = acDataErrAdded
    End If
End Sub

как из этого кода сделать макрос не знаю
...
Рейтинг: 0 / 0
Обновление значений в поле со списком
    #39848462
Geizer1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В макросах вам нужна макрокоманда - Обновление
Без параметра обновит текущую форму, вместе с источником строк (то есть обновится содержимое).
Если в параметре укажете имя поля со списком, то обновится содержимое выпадающего списка.
Перед использованием этой макрокоманды не должно быть режима редактирования.
...
Рейтинг: 0 / 0
Обновление значений в поле со списком
    #39848562
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DamirMustafinДобрый день.

Можно ли данную операцию сделать без использования Basic, а только на одних макросах?

можно, склепал для вас пример по быстрому, с таблицами производитель,категории,товары, каталог (туда добавляется информация).
Признаться не использую чистые макросы аксесса, но нашел быстро нужные.
Сначала в форме заполняете поля производитель,категория, товар. Обратите внимание ,что когда вы выбираете категорию, товар ниже выбирается уже из этой категории. Обновление поля товар осуществляется внедренным макросом "обновление" с параметром имени поля обновляемого [поле_товар]. Макрос обновления повешен на событие поля поле_каталог . Событие на которое повешено называется "после обновления".

После того как все поля заполнены, при нажатие на кнопку "добавить в каталог" выполняется внедренный макрос "открыть запрос", который запускает запрос на добавление данных с формы в таблицу. И всё.

Итого всего два макроса. Потратил больше времени чтобы найти в интернете аксесовские аналоги макросов для me.поле.refresh и docmd.OpenQuery "имя_запроса", чем написал сам пример))
...
Рейтинг: 0 / 0
Обновление значений в поле со списком
    #39848564
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdkuПреобразовать макрос в код VBA умею-наоборот нет
Поэтому только код: (макросы "глыбоко уважаю",а код VBA намного меньше в объеме,понятней и главное-VBA имеет средства отладки на которые в макросах нет даже намека)
Код: vbnet
1.
2.
3.
4.
Private Sub услуга_NotInList(NewData As String, Response As Integer)
    ......
.....
End Sub

как из этого кода сделать макрос не знаю

ну они смогли уже глобальные переменные в макросах задавать, и циклы даже можно писать без кода)) Тревожно, того и гляди, VBA того..попросят. И будем рекордсеты задавать макросами типа задатьПеременную равно НовыйДаоРекордсет , курсор равно ЭдЮзОптимистик
...
Рейтинг: 0 / 0
Обновление значений в поле со списком
    #39848565
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DamirMustafin,
Общий алгоритм, если он ущербен,приведет к огрооооомным сложностям,а часто и к невозможности создания БД.
В данном случае производитель есть атрибут ТОВАРА (один и тот же товар может быть у разных производителей) и разбивать одну сущность на две таблицы есть не совсем правильно
...
Рейтинг: 0 / 0
Обновление значений в поле со списком
    #39848566
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdkuDamirMustafin,
Общий алгоритм, если он ущербен,приведет к огрооооомным сложностям,а часто и к невозможности создания БД.
В данном случае производитель есть атрибут ТОВАРА (один и тот же товар может быть у разных производителей) и разбивать одну сущность на две таблицы есть не совсем правильно

Это только в случае если каталоги в 1С. В SAP товар это вообще объект отдельный,в Аксапте это совокупность таблиц этак 7-9.

Автор на потребительском уровне во главе поставил товар , это понятно, потому что это в общем то та сущность ,которая продается, и поэтому товар во главе всех таблиц) Пример ему рабочий накатали, если пойдет дальше ,то разберется с базостроением)
...
Рейтинг: 0 / 0
Обновление значений в поле со списком
    #39848567
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прошу прощения я не правильно изложил свою мыслю
Имелось ввиду иметь справочник производителей и таблицу(форму) товар в которой поля категория и производитель зависимы,а порядок заполнения:категория>производитель>товар
на форме товар иметь кнопки "добавить категорию", "добавить производителя" и после добавления всего-навсего обновить соответствующее поле (если есть непреодолимое желание все это можно сделать простейшими макросами). Иметь такую схему:
...
Рейтинг: 0 / 0
Обновление значений в поле со списком
    #39848762
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прошу прощенья-сделайте так да и фсё..:
...
Рейтинг: 0 / 0
Обновление значений в поле со списком
    #39848823
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если добавление кнопкой обработайте событие "изменение":
Код: vbnet
1.
2.
3.
4.
Private Sub категория_Change()
DoCmd.RunCommand acCmdSaveRecord
Me.категория.Requery
End Sub

если добавление вводом в поле обработку исключить
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Обновление значений в поле со списком
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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