powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Поиск данных, макросы
10 сообщений из 10, страница 1 из 1
Поиск данных, макросы
    #32813155
Bartalby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть три формы с разным колличеством полей, но в каждой имеется поле "Номер договора". Необходимо по нажатию кнопки на Стартовой форме (коя имеется) открыть форму в которой имеется искомая запись (может быть только одна). То есть, сначала проверяем записи в первой форме, если запись есть, то выдаём результат и дальше поиск не производим, инача - поиск во второй и также, если есть результат-стоп, иначе ешем в третьей. Написал три макроса на открытие каждой формы поотдельности. Как объединить? Если записи нет, как выдать сообщение, а не открывать пустую форму. Зарание СПАСИБО!
...
Рейтинг: 0 / 0
Поиск данных, макросы
    #32813160
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бросить гадкие, противные макросы и начать писать на нормальном VBA.
...
Рейтинг: 0 / 0
Поиск данных, макросы
    #32813723
Galustov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а можно спросить, что необходимо получить, а не как это должно работать?
я не понял зачем искать на формах, ведь данные хранятся в таблицах, можно в них и поискать, а потом открыть один раз форму, которая необходима, либо ничего не открывать...
короче надо подробнее задачу обрисовать
...
Рейтинг: 0 / 0
Поиск данных, макросы
    #32813906
Bartalby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galustovа можно спросить, что необходимо получить, а не как это должно работать?
я не понял зачем искать на формах, ведь данные хранятся в таблицах, можно в них и поискать, а потом открыть один раз форму, которая необходима, либо ничего не открывать...
короче надо подробнее задачу обрисовать

Последовал совету предыдущего участника и начал программировать на VBA.
Как проверить на равенство значение переменной и значение поля в форме базы? Пробую переменная=Forms!Договора!Номер. Выдаётся сообщение - форма не найдена.

А как обратиться к таблице? Необходимо, если в поле таблицы "Договора" значение в поле "Номер" совпадает со значением в переменной открыть форму "Договора".
...
Рейтинг: 0 / 0
Поиск данных, макросы
    #32813944
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если пишете внутри формы - через Me.<ControlName> Например Me.iDocumentID

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

Dim frm as Form 'не будет автозаполнения кода
Dim frm as Form_frmDocument 'будет автозаполнения кода, потому что указан ваш конкретный класс формы

Set frm = Forms("frmDocument")

Теперь печатаете frm. выскакивают контролы вашей формы - в синтаксисе не ошибетесь.

if frm.iDocumentID= . . .

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

В какой записи в таблице договора должно совпадать ? В любой ?

if DCount("iDogovorID","tblDogovor","iDogovorID=" & Cstr(Me.iDogovorID)) > 0 Then ...
...
Рейтинг: 0 / 0
Поиск данных, макросы
    #32814186
Bartalby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть три таблицы и соответствующие им формы "Подрядчик договора", "Подрядчик этапа" и "Подрядчик подэтапа" с разным колличеством полей, но в каждой
есть поле "Номер договора с подрядчиком". По нажатию кнопки на Стартовой форме запрашивается "Введите номер договора с подрядчиком" и необходимо открыть формы, в которой имеется искомая запись, иначе - сообщение об её отсутствии.
Пустые формы не открывать. Пробую писать на VBA. Считываю "Введите номер..." в переменную "а". Как организовать проход по записям таблицы или формы "Подрядчик договора" и сравнивать с "а". Конструкция IF a = Forms![Подрядчик договора]![Номер договора с подрядчиком] THEN....
не работает - форма не найдена. Как обратиться к таблице? Или может запускать запрос на поиск, но чтобы он не открывал таблицу, а возвращал есть запись или нет. И так по всем трём таблица/формам. Можно ли открывать в одной форме записи с разным колличеством полей, чтобы не открывать три формы.
...
Рейтинг: 0 / 0
Поиск данных, макросы
    #32814284
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Должна быть общая таблица подрядчиков. Плюс три таблицы с различающимися деталями по разновидностям подрядчиков.

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

А помнить все номера и вводить их - некошерно. А ну как на одну циферку ошибесси ?
...
Рейтинг: 0 / 0
Поиск данных, макросы
    #32814316
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перечитал ваше предыдущее сообщение еще раз. Плясать надо от договоров.

Договор - этап договора - подэтап договора:
tblContract (iContractID*, sContactName, iPersonID)
tblContractStep (iContractStepID*, iContractID, sContactStepName, iPersonID)
tblContractSubStep (iContractSubStepID*, iContractStepID, sContactName, iPersonID)

Подрядчики:
tblPerson (iPersonID*, sPersonName)

Для случая, когда каждый договор, этап и пр. выполняется ЕДИНСТВЕННЫМ пордрядчиком. Иначе надо делать таблицу выполнения договоров многие ко многим.

Строим форму frmContract. В нее вложить подчиненную этапы grContractStep и подчиненную grContractSubStep. Связать мастер/детайл frmContract и grContractStep через iContactID. Связать мастер/детайл grContractStep и grContractSubStep через iContractStepID.

Живописно расположить кнпочки "данные по подрядчику договора", "Этапа", "Подэтапа". При нажатии на которые открывать формы с данными по подрядчикам из главной формы или соответствующего грида через iPersonID.
...
Рейтинг: 0 / 0
Поиск данных, макросы
    #32814371
Bartalby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть три таблицы и соответствующие им формы "Подрядчик договора", "Подрядчик этапа" и "Подрядчик подэтапа" с разным колличеством полей, но в каждой
есть поле "Номер договора с подрядчиком". По нажатию кнопки на Стартовой форме запрашивается "Введите номер договора с подрядчиком" и необходимо открыть формы, в которой имеется искомая запись, иначе - сообщение об её отсутствии.
Пустые формы не открывать. Пробую писать на VBA. Считываю "Введите номер..." в переменную "а". Как организовать проход по записям таблицы или формы "Подрядчик договора" и сравнивать с "а". Конструкция IF a = Forms![Подрядчик договора]![Номер договора с подрядчиком] THEN....
не работает - форма не найдена. Как обратиться к таблице? Или может запускать запрос на поиск, но чтобы он не открывал таблицу, а возвращал есть запись или нет. И так по всем трём таблица/формам. Можно ли открывать в одной форме записи с разным колличеством полей, чтобы не открывать три формы.
...
Рейтинг: 0 / 0
Поиск данных, макросы
    #32814389
Bartalby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист-ЛюбительЕсли пишете внутри формы - через Me.<ControlName> Например Me.iDocumentID

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

Dim frm as Form 'не будет автозаполнения кода
Dim frm as Form_frmDocument 'будет автозаполнения кода, потому что указан ваш конкретный класс формы

Set frm = Forms("frmDocument")

Теперь печатаете frm. выскакивают контролы вашей формы - в синтаксисе не ошибетесь.

if frm.iDocumentID= . . .

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

В какой записи в таблице договора должно совпадать ? В любой ?

if DCount("iDogovorID","tblDogovor","iDogovorID=" & Cstr(Me.iDogovorID)) > 0 Then ...

Есть три таблицы и соответствующие им формы "Подрядчик договора", "Подрядчик этапа" и "Подрядчик подэтапа" с разным колличеством полей, но в каждой
есть поле "Номер договора с подрядчиком". По нажатию кнопки на Стартовой форме запрашивается "Введите номер договора с подрядчиком" и необходимо открыть формы, в которой имеется искомая запись, иначе - сообщение об её отсутствии.
Пустые формы не открывать. Пробую писать на VBA. Считываю "Введите номер..." в переменную "а". Как организовать проход по записям таблицы или формы "Подрядчик договора" и сравнивать с "а". Конструкция IF a = Forms![Подрядчик договора]![Номер договора с подрядчиком] THEN....
не работает - форма не найдена. Как обратиться к таблице? Или может запускать запрос на поиск, но чтобы он не открывал таблицу, а возвращал есть запись или нет. И так по всем трём таблица/формам. Можно ли открывать в одной форме записи с разным колличеством полей, чтобы не открывать три формы.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Поиск данных, макросы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]