Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.66/58: Рейтинг темы: голосов - 58, средняя оценка - 4.66
0 / 0 / 0
Регистрация: 01.04.2010
Сообщений: 6

Список подстановки чтобы обновлялся

24.03.2011, 00:04. Показов 12771. Ответов 44
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста как сделать обновляющийся список подстановки?

Поясню на примере:
- если сделать отдельную таблицу "города" и занести туда эти три города, то через список подстановки при заполнение новой строки в столбце город я начинаю набирать "владиво" и он мне автоматом "владивосток" выводит - все хорошо
Не получается следующее - если такого города еще не было, например Кострома, то его никак не записать в основную таблицу сразу, придется сначала в таблице "города" его добавить и только потом его можно будет увидеть в списке подстановки, а мне бы хотелось чтоб набрав Кострома он автоматом добавился в таблицу "города" и в след раз при наборе этого города уже был в списке подстановки.

Надеюсь, более-менее понятно объяснил...
Вложения
Тип файла: rar контакты.rar (18.5 Кб, 98 просмотров)
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.03.2011, 00:04
Ответы с готовыми решениями:

Как сделать чтобы при вводе текста в поле, при введении каждого нового символа фильтр обновлялся, а текст в по
Написал фильтр для поля формы, он как только фокус возвращается в поле, весь текст выделяется и при введении символа весь предыдущий текст...

Список подстановки с объединением UNION
Здравствуйте!:yes: В поле организую список подстановки. Источником являются два поля такого смысла: Первое - "Номер дорожного знака...

мастер подстановки-список- поиск по первым буквам
ребята, подскажите, пожалуйста, как сделать, чтобы при вводе в форме первых букв продукта в поле со списком (мастер подстановки) он...

44
431 / 39 / 1
Регистрация: 02.03.2016
Сообщений: 453
05.03.2016, 22:56
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от alvk Посмотреть сообщение
Для этого нужно проверять форму на открытие:
Все вроде хорошо, но столкнулся с еще одной проблемой. Если открыты предположим сразу две формы, на данном примере: запчасти и запчасти1. При этом в форму города, входишь из формы запчасти1, но заполняется только форма запчасти. Вот такая петрушка..) Наверное нужно проверить форму еще на активность, кроме того что она открыта? Или можно сделать так, чтобы откуда нажал на кнопку города, туда и заполнялось?
0
шапоклякистка 8-го дня
 Аватар для texnik-san
3681 / 2241 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
06.03.2016, 00:04
Цитата Сообщение от sana555 Посмотреть сообщение
Или можно сделать так, чтобы откуда нажал на кнопку города, туда и заполнялось?
Передавайте имя формы, из которой было инициировано открытие другой формы, параметром макрокоманды Docmd.Openform (последний).

В открытой таким образом форме это имя будет доступно me.OpenArsg
1
431 / 39 / 1
Регистрация: 02.03.2016
Сообщений: 453
06.03.2016, 02:43
Цитата Сообщение от texnik-san Посмотреть сообщение
Передавайте имя формы, из которой было инициировано открытие другой формы, параметром макрокоманды Docmd.Openform (последний).
В открытой таким образом форме это имя будет доступно me.OpenArsg
Не могли бы вы показать на примере?

Visual Basic
1
2
3
Private Sub Кнопка25_Click()
DoCmd.OpenForm "Города", , , , acFormAdd
End Sub
Visual Basic
1
2
3
4
5
6
7
If CurrentProject.AllForms("Запчасти").IsLoaded = True Then
   Forms![Запчасти]![Город] = Forms![Города]![КодГорода]
Else
If CurrentProject.AllForms("Запчасти1").IsLoaded = True Then
   Forms![Запчасти1]![Город] = Forms![Города]![КодГорода]
end if
end if
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,383
06.03.2016, 04:23
Источник данных менять можно при любом действии, чаще это делают при фильтрации, либо при использовании разными пользователями одной формы, например на загрузку:

Visual Basic
1
me.recordsource = "select * from запчасти where username = " & forms!главная!пользователь
Допустим нужно было бы показать запчасти, которые купил менеджер Петров:
Visual Basic
1
me.recordsource = "select * from запчасти where менеджер = 'Петров'"
Добавлено через 2 минуты
Цитата Сообщение от texnik-san Посмотреть сообщение
это имя будет доступно me.OpenArgs
*arguments
1
шапоклякистка 8-го дня
 Аватар для texnik-san
3681 / 2241 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
06.03.2016, 11:30
Цитата Сообщение от sana555 Посмотреть сообщение
Не могли бы вы показать на примере?
Да, конечно.

Visual Basic
1
2
3
Private Sub Кнопка25_Click()
DoCmd.OpenForm "Города", , , , acFormAdd, ,me.Name
End Sub
Visual Basic
1
2
3
If CurrentProject.AllForms(me.OpenArgs).IsLoaded = True Then
   Forms(me.OpenArgs).[Город] = me.[КодГорода]
End if
1
431 / 39 / 1
Регистрация: 02.03.2016
Сообщений: 453
09.03.2016, 11:10
Цитата Сообщение от texnik-san Посмотреть сообщение
Да, конечно.
Класс, всего одна строчка и проблема решена для 10 форм! Спасибо!
Цитата Сообщение от alvk Посмотреть сообщение
Источник данных менять можно при любом действии, чаще это делают при фильтрации, либо при использовании разными пользователями одной формы, например на загрузку:
Правильно ли я понимаю, что существует некая главная форма, в которой отображен текущий пользователь (я так понимаю существует еще форма ввода имени и пароля, при открытии базы данных, из которой пользователь переносится на главную форму?). А при открытии формы запчасти, происходит фильтрация данных по этому пользователю, поскольку на событие "загрузка" стоит ваш код?
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,383
10.03.2016, 02:16
Цитата Сообщение от sana555 Посмотреть сообщение
Правильно ли я понимаю, что существует некая главная форма, в которой отображен текущий пользователь
Я пользуюсь 2003-м, у меня этот механизм встроен. Как на других не скажу, не знаю. Одно знаю точно - 2010-й mdb+mdw поддерживает.
1
431 / 39 / 1
Регистрация: 02.03.2016
Сообщений: 453
18.03.2016, 22:12
Цитата Сообщение от alvk Посмотреть сообщение
либо при использовании разными пользователями одной формы, например на загрузку:
А есть ли возможность сделать таким образом, чтобы при открытии формы, текущий пользователь мог видеть свои записи с возможностью изменять их, а записи остальных пользователей только видеть, но изменять и удалять записи других пользователей не мог, как это реализовать?
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,383
21.03.2016, 02:54
Зависит во многом от задачи.
Я бы сделал выгрузку в Эксель и пусть там смотрит все записи. Либо отдельную форму с запретом редактирования и со всеми записями. Как правило в режиме ввода данных пользователю чужие записи не нужны.
Можно ещё сделать ленточную форму со всеми записями и кнопкой Редактировать, кнопкой открывать форму для редактирования только тех записей, где в поле user стоит текущий пользователь, остальным вывести сообщение, что режим редактирования им не доступен.
0
431 / 39 / 1
Регистрация: 02.03.2016
Сообщений: 453
21.03.2016, 23:39
Спасибо за варианты. У меня разделенная форма. Накавырял следующим образом, может кому пригодится, работает вроде все четко:
Visual Basic
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Private Sub Form_Current()
If Me.КодРиелтора <> 0 Then
    If GroupUser = "Admins" Then 'Admins- это группа
        Me.AllowDeletions = True
        Me.AllowEdits = True
    Else
        Me.AllowDeletions = Me.КодРиелтора = loginUser
        Me.AllowEdits = Me.КодРиелтора = loginUser
    End If
Else
    Dim CTRL As Access.Control
    For Each CTRL In Me.Controls
            If CTRL.ControlType = acComboBox Or CTRL.ControlType = acTextBox Or CTRL.ControlType = acCommandButton Then
                CTRL.Enabled = True 'Делаем доступными
            End If
    Next
    Exit Sub
End If
'''''''''''''''''
If GroupUser = "Admins" Then 'Admins- это группа
'Dim CTRL As Access.Control
    For Each CTRL In Me.Controls
        If CTRL.ControlType = acComboBox Or CTRL.ControlType = acTextBox Or CTRL.ControlType = acCommandButton Then
            CTRL.Enabled = True 'Делаем доступными
        End If
    Next
ElseIf Me.КодРиелтора <> loginUser Then
'On Error Resume Next
    For Each CTRL In Me.Controls
        If CTRL.ControlType = acComboBox Or CTRL.ControlType = acTextBox Or CTRL.ControlType = acCommandButton Then
            CTRL.Enabled = False 'Делаем не доступными
            Договора_КодНедвижимости.Enabled = True 'Одно поле нужно сделать доступным, иначе нельзя будет перемещаться по записям
'            Статус.Enabled = True 'Одно поле нужно сделать доступным, иначе нельзя будет перемещаться по записям
            ОткрытьФото.Enabled = True
        End If
    Next
'If Err.Number <> 0 Then Err.Clear
ElseIf Me.КодРиелтора = loginUser Then
    For Each CTRL In Me.Controls
        If CTRL.ControlType = acComboBox Or CTRL.ControlType = acTextBox Or CTRL.ControlType = acCommandButton Then
            CTRL.Enabled = True 'Делаем доступными
        End If
    Next
End If
'''''''''''''''''
End Sub
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,383
22.03.2016, 08:31
Цитата Сообщение от sana555 Посмотреть сообщение
работает вроде все четко:
постоянный перебор контролов и назначение им свойств при любом переходе по записям - не лучший вариант.
0
431 / 39 / 1
Регистрация: 02.03.2016
Сообщений: 453
22.03.2016, 12:00
Цитата Сообщение от alvk Посмотреть сообщение
постоянный перебор контролов и назначение им свойств при любом переходе по записям - не лучший вариант.
Хорошо, а как можно иначе сделать,? Конечно можно и без контролов, чужие записи и так блокируются от редактирования и удаления, но с ними как то нагляднее.
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,383
22.03.2016, 12:52
не понял вопроса, с кем нагляднее?
0
431 / 39 / 1
Регистрация: 02.03.2016
Сообщений: 453
22.03.2016, 13:03
Цитата Сообщение от alvk Посмотреть сообщение
не понял вопроса, с кем нагляднее?
Не то сморозил..) Я имел ввиду то, что записи блокируются и так:
Me.AllowDeletions = Me.КодРиелтора = loginUser
Me.AllowEdits = Me.КодРиелтора = loginUser
В принципе можно обойтись и без того, чтобы делать их еще и не доступными: CTRL.Enabled = False, тогда можно избежать постоянного перебора контролов, как вы говорите. Но в этом случае все записи будут выглядеть одинаково, т.е. визуально активными. А свойство CTRL.Enabled = False позволяет сделать их не активными, что считаю довольно наглядным.
0
шапоклякистка 8-го дня
 Аватар для texnik-san
3681 / 2241 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
22.03.2016, 13:36
Цитата Сообщение от sana555 Посмотреть сообщение
Но в этом случае все записи будут выглядеть одинаково, т.е. визуально активными. А свойство CTRL.Enabled = False позволяет сделать их не активными, что считаю довольно наглядным.
В случае обаботки события "текущая запись" особую наглядность вы не получите: элементы будут выглядеть одинаково во всех строках.

В версиях от 2007 и старше свойство Enabled доступно в условном форматировании. Вместо перебора всех контролов примените к ним условное форматирование с увловием Me.КодРиелтора = loginUser. Будут очень эстетично выглядеть недоступными только контролы тех строк, которые нельзя править.


Visual Basic
1
Me.AllowEdits = Me.КодРиелтора = loginUser
На мой взгляд - плохая идея, так становится навозможно редактировать не только связанны, но и свободные поля. Например, поиска, фильтра и т.д.
1
431 / 39 / 1
Регистрация: 02.03.2016
Сообщений: 453
22.03.2016, 14:33
Цитата Сообщение от texnik-san Посмотреть сообщение
В случае обаботки события "текущая запись" особую наглядность вы не получите: элементы будут выглядеть одинаково во всех строках.
Не знаю, может быть я не правильно вас понял, но у меня при переходе на другую запись активность меняется, в зависимости от текущего пользователя. Код выкладывал выше.
Цитата Сообщение от texnik-san Посмотреть сообщение
В версиях от 2007 и старше свойство Enabled доступно в условном форматировании. Вместо перебора всех контролов примените к ним условное форматирование с увловием Me.КодРиелтора = loginUser. Будут очень эстетично выглядеть недоступными только контролы тех строк, которые нельзя править.
Как это сделать, можете показать пример?
Цитата Сообщение от texnik-san Посмотреть сообщение
На мой взгляд - плохая идея, так становится навозможно редактировать не только связанны, но и свободные поля. Например, поиска, фильтра и т.д.
В моем случае, это хорошая идея...) На самом деле, данный механизм будет применяться только к некоторым формам. Формы с своими фильтрами и поиском, так блокироваться не будут. Кстати, штатный фильтр и поиск работает в любом случае.
0
шапоклякистка 8-го дня
 Аватар для texnik-san
3681 / 2241 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
22.03.2016, 15:31
Нельзя редактировать строки со значением КодУлицы=1
Вложения
Тип файла: rar Проба.rar (26.0 Кб, 11 просмотров)
1
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,383
22.03.2016, 15:33
Цитата Сообщение от texnik-san Посмотреть сообщение
В версиях от 2007 и старше свойство Enabled доступно в условном форматировании.
и младше тоже
смотрите в p2 нолик, поменяйте его
Вложения
Тип файла: rar 22.rar (13.4 Кб, 10 просмотров)
1
431 / 39 / 1
Регистрация: 02.03.2016
Сообщений: 453
22.03.2016, 16:47
Спасибо, c условием Me.КодРиелтора <> loginUser не работает, у меня loginUser - это глобальная переменная, не хочет ее видеть. Работает только с условием Me.КодРиелтора <> [формы!][главная]![логин].
0
93 / 18 / 4
Регистрация: 15.04.2015
Сообщений: 282
23.03.2016, 07:50
гляньте пример
в форме "фрукт" при выборе поля со списком внизу появляется значечек в виде пишущего карандашика.
нажимаете на него - открывается диалоговая форма, куда вносите новые записи.
после сохранения все автоматически обновляется и моно сразу спокойно работать дальше)))
Вложения
Тип файла: rar base.rar (18.9 Кб, 41 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.03.2016, 07:50

График интервалом в 60 x, а потом чтобы обновлялся
Всем привет, помогите с графиком. По x - у меня интервал времени в секундах, нужно чтобы график шёл до 60 секунд, а потом обновлялся, но не...

Как сделать, чтобы ProgressBar заполнялся в ходе отсчета таймера и обновлялся при запуске нового?
Доброго времени суток. У меня имеется обратный отсчет TimeSpan и ProgressBar. Как сделать, чтобы бар заполнялся в ходе отсчета таймера и...

Ms Access и список подстановки
Читаю БД Access 2007. В ней есть таблица &quot;Производители&quot;: Читаю следующим образом: cmd = new OleDbCommand( &quot;SELECT...

Настроить выпадающий список поля подстановки
Есть таблица DBGrid в один из столбцов которой заполняется подстановкой из другой таблицы по ID. Когда кликаешь на ячейку открывается...

Список: Преобразовать список так, чтобы сначала шли нечетные элементы, а потом четные
Преобразовать список таким образом, чтобы в первой его половине располагались элементы, стоявшие на нечетных позициях, а во второй...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru