|
|
|
| Открываю одиночную форму
DoCmd.OpenForm "ПроцентыВодитДобав"
(связанную с Таблицей "Проценты") с целью отредактировать какую-либо запись или добавить новую.
В форме поля Позывной, Процент. Оба значения числовые.
В поле Позывной выбираю числовое значение из поля со списком, далее хочу повесить на это событие Private Sub Позывной_AfterUpdate()
чтобы шел переход к нужной записи на редактирование (изменяется значение Процент), а если записи в Таблице с таким значением Позывной нет, чтобы шло создание новой записи. Изменения записываются по нажатию на кнопку Добавить - Private Sub Добавить_Click(). При этом если запись редактируется, то происходит запись измененного зачения и форма закрывается. А если записывается новая запись, чтобы также записывалась новая запись и форма закрывалась.
Чувствую что все это очень просто делается, вроде через DLookUp. Подскажите плиз конкретный код (для Private Sub Позывной_AfterUpdate() и Private Sub Добавить_Click()), а то я для этой цели чего-то громоздкое у себя начал писать.
Как вариант тоже думал открывать форму сначала на редактирование, а после введения значения в поле Позывной и после проверки и нахождения в Таблице записи с подобным значением переходить к этой записи на редактирование. Если же ее нет, продолжать ввод новой записи. | |
|
| |
|
|
|
| Или может по другому как делать? Может ссылку какую кинете с примером | |
|
| |
|
12 Кб. |
|
| Пример | |
|
| |
|
|
|
| Lukas, спасибо за пример. Пример интересный. Не то немного имел ввиду. Попробую написать рабочий код и лучше после этого спрошу как укоротить. Или как вариант выдерну то что нужно у себя в отдельный файл и выложу с вопросом. | |
|
| |
|
|
|
| ИМХО, так:
1. Форма должна быть свободной (не связанной с таблицей "Проценты");
2. На событие Позывной_AfterUpdate выполнять:
Me![Процент] = DLookup("[Процент]", "[Проценты]", "[Позывной]=" & Me![Позывной])
3. На событие Добавить_Click выполнять:
Set rst = CurrentDB.OpenRecordset("SELECT * FROM Проценты WHERE [Позывной]=" & Me![Позывной]))
If rst.BOF then
rst.AddNew
rst![Позывной]= Me![Позывной]
Else
rst.Edit
EndIf
rst![Процент]= Me![Процент]
rst.Update
rst.Close
|
Что у вас в источнике строк поля со списком? Если таблица "Проценты", то поле "Процент" можно включить в источник (2-й столбец). Тогда вместо DLookup можно написать так:
Me![Процент] = Me![Позывной].Column(1) | |
|
| |
|
|
|
| Вот вроде как раз то что нужно. Сейчас попробую - отпишусь. | |
|
| |
|
|
|
| Все работает, спасибо. И именно через DLookUp.
А насчет Me![Процент] = Me![Позывной].Column(1) тут вряд ли применимо, там данные для Позывной из другой Таблицы
Вот прям именно этого и хотелось. Просто в кодах запутался слегка. | |
|
| |