Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Подскажите кратчайший способ (Access 2003)
 
 автор: dimonicss   (08.01.2009 в 00:18)   личное сообщение
 
 

Открываю одиночную форму
DoCmd.OpenForm "ПроцентыВодитДобав"
(связанную с Таблицей "Проценты") с целью отредактировать какую-либо запись или добавить новую.
В форме поля Позывной, Процент. Оба значения числовые.
В поле Позывной выбираю числовое значение из поля со списком, далее хочу повесить на это событие Private Sub Позывной_AfterUpdate()
чтобы шел переход к нужной записи на редактирование (изменяется значение Процент), а если записи в Таблице с таким значением Позывной нет, чтобы шло создание новой записи. Изменения записываются по нажатию на кнопку Добавить - Private Sub Добавить_Click(). При этом если запись редактируется, то происходит запись измененного зачения и форма закрывается. А если записывается новая запись, чтобы также записывалась новая запись и форма закрывалась.
Чувствую что все это очень просто делается, вроде через DLookUp. Подскажите плиз конкретный код (для Private Sub Позывной_AfterUpdate() и Private Sub Добавить_Click()), а то я для этой цели чего-то громоздкое у себя начал писать.
Как вариант тоже думал открывать форму сначала на редактирование, а после введения значения в поле Позывной и после проверки и нахождения в Таблице записи с подобным значением переходить к этой записи на редактирование. Если же ее нет, продолжать ввод новой записи.

  Ответить  
 
 автор: dimonicss   (08.01.2009 в 16:34)   личное сообщение
 
 

Или может по другому как делать? Может ссылку какую кинете с примером

  Ответить  
 
 автор: Lukas   (08.01.2009 в 17:41)   личное сообщение
12 Кб.
 
 

Пример

  Ответить  
 
 автор: dimonicss   (08.01.2009 в 17:57)   личное сообщение
 
 

Lukas, спасибо за пример. Пример интересный. Не то немного имел ввиду. Попробую написать рабочий код и лучше после этого спрошу как укоротить. Или как вариант выдерну то что нужно у себя в отдельный файл и выложу с вопросом.

  Ответить  
 
 автор: Анатолий (Киев)   (08.01.2009 в 17:51)   личное сообщение
 
 

ИМХО, так:
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)

  Ответить  
 
 автор: dimonicss   (08.01.2009 в 18:05)   личное сообщение
 
 

Вот вроде как раз то что нужно. Сейчас попробую - отпишусь.

  Ответить  
 
 автор: dimonicss   (08.01.2009 в 18:44)   личное сообщение
 
 

Все работает, спасибо. И именно через DLookUp.
А насчет Me![Процент] = Me![Позывной].Column(1) тут вряд ли применимо, там данные для Позывной из другой Таблицы

Вот прям именно этого и хотелось. Просто в кодах запутался слегка.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList