powered by simpleCommunicator - 2.0.48     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Microsoft Access 2000 (2003) - вопрос по макросам
23 сообщений из 23, страница 1 из 1
Microsoft Access 2000 (2003) - вопрос по макросам
    #36952237
Serega.M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребята, есть вопрос:

Есть лаба по Access 2000(2003) и там задание:
1. Сделать запрос (вытягивает какие-то данные о продукте по его номеру)
2. На основании запроса необходимо сделать форму (сначала запрашивает номер продукта, а потом его открывает).
3. Сделать макрос: открывает форму (соответственно здесь будет сначала запрос на номер продукта, а потом сама форма), если введённый номер продукта не существует, то надо вывести об этом сообщение, затем закрыть форму, а потом открыть форму для ввода нового продукта.

Загвоздка в том, как закрыть форму автоматически если нет такого продукта в таблице?
...
Рейтинг: 0 / 0
Microsoft Access 2000 (2003) - вопрос по макросам
    #36952318
kinotaurus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serega.M,

А зачем открывать форму для отсутствующего продукта, чтобы потому мучиться с ее закрытием -- может, проще не открывать?
...
Рейтинг: 0 / 0
Microsoft Access 2000 (2003) - вопрос по макросам
    #36952324
Serega.M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kinotaurus,

если это от меня зависело :) - Такая вот постановка задания.
...
Рейтинг: 0 / 0
Microsoft Access 2000 (2003) - вопрос по макросам
    #36952325
kinotaurus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serega.M,

И это нужно реализовывать именно макросами -- не на VBA?
...
Рейтинг: 0 / 0
Microsoft Access 2000 (2003) - вопрос по макросам
    #36952332
Serega.M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kinotaurus,

увы да.. полный текст постановки задачи:

Создайте параметрический запрос на выборку «Запрос для макроса 8», выводящий значения полей инвентарной карточки по указанному пользователем инвентарному номеру, после чего создайте форму «фрм: для макроса 8» на основе этого запроса. Далее создайте макрос «Макрос 8», открывающий форму «фрм: для макроса 8» с табличным представлением данных. Если же инвентарной карточки с указанным номером не существует, то макрос должен закрыть форму «фрм: для макроса 8» и выдать на экран соответствующее сообщение. В этом случае после закрытия пользователем окна с сообщением должна открыться существующая форма «фрм8: Инвентарные карточки ОС» в режиме ввода новой записи, причем поле «РежимИспользования» уже должно содержать значение «"Сдано в аренду"», а поле «ДатаВыбытия» - текущую дату
...
Рейтинг: 0 / 0
Microsoft Access 2000 (2003) - вопрос по макросам
    #36952412
kinotaurus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serega.M,

Леденящая душу история... Где это так людей к работе с Access'ом готовят?

Я макросы в руки не брал с 1997 года, так что уже и не помню, как с ними обращаются... Это ни разу не инструмент разработчика.

Насколько я помню, переменные в макросах не реализованы ни в каким виде, поэтому я бы действовал так:

1. Открываю форму -- действие OpenForm
2. В специально подготовленное поле кладу значение =InputBox("Введите номер продукта") -- действие SetValuwe
3. Если DCount() от запроса с этим значением возвращает 0 записей, закрываю форму -- действие Close -- и открываю другую форму -- действие OpenForm

Как-то так...
...
Рейтинг: 0 / 0
Microsoft Access 2000 (2003) - вопрос по макросам
    #36952420
Serega.M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kinotaurus,

Спасибо за ответ. Дома попробую.

Это всё Белорусский государственный университет информатики и радиоэлектроники :)
...
Рейтинг: 0 / 0
Microsoft Access 2000 (2003) - вопрос по макросам
    #36952693
Serega.M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kinotaurus,

Не могли бы вы пояснить:

В специально подготовленное поле кладу значение =InputBox("Введите номер продукта") -- действие SetValuwe


Это как выглядит?
...
Рейтинг: 0 / 0
Microsoft Access 2000 (2003) - вопрос по макросам
    #36953303
ё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ё
Гость
Serega.M,

вот так (рис)

зы
действительно, с такими "постановками" - ничего кроме отвращения к Акс-у, "непривьёш" ))
...
Рейтинг: 0 / 0
Microsoft Access 2000 (2003) - вопрос по макросам
    #36953544
kinotaurus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serega.M,

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

Белоруссии привет! (Я сам из Минска исходно...) :)

Все остальное, кроме InputBox, получилось?
...
Рейтинг: 0 / 0
Microsoft Access 2000 (2003) - вопрос по макросам
    #36953813
Serega.M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kinotaurus,

Увы не получилось. :(

Сейчас сделано так:

1. ОткрытьФорму
- имя формы: "фрм: для макроса 8"
- режим: форма
- режим данных: изменение
- режим окна: окно диалога
2. ЗадатьЗначение
- Элемент: [Формы]![фрм: для макроса 8]![ИнвентарныйНомер]
- Выражение: InputBox("Введите Инвентарный Номер")
3. Закрыть
- Тип объекта: Форма
- Имя объект: "фрм: для макроса 8"
- Сохранение: Нет
4. Сообщение
- Сообщение: Нет такой записи. Добавить?
- Сигнал: Да
- Тип: Предупреждающее?
- Заголовок: Нет такой записи
5. ОткрытьФорму
- имя формы: "фрм: для макроса 8"
- режим: форма
- режим данных: добавление
- режим окна: обычное

Работает практически также, только добавляется запрос на ввод инвентарного номера при открытии формы.


По поводу программы обсалютно с вами согласен.. пихают то что реально не применяется в жизни... Сам я с Access тоже работал года 4 назад.. теперь вот жене делаю лабу :)
...
Рейтинг: 0 / 0
Microsoft Access 2000 (2003) - вопрос по макросам
    #36953926
