|
|
|
Поиск данных, макросы
|
|||
|---|---|---|---|
|
#18+
Есть три формы с разным колличеством полей, но в каждой имеется поле "Номер договора". Необходимо по нажатию кнопки на Стартовой форме (коя имеется) открыть форму в которой имеется искомая запись (может быть только одна). То есть, сначала проверяем записи в первой форме, если запись есть, то выдаём результат и дальше поиск не производим, инача - поиск во второй и также, если есть результат-стоп, иначе ешем в третьей. Написал три макроса на открытие каждой формы поотдельности. Как объединить? Если записи нет, как выдать сообщение, а не открывать пустую форму. Зарание СПАСИБО! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2004, 19:34:45 |
|
||
|
Поиск данных, макросы
|
|||
|---|---|---|---|
|
#18+
Бросить гадкие, противные макросы и начать писать на нормальном VBA. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2004, 19:53:10 |
|
||
|
Поиск данных, макросы
|
|||
|---|---|---|---|
|
#18+
а можно спросить, что необходимо получить, а не как это должно работать? я не понял зачем искать на формах, ведь данные хранятся в таблицах, можно в них и поискать, а потом открыть один раз форму, которая необходима, либо ничего не открывать... короче надо подробнее задачу обрисовать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2004, 09:25:42 |
|
||
|
Поиск данных, макросы
|
|||
|---|---|---|---|
|
#18+
Galustovа можно спросить, что необходимо получить, а не как это должно работать? я не понял зачем искать на формах, ведь данные хранятся в таблицах, можно в них и поискать, а потом открыть один раз форму, которая необходима, либо ничего не открывать... короче надо подробнее задачу обрисовать Последовал совету предыдущего участника и начал программировать на VBA. Как проверить на равенство значение переменной и значение поля в форме базы? Пробую переменная=Forms!Договора!Номер. Выдаётся сообщение - форма не найдена. А как обратиться к таблице? Необходимо, если в поле таблицы "Договора" значение в поле "Номер" совпадает со значением в переменной открыть форму "Договора". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2004, 10:54:32 |
|
||
|
Поиск данных, макросы
|
|||
|---|---|---|---|
|
#18+
Если пишете внутри формы - через 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 ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2004, 11:18:46 |
|
||
|
Поиск данных, макросы
|
|||
|---|---|---|---|
|
#18+
Есть три таблицы и соответствующие им формы "Подрядчик договора", "Подрядчик этапа" и "Подрядчик подэтапа" с разным колличеством полей, но в каждой есть поле "Номер договора с подрядчиком". По нажатию кнопки на Стартовой форме запрашивается "Введите номер договора с подрядчиком" и необходимо открыть формы, в которой имеется искомая запись, иначе - сообщение об её отсутствии. Пустые формы не открывать. Пробую писать на VBA. Считываю "Введите номер..." в переменную "а". Как организовать проход по записям таблицы или формы "Подрядчик договора" и сравнивать с "а". Конструкция IF a = Forms![Подрядчик договора]![Номер договора с подрядчиком] THEN.... не работает - форма не найдена. Как обратиться к таблице? Или может запускать запрос на поиск, но чтобы он не открывал таблицу, а возвращал есть запись или нет. И так по всем трём таблица/формам. Можно ли открывать в одной форме записи с разным колличеством полей, чтобы не открывать три формы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2004, 12:31:33 |
|
||
|
Поиск данных, макросы
|
|||
|---|---|---|---|
|
#18+
Должна быть общая таблица подрядчиков. Плюс три таблицы с различающимися деталями по разновидностям подрядчиков. Можно сделать главную форму - промотр подрядчиков. В ней субформ(грид) подрячиков или достаточно большой многоколоночный список и кнопки "Подрядчик договора", "Подрядчик этапа" и "Подрядчик подэтапа", при нажатии которых и выскакивают ваши специализированные формы. А помнить все номера и вводить их - некошерно. А ну как на одну циферку ошибесси ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2004, 13:08:07 |
|
||
|
Поиск данных, макросы
|
|||
|---|---|---|---|
|
#18+
Перечитал ваше предыдущее сообщение еще раз. Плясать надо от договоров. Договор - этап договора - подэтап договора: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2004, 13:24:54 |
|
||
|
Поиск данных, макросы
|
|||
|---|---|---|---|
|
#18+
Есть три таблицы и соответствующие им формы "Подрядчик договора", "Подрядчик этапа" и "Подрядчик подэтапа" с разным колличеством полей, но в каждой есть поле "Номер договора с подрядчиком". По нажатию кнопки на Стартовой форме запрашивается "Введите номер договора с подрядчиком" и необходимо открыть формы, в которой имеется искомая запись, иначе - сообщение об её отсутствии. Пустые формы не открывать. Пробую писать на VBA. Считываю "Введите номер..." в переменную "а". Как организовать проход по записям таблицы или формы "Подрядчик договора" и сравнивать с "а". Конструкция IF a = Forms![Подрядчик договора]![Номер договора с подрядчиком] THEN.... не работает - форма не найдена. Как обратиться к таблице? Или может запускать запрос на поиск, но чтобы он не открывал таблицу, а возвращал есть запись или нет. И так по всем трём таблица/формам. Можно ли открывать в одной форме записи с разным колличеством полей, чтобы не открывать три формы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2004, 13:38:23 |
|
||
|
Поиск данных, макросы
|
|||
|---|---|---|---|
|
#18+
Программист-ЛюбительЕсли пишете внутри формы - через 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.... не работает - форма не найдена. Как обратиться к таблице? Или может запускать запрос на поиск, но чтобы он не открывал таблицу, а возвращал есть запись или нет. И так по всем трём таблица/формам. Можно ли открывать в одной форме записи с разным колличеством полей, чтобы не открывать три формы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2004, 13:43:43 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32813906&tid=1669943]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
63ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 389ms |

| 0 / 0 |
