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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.08.2012, 03:12   #1
koval-rulit
Новичок
Джуниор
 
Регистрация: 15.08.2012
Сообщений: 1
Вопрос сложная макрокоманда

Есть 1 большая таблица в которой есть поля [номер рейса],[flight],[date],[DELAYmin],[вид задержки]. Она разбита на 2 формы:

форма1 с полями: [номер рейса],[flight],[date],[DELAYmin].
и форма2 с полями: [номер рейса],[flight],[date],[DELAYmin],[вид задержки].

Примечание: возможен вариант с использованием 2 таблиц:
таблица1 ([номер рейса],[flight],[date],[DELAYmin])
таблица2 ([№ задержки п|п],[flight],[вид задержки])
(жирным показана связь таблиц)
Из-за того, что 1 рейс может быть задержан по нескольким причинам думаю, что 2-й вариант с 2-мя таблицами более рационален.

Внимание вопрос: как сделать так, чтобы при нажатии на поле [DELAYmin],при его значении равном 15 и более, открывалась форма номер 2 и поля [номер рейса],[flight],[date],[DELAYmin] были автоматически заполнены? а при остальных значениях переход на 2ю форму не осуществлялся...

Очень нуждаюсь в Вашей помощи. Сгодится ссылка на похожий вопрос.
koval-rulit вне форума Ответить с цитированием
Старый 15.08.2012, 05:00   #2
Андрэич
Форумчанин
 
Аватар для Андрэич
 
Регистрация: 20.05.2012
Сообщений: 311
По умолчанию

ИМХО, у вас неверно организована схема данных, т.е. таблицы и связи между ними.
Должно быть:

Таблица Рейсы:
КодРейса (первичный ключ),
Рейс,
Дата,
Время;

Таблица Задержки:
КодЗадержки (первич ключ),
КодРейса (внешний ключ к таблице Рейсы),
ВремяЗадержки.

Связь между таблицами Рейсы-Задержки Один-Ко-Многим:
то есть, у каждого рейса может быть более одной задержки (или не быть вовсе...)

Тогда не надо будет "извращаться" и делить таблицу по нескольким формам.
Связь 1:М прекрасно реализуется в Аксесс посредством Главная форма - Подчинённая форма (основанные каждая соответственно на этих таблицах)...

Последний раз редактировалось Андрэич; 15.08.2012 в 05:05. Причина: Ошибочно указал поля связи
Андрэич вне форума Ответить с цитированием
Старый 15.08.2012, 06:27   #3
Андрэич
Форумчанин
 
Аватар для Андрэич
 
Регистрация: 20.05.2012
Сообщений: 311
По умолчанию

Сразу не заметил ваших рассуждений про вторую таблицу...

Ответ на вопрос.
В подчинённой форме Задержки нужно программно поменять её источник записей (RecordSource)
и перезапросить главную форму (медтод Requery): см. пример.
В прилагаемом примере для наглядности сделал на кнопках
(ещё, с помощью Условного форматирования добавил подсветку нужных записей).
Если хотите сделать то же, но "при нажатии на поле", -
тот же код (см. на событии Нажатие кнопки) нужно прописать на событии Нажатие кнопки
(или Двойное нажатие) нужного вам поля.
Удачи )
Вложения
Тип файла: zip Самолёты.zip (61.1 Кб, 10 просмотров)

Последний раз редактировалось Андрэич; 15.08.2012 в 06:28. Причина: файл не приложился
Андрэич вне форума Ответить с цитированием
Старый 19.08.2012, 00:02   #4
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте koval-rulit.
Вариант выполнения "..чтобы при нажатии на поле .. ,при его значении .., открывалась форма ..."
не самый лучший, разумнее "вешать" выполнение действия на событие "двойной клик"
иначе пользователи не будут Вам благодарны если при каждом случайном клике
будет открываться другая форма. А код может быть таким:
Код:
Private Sub DELAYmin_DblClick(Cancel As Integer)
    If Val(DELAYmin.Text) >= 15 Then DoCmd.OpenForm "форма2"
End Sub
Успехов Вам.

to Андрэич :
Вы не дали ответ на однозначный вопрос автора поста -"как сделать так, чтобы..?".
Совета или "рекомендаций" по корректировке структуры он не спрашивал.
!!! Без достаточного знания предметной области от подобных "советов" :
"..у вас неверно организована схема..", "..Должно быть.." - вреда может оказаться
больше чем пользы.

Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 19.08.2012, 00:14   #5
Андрэич
Форумчанин
 
Аватар для Андрэич
 
Регистрация: 20.05.2012
Сообщений: 311
По умолчанию

Евгений,
я понял.
Евгений
Андрэич вне форума Ответить с цитированием
Старый 19.08.2012, 00:29   #6
Андрэич
Форумчанин
 
Аватар для Андрэич
 
Регистрация: 20.05.2012
Сообщений: 311
По умолчанию

Евгений,
мой ответ вы не считаете исчерпывающим?
Евгений
Андрэич вне форума Ответить с цитированием
Старый 19.08.2012, 12:42   #7
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

to Евгений (Андрэич):
(без амбиций и обид)
в Ваших двух посланиях ответом (с натяжкой) можно считать только последние строки:
"..Если хотите .. нужно прописать..", автор действительно хочет, потому и обратился,
но не менять источник данных у формы, а открыть другую форму по событию
при выполнении условия.
Конечно у Вас может быть свой (и возможно оптимальнее) вариант решения всей задачи,
но ответа на конкретный вопрос Вы просто не дали.

Евгений.

Последний раз редактировалось Teslenko_EA; 19.08.2012 в 12:53.
Teslenko_EA вне форума Ответить с цитированием
Старый 21.08.2012, 00:54   #8
Андрэич
Форумчанин
 
Аватар для Андрэич
 
Регистрация: 20.05.2012
Сообщений: 311
По умолчанию

2 Евгений

Видимо, дело в недостаточном "вникании" в ТЗ.

Но Автор молчит, а потому и дальнейшая полемика вобщем-то безсмысленна

С Уважением, Евгений
Андрэич вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
макрокоманда "задать значение" oChumevwaya Microsoft Office Access 0 27.05.2011 00:10
сложная выборка RedScreenOfLife SQL, базы данных 2 16.04.2011 18:12
Недоступна макрокоманда Milo4ka_Lucy Microsoft Office Access 1 10.08.2010 14:53
Макрокоманда «ВыполнитьСохраненныйИмпортЭкспорт» Avalia Microsoft Office Access 4 21.08.2009 15:00
Сложная программа Виктория Помощь студентам 2 03.12.2006 00:30