kinotaurus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serega.M,

А что именно не получилось?..
...
Рейтинг: 0 / 0
Microsoft Access 2000 (2003) - вопрос по макросам
    #36953950
ё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ё
Гость
Serega.M...
Работает практически также, только добавляется запрос на ввод инвентарного номера при
...дык, а что вы сделали параметром в "параметрический запрос" ?
должно было что-то типа
Код: plaintext
where [инвентарного номера] = [Формы]![фрм: для макроса  8 ]![ИнвентарныйНомер]
а у вас там что ?
покажите запрос
...
Рейтинг: 0 / 0
Microsoft Access 2000 (2003) - вопрос по макросам
    #36953957
ё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ё
Гость
...даа, и дальше (п.3) - макрокоманда Обновить для [Формы]![фрм: для макроса 8]
...
Рейтинг: 0 / 0
Microsoft Access 2000 (2003) - вопрос по макросам
    #36960861
Serega.M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kinotaurus,

Вчера за минут 5-10 написал в Access 2010:

Код: plaintext
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.
Option Compare Database

'------------------------------------------------------------
' Macro1
'
'------------------------------------------------------------
Function Macro1()
On Error GoTo Macro1_Err

    Dim varIN As Variant
    varIN = InputBox("Введите Интвенторный номер", "Инвенторный номер")
    If (DCount("*", "Инвентарные карточки ОС", "[ИнвентарныйНомер] = '" & varIN & "'") >  0 ) Then
        DoCmd.SetParameter "Введите инвентарный номер", varIN
        DoCmd.OpenForm "фрм: для макроса 8", acNormal, "", "", acEdit, acNormal
    Else
        MsgBox "Запись с таким инвенторным номером отсутсвует. Добавить?", vbQuestion, "Запись отсутсвует"
        DoCmd.Close acForm, "фрм: для макроса 8"
        DoCmd.OpenForm "фрм: для макроса 8", acNormal, "", "", acAdd, acNormal
    End If


Macro1_Exit:
    Exit Function

Macro1_Err:
    MsgBox Error$
    Resume Macro1_Exit

End Function


Осталось проверить, что в Access 2003 заработает.. ?
...
Рейтинг: 0 / 0
Microsoft Access 2000 (2003) - вопрос по макросам
    #36960919
alvk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serega.M,

А как из этого макрос сделать??
Что касается будет работать или нет, то конечно будет, ведь всё абсолютно такое же, не вижу
нового ничего.
...
Рейтинг: 0 / 0
Microsoft Access 2000 (2003) - вопрос по макросам
    #36960921
Serega.M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alvk,

По сути это и есть макрос :)
...
Рейтинг: 0 / 0
Microsoft Access 2000 (2003) - вопрос по макросам
    #36960926
alvk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serega.M,

по сути это функция на VBA, а макрос вот тут:
...
Рейтинг: 0 / 0
Microsoft Access 2000 (2003) - вопрос по макросам
    #36960930
Serega.M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alvk,

Так что не получиться из vba сделать макрос?

Странно.. я думал что если из макроса можно сделать vba, то и обратно можно... :((

Как же тогда так??
...
Рейтинг: 0 / 0
Microsoft Access 2000 (2003) - вопрос по макросам
    #36960980
нутакэта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
можно открыть форму, проверить прямо в этой форме наличие значения в поле того самого ключа - если значения нет (т.е. в случае когда запрос не выбрал ни одной записи) - закрыть эту форму, сообщить и открыть другую.

в таком духе.
...
Рейтинг: 0 / 0
Microsoft Access 2000 (2003) - вопрос по макросам
    #36960993
ALEXIS_22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обратный перевод из VBA в макросы изначально не предпологается, потому как возможности VBA гораздо шире.

Увы !
...
Рейтинг: 0 / 0
Microsoft Access 2000 (2003) - вопрос по макросам
    #36961037
Serega.M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нутакэта,

спасибо - работает! Это просто великолепно!
Осталось проверить для Access 2000(2003) (дома посмотрю, здесь только 2010), т.к. насколько я помню вызов [Forms]![фрм: для макроса 8]![Номер] у меня выбрасывал ошибку, что типа нет такой формы... И кстати он не переходил к макрокоманде 2 пока первую форму я сам не закрою.. Не знаю в чём проблема.. может в моём Access, а может это специфика работы Access?

ALEXIS_22,

Жаль что они не реализовали эту возможность, т.к. её наличие вполне логично ;)
...
Рейтинг: 0 / 0
Microsoft Access 2000 (2003) - вопрос по макросам
    #36962504
Serega.M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Serega.Mнутакэта,

спасибо - работает! Это просто великолепно!
Осталось проверить для Access 2000(2003) (дома посмотрю, здесь только 2010), т.к. насколько я помню вызов [Forms]![фрм: для макроса 8]![Номер] у меня выбрасывал ошибку, что типа нет такой формы... И кстати он не переходил к макрокоманде 2 пока первую форму я сам не закрою.. Не знаю в чём проблема.. может в моём Access, а может это специфика работы Access?

ALEXIS_22,

Жаль что они не реализовали эту возможность, т.к. её наличие вполне логично ;)

Короче всё работает... по поводу проблемы описанной выше: проблема возникает когда форму открывать как "окно диалога"... ох.. всё так было просто ;)
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Microsoft Access 2000 (2003) - вопрос по макросам
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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