Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 14.08.2015
Сообщений: 50
1

Открыть одну из двух форм

06.11.2018, 19:20. Показов 1425. Ответов 14

Author24 — интернет-сервис помощи студентам
Доброго времени суток!
Задача такова: есть три формы. необходимо, чтобы при нажатии кнопки на первой, открывалась вторая или третья в зависимости от того, какие данные были введены в первой.
Точнее: согласно приложенной схеме данных, чтобы исходя из значения поля "id_task_fk", открывалась форма 2 или 3, которые по сути являются отличающимся друг от друга набором полей (ну это уже лирика).

Спасибо!
Миниатюры
Открыть одну из двух форм  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.11.2018, 19:20
Ответы с готовыми решениями:

Добавление данных из разных форм в одну
Приветствую. Ситуация такая. В базе 3 таблицы: Литература, Читатели, Выдача Таблица Выдача...

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

Как открыть несколько форм и отчётов в одном окне?
Всем привет. Проблема состоит в том, что бы на панели задач было открыто одно окно, а в самом окне...

Открыть одну из форм проекта
Вообщем у мня есть код консоли и обычное окно... как с помощью консоли можно былоб сделать чтобы...

14
9108 / 6037 / 590
Регистрация: 27.03.2013
Сообщений: 19,811
06.11.2018, 19:37 2
Сделайте обычную подчиненную форму.
Или две, именно по данному полю.
0
Модератор
Эксперт MS Access
6231 / 2909 / 707
Регистрация: 12.06.2016
Сообщений: 7,839
06.11.2018, 19:39 3
Sevlovan,

Visual Basic
1
DoCmd.OpenForm IIf(id_task_fk = ...., "Form1", "Form2")
0
0 / 0 / 0
Регистрация: 14.08.2015
Сообщений: 50
07.11.2018, 11:00  [ТС] 4
VinniPuh, Capi, спасибо за проявленное участие!
НО!
1. вариант ВинниПуха мне не подходит т.к. данных в форме "letters" минимум и удобно ее обозревать в ленточном виде и вряд ли это можно реализовать исходя из п.2 см. ниже:
2. вариант Capi мне не удалось реализовать т.к. мне непонятно как передать значение поля [id_task_fk] для открытия двух форм (наборы полей таблицы answ_parametrs). Из схемы видно, что это поле к таблице answ_parametrs относится опосредовано через идентификатор письма.

короче говоря нужно: после ввода данных в форму letters и в подчиненную ей форму svod (после нажатия на кнопку с ключиком) указав там, что это задача с идентификатором "2", при нажатии на кнопку "Указать параметры ответа" открывалась форма "par_into_gr" и при идентификаторе "7" при нажатии на ту же кнопку открывалась форма "par_dostup_eapsd".

для придания нашему обсуждению удобств базу прилагаю)

.. и да - в VBA я имею 1 по шкале 100
Вложения
Тип файла: rar Expert78.rar (301.4 Кб, 8 просмотров)
0
9108 / 6037 / 590
Регистрация: 27.03.2013
Сообщений: 19,811
07.11.2018, 11:21 5
Sevlovan, Что бы что то открыть по какому ни то определяющему признаку, нужно сначала этот признак ввести, чтобы программа могла понять, по какому коду фильтровать другую открываемую форму.
Для этого лучше всего подходят - Подчиненные формы.
Вариант - Capi, подходит только если у вас всего 2 возможных значения, а не бесчисленное множество.
Если же вы хотите открывать форму соответствующую значению той записи, на которой в данный момент находитесь и поле с таким значением имеется в открываемой форме, например и там и там значения с типом данных
Счетчик, а в другой - Числовое, длинное целое, то можно такой процедурой:

DoCmd.OpenForm "ИмяФормы", , , "[ПолеКодОткрываемойФормы] = " & Me![ПолеКодОтКудаОткрывается].
Пример не смотрел, ибо у меня не откроется.
0
0 / 0 / 0
Регистрация: 14.08.2015
Сообщений: 50
07.11.2018, 12:10  [ТС] 6
VinniPuh,

Это у меня реализовано. Но здесь не предполагается условия или-или: открывается подчиненная форма и все, а мне надо чтобы открывалась подчиненная Ф2 или Ф3 c учетом счетчик-число из одной таблицы и параметра поля из другой (svod).

схему я неверно изобразил Ф1 это только таблица letters, ей как раз подчинена форма svod (то, что реализовано) ...
0
9108 / 6037 / 590
Регистрация: 27.03.2013
Сообщений: 19,811
07.11.2018, 12:21 7
Лучший ответ Сообщение было отмечено Sevlovan как решение

Решение

Sevlovan, Ну тогда если у вас значения поля - id_task_fk имеют только 2 значения, например 1 и 2, то можно на кнопке написать так

Visual Basic
1
2
3
4
5
6
    If ([id_task_fk] = 1) Then
        DoCmd.OpenForm "ИмяФормы1"
    End If
    If ([id_task_fk] = 2) Then
        DoCmd.OpenForm "ИмяФормы2"
    End If
Если же значения текстовые, то заключите их в двойные кавычки
0
0 / 0 / 0
Регистрация: 14.08.2015
Сообщений: 50
07.11.2018, 16:25  [ТС] 8
VinniPuh,

Цитата Сообщение от VinniPuh Посмотреть сообщение
DoCmd.OpenForm "ИмяФормы", , , "[ПолеКодОткрываемойФормы] = " & Me![ПолеКодОтКудаОткрывается]
Цитата Сообщение от VinniPuh Посмотреть сообщение
If ([id_task_fk] = 1) Then
* * * * DoCmd.OpenForm "ИмяФормы1"
* * End If
* * If ([id_task_fk] = 2) Then
* * * * DoCmd.OpenForm "ИмяФормы2"
* * End If
ну тогда главный вопрос: как в коде кнопки объединить два данных блока?
0
9108 / 6037 / 590
Регистрация: 27.03.2013
Сообщений: 19,811
07.11.2018, 17:32 9
Sevlovan, А зачем вам первый блок, если у вас всего 2 значения?
Откроется та или иная форма.
Я просто не понимаю всю глубину вашего замысла, соответственно не могу подсказать.
Если вы считаете, что все должны знать ваши мысли, то ошибаетесь.
Если же у вас не одно значение определяет какую форму открыть, а и ещё какое ни то в другом элементе, например нужно перейти на какую ни то записи открытой формы согласно заданного параметра, то это уже по другому.
Пишите пошагово, что бы даже я или кто то другой понял,

В какой форме
Как и что делаете (Что нажимаете или выбиранте).
Какие значения являются определяющими.
Что на ваш взгляд должно произойти
Какие значения отобразиться, а какие нет.
1
0 / 0 / 0
Регистрация: 14.08.2015
Сообщений: 50
07.11.2018, 19:49  [ТС] 10
VinniPuh, ох ох..
Ну значит так.
Имеем:
Форма1 - ввод реквизитов писем. Letters
Форма2 - ввод задач указанных в письме. Svod
Форма 3/4 - ввод параметров ответа на письмо с учётом указанных в письме задач. Answ_parametrs
Цель: получил письмо, ага - указал реквизиты в Ф1, указал задачу «порубить капусту» в Ф2. И затем с главной формы открыть форму ввода параметров для ответа на полученное письмо. Дескать: все понял Иван Иваны, капусту порубим. Или если дело касается картошки вводим параметры ответа на письмо в другую форму: картошка почищена, все будут сыты.
То есть и форма задач и формы параметров ответа имеют внешний ключ id_ письма , но вдобавок необходимо что бы форма параметров при открытии смотрела на id задачи которая была указана для письма.

P. S. Хочется ответы в виде отчётов формировать и из-за этого весь сыр бор. Но об этом после…
0
9108 / 6037 / 590
Регистрация: 27.03.2013
Сообщений: 19,811
08.11.2018, 07:58 11
Sevlovan, То ли после ночи, я ни как не проснусь и соответственно туплю и тормозю, но я в вашем примере не узрил таких форм как -
Svod
Answ_parametrs
ни других форм 3 и 4
Кроме того не увидел ни в одной из форм ни одной подчиненной формы, хотя вы утверждали что у вас именно сделано с подчиненными формами когда я порекомендовал так сделать.
Ни про картошку, ни про капусту не нашел ни одного упоминания, как и того, что их нужно рубить и чистить.
Похоже вам всё это кажется игрой и можно сделать хоть как, лишь бы заработало, но лично для меня это не так.
При проектированиии БД всё должно быть строго определено и соответствовать правилам, как задумано и предписано разработчиками программы.
Так же сплошные поля подстановки в таблицах, что лично для меня неприемлемо.
Я отхожу в сторону ибо из загадок получается хорошо разгадывать только Судоку и Японские кроссворды.
Возможно вы найдете менее щепетильного и более понятливого помощника.
0
Модератор
Эксперт MS Access
12083 / 4943 / 791
Регистрация: 07.08.2010
Сообщений: 14,514
Записей в блоге: 4
08.11.2018, 08:52 12
Похоже , что у ТС 2-е формы, которые чуть-чуть отличаются(основаны на разных запросах)
может сделать одну форму, только скрывать 4 поля для одной группы и высвечивать для другой
SQL
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
===============запрос1===PAR_INTO_GR========
SELECT ap.nn, ap.id_let_fk,
 'от ' & F_letters!date_lett & ' № ' & F_letters!num_lett AS [реквизит заявки],
 ap.[должность адресата], ap.[имя адресата],
 ap.тема,
 ap.обращение,
 ap.пользователь1, ap.[должность пользователя1],
 ap.пользователь2, ap.[должность пользователя2],
 ap.фгр1, ap.фгр2, ap.пол,
 ap.[должность подписанта], ap.[имя подписанта]
 
FROM F_letters
 RIGHT JOIN answ_parametrs AS ap
 ON F_letters.id_letter = ap.id_let_fk;
 
===============запрос2==PAR_DOST_EAPSD=========
SELECT ap.nn, ap.id_let_fk,
 'от ' & F_letters!date_lett & ' № ' & F_letters!num_lett AS [реквизит заявки],
 ap.[должность адресата], ap.[имя адресата],
 ap.тема,
 ap.обращение,
 ap.пользователь1, ap.[должность пользователя1],
 ap.пользователь2, ap.[должность пользователя2],
 ap.фгр1, ap.фгр2, ap.пол,
 ap.[должность подписанта], ap.[имя подписанта],
==отличие===========================================
 ap.стр_гр1, ap.стр_гр2, ap.раздел, ap.[дата доступа]
 
FROM F_letters
 RIGHT JOIN answ_parametrs AS ap
 ON F_letters.id_letter = ap.id_let_fk;
Миниатюры
Открыть одну из двух форм  
0
0 / 0 / 0
Регистрация: 14.08.2015
Сообщений: 50
08.11.2018, 09:43  [ТС] 13
VinniPuh,

В моем сообщении от 11.00 вчера, где я приложил базу, указаны названия форм (ф3/4) и указано что это наборы полей таблицы answ_parametrs.
Цитата Сообщение от Sevlovan Посмотреть сообщение
короче говоря нужно: после ввода данных в форму letters и в подчиненную ей форму svod (после нажатия на кнопку с ключиком) указав там, что это задача с идентификатором "2", при нажатии на кнопку "Указать параметры ответа" открывалась форма "par_into_gr" и при идентификаторе "7" при нажатии на ту же кнопку открывалась форма "par_dostup_eapsd".
формы svod действительно нет, виноват, но есть форма id_form_role (форма ввода данных в таблицу svod), которая открывается из формы letters и туда вводится задача, задача имеет свой идентификатор (2 или 7) и нужно чтобы из той же формы letters, нажимая кнопку "указать параметры ответа", открывалась одна из двух форм: "par_into_gr" или "par_dostup_eapsd", соответствуя исходному письму это

блок 1:
DoCmd.OpenForm "ИмяФормы", , , "[ПолеКодОткрываемойФормы] = " & Me![ПолеКодОтКудаОткрывается]

и задаче - блок 2:

Visual Basic
1
2
3
4
5
6
   If ([id_task_fk] = 1) Then
        DoCmd.OpenForm "ИмяФормы1"
    End If
    If ([id_task_fk] = 2) Then
        DoCmd.OpenForm "ИмяФормы2"
    End If
Вы сказали что БД у вас не открывается и я вам набросал умозрительный пример в последнем сообщении, естественно ни картошки ни капусты в базе нет, это абстрактные примеры...

... извините, что спроектировал базу в неприемлемом для вас виде о чем я только думал...


Спасибо!

Добавлено через 2 минуты
shanemac51, я не против, только как реализовать механизм определения в каком виде она должна открыться...

Спасибо!
0
9108 / 6037 / 590
Регистрация: 27.03.2013
Сообщений: 19,811
08.11.2018, 13:14 14
Цитата Сообщение от Sevlovan Посмотреть сообщение
...извините, что спроектировал базу в неприемлемом для вас виде...
Ценю здоровый цинизм с оттенками юмора, так что - Извиняю.
0
0 / 0 / 0
Регистрация: 14.08.2015
Сообщений: 50
09.11.2018, 09:33  [ТС] 15
Цитата Сообщение от VinniPuh Посмотреть сообщение

Visual Basic
1
2
3
4
5
6
If ([id_task_fk] = 1) Then
DoCmd.OpenForm "ИмяФормы1"
End If
If ([id_task_fk] = 2) Then
DoCmd.OpenForm "ИмяФормы2"
End If
основной проблемы не решило, но зато помогло при открытии одного из двух отчетов по условию
0
09.11.2018, 09:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.11.2018, 09:33
Помогаю со студенческими работами здесь

Как собрать информацию из двух предыдущих форм в одну?
Имеются 2 формы. В Form1 содержится ComboBox1, в который заносим информацию, нажимаем Окей. Form1...

Как собрать информацию из двух предыдущих форм в одну?
Имеются 2 формы. В Form1 содержится ComboBox1, в который заносим информацию, нажимаем Окей. Form1...

При нажатии кнопки открыть одну и ту же форму в двух экземплярах
Может кто знает как при нажатие на кнопку, чтобы одна и та жа форма (в 2 экземплярах) открылась .

Связывание двух форм по расположению на мониторе(Синхронизация форм)
Такая проблема, представим если 2 формы, на первой форме есть клавиша "На вторую форму", которая...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru