Access для Microsoft 365 Access 2021 Access 2019 Access 2016 Access 2013 Access 2010 Access 2007 Еще…Меньше
Иногда при открытии объекта Access (например, таблицы, запроса, формы или отчета) отображается диалоговое окно Введите значение параметра. При открытии объекта, содержащего идентификатор или выражение, которые Access не может интерпретировать, откроется следующее диалоговое окно.
В некоторых случаях это как раз то, что нужно пользователю. Например, создатель базы данных может настроить запрос, который позволяет вводить информацию при каждом его запуске, например дату начала или код сотрудника. Такое диалоговое окно может выглядеть следующим образом:
Однако в других случаях это диалоговое окно отображаться не нужно. Например, вы могли внести некоторые изменения в дизайн базы данных. Теперь при открываемом объекте в Access неожиданно открывается диалоговое окно с сообщением, которое вы не понимаете.
В этой статье описывается, как установить причины запроса определенных значений параметров в Access и как прекратить такие запросы.
Примечание: Эта статья не относится к веб-приложениям Access — типам баз данных, которые вы проектаете в Access и публикуете в Интернете Microsoft 365 или SharePoint.
Как прекратить запросы значения параметра
Чтобы диалоговое окно Введите значение параметра больше не появлялось, необходимо проверить все выражения, связанные с рабочим объектом, и найти идентификатор, который вызывает это окно. Затем необходимо исправить идентификатор или синтаксис выражения, которое содержит этот идентификатор.
Дополнительные сведения о синтаксисе выражений приведены по ссылкам в разделе «См. также».
При появлении нежелательного диалогового окна Введите значение параметра обратите внимание на идентификатор или выражение, отображенные в диалоговом окне. Например, «SomeIdentifier», как показано на снимке экрана ниже.
Нажмите кнопку «Отмена» и выполните одну из следующих процедур в зависимости от типа объекта, при открытии которого появляется диалоговое окно. Ниже приведены общие инструкции для проверки выражений в различных типах объектов. Следует учесть, что конкретные изменения, которые необходимо внести, зависят от структуры базы данных.
Типографические ошибки в запросах являются частой причиной появления нежелательных диалоговых окон. Как было указано ранее, если запрос предназначен для получения данных о значении параметра при запуске, появляется диалоговое окно Введите значение параметра. Но если запрос не должен запрашивать значение параметра, попробуйте найти в запросе неправильные выражения, используя следующий порядок действий.
-
Щелкните правой кнопкой мыши запрос в области навигации и выберите Режим конструктора.
-
Проверьте идентификаторы и выражения в строке Поле и строках Условия и определите, соответствует ли их текст отображенному в диалоговом окне Введите значение параметра. В частности, если одна из ячеек в строке Поле содержит значение Expr1: [идентификатор], оно может быть причиной появления диалогового окна.
Ссылки на дополнительную информацию о создании запросов параметров см. в разделе «См. также».
К началу страницы
Если при открытии отчета появляется диалоговое окно Введите значение параметра, выполните следующие действия для проверки свойств отчета.
-
В области навигации щелкните отчет правой кнопкой мыши и выберите команду Режим конструктора.
Примечание: Перед тем как продолжить, посмотрите, не отображается ли в левом верхнем углу любого из элементов управления в отчете зеленый треугольник. Треугольник обозначает, что Access не может оценить идентификатор или выражение в свойстве Данные этого элемента управления. Если какой-то элемент управления содержит зеленый треугольник, обратите на него особое внимание при выполнении следующих действий.
-
Если область задач Страница свойств не отображается, нажмите клавишу F4.
-
В области задач Страница свойств откройте вкладку Все.
-
Выберите элемент управления, который отображает данные в отчете (например, текстовое поле, ячейку или поле со списком). Если в каких-то из элементов управления отображается зеленый треугольник, о котором говорилось в шаге 1, щелкните сначала один из этих элементов.
-
В области задач Страница свойств проверьте, есть ли в свойстве Данные идентификатор, который отображается в диалоговом окне Введите значение параметра, а затем при необходимости измените выражение.
-
Повторите шаги 4 и 5 для других элементов управления в отчете, пока не найдете выражение, которое является причиной проблемы.
-
Если найти проблему все равно не удается, проверьте наличие неправильных выражений в области Группировка, сортировка и итоги:
-
если область Группировка, сортировка и итоги не отображается, на вкладке Конструктор в группе Группировка и итоги нажмите кнопку Группировка и сортировка;
-
если в области Группировка, сортировка и итоги отображаются пункты «Сгруппировать по выражению» или «Сортировать по выражению», щелкните слово «выражение», чтобы открыть конструктор выражений, где можно проверить выражение и при необходимости изменить его.
-
К началу страницы
Если диалоговое окно Введите значение параметра появляется каждый раз при открытии формы, неправильное выражение может находиться в базовом запросе. Проверьте базовый запрос на предмет неправильных выражений.
-
В области навигации щелкните форму правой кнопкой мыши и выберите пункт Конструктор.
-
Если область задач Страница свойств не отображается, нажмите клавишу F4.
-
Убедитесь, что в списке вверху панели задач Страница свойств выбран пункт Форма, и перейдите на вкладку Все.
-
Изучите свойство Источник записи. Если оно содержит название запроса или инструкцию SQL, один из идентификаторов в выражении может быть неправильным, что и вызывает появление диалогового окна Введите значение параметра. Выберите поле свойства «Источник записей» и нажмите кнопку «Построить»
.
-
Чтобы найти неправильное выражение, следуйте инструкциям в разделе Проверка выражений в запросе.
Важно: Чтобы сохранить изменения, внесенные в запрос, закройте его, а затем сохраните форму, перед тем как переходить назад в представление. В противном случае все внесенные изменения будут потеряны.
К началу страницы
Неправильное выражение в параметре Источник строк такого элемента управления, как поле со списком или окно со списком, может стать причиной появления диалогового окна Введите значение параметра. В некоторых случаях диалоговое окно не появляется до попытки использовать элемент управления. Для проверки параметра Источник строк элемента управления используйте следующий порядок действий.
-
В области навигации щелкните форму правой кнопкой мыши и выберите пункт Конструктор.
-
Выберите поле или окно со списком, которое необходимо проверить.
-
Если область задач Страница свойств не отображается, нажмите клавишу F4.
-
Перейдите на вкладку Данные, проверьте свойство Источник строк и определите, соответствует ли текст тексту в диалоговом окне Введите значение параметра.
К началу страницы
Если Access отображает диалоговое окно Введите значение параметра каждый раз при открытии таблицы, скорее всего, неправильное выражение содержится в свойстве Источник строк поля подстановки этой таблицы.
-
В области навигации щелкните таблицу правой кнопкой мыши и выберите пункт Конструктор.
-
Чтобы определить, является ли поле полем подстановки, щелкните название поля, а затем в контекстном меню Свойства поля выберите вкладку Подстановка. Если вкладка содержит свойство Источник строк, поле является полем подстановки. Изучите свойство Источник строк. Если оно содержит инструкцию SQL, значит один из идентификаторов в выражении может быть неправильным, что и вызывает появление диалогового окна Введите значение параметра.
Примечание: Таблица может содержать несколько полей подстановки, поэтому проверьте вкладки подстановки для каждого поля.
К началу страницы
Нужна дополнительная помощь?
Содержание:
1. Как установить параметр в запросе?
2. Функция параметра «Ссылка»
3. Параметр «Дата»
Параметр в 1С – это некий элемент, принятый функцией. В данной статье поговорим о видах и типах параметров, а также рассмотрим, как задать параметры так, чтобы избежать ошибки «Неверные параметры» в 1С.
1. Как установить параметр в запросе?
Параметр запроса – это некоторый элемент, который находится внутри функции поиска по базе данных. Рассмотрим пример, как должны быть установлены параметры запроса. Например, пускай нам нужно получить составляющие из перечня-справочника под названием «Еда» красного, жёлтого или зелёного цвета, это будет иметь такой вид:
Рис. 1 Как установить параметр в запросе «Красный»
Рис. 2 Как установить параметр в запросе «Желтый»
Рис. 3 Как установить параметр в запросе «Зеленый»
Можно увидеть, что, по факту, все эти запросы одинаковые и разность только в цвете. Это-то и есть наш параметр – та переменная, которую не хотелось бы каждый раз повторять. В вышеуказанном примере параметр – это цвет, дадим ему имя «ВыбранныйЦвет» и поменяем значения цветов на эту переменную внутри запроса. А для того чтобы указать, что это именно параметр, нужно приписать перед именем амперсанд «&», тогда мы сможем задать параметр в запросе:
Рис. 4 Как задать параметр в запросе «ВыбранныйЦвет»
После этой процедуры пробуем выполнить наш запрос, результат будет пустым и выглядеть так:
Рис. 5 Результат неверного параметра в запросе пустой
Результат запроса пустой по причине того, что в коде не было указано само значение параметра. Выберем имя, для этого потребуется задействовать панель, которая находится над редактором запросов. Внутри данной панели размещен текст запросов:
Рис. 6 Редактор запросов – панель с текстом запросов
Система 1С уже узнала параметр внутри запроса и выделила его в соответствующей секции, но пока без значений. Меняем пустое значение запроса, например, на значение «Жёлтый».
Рис. 7 Смена пустого значения запроса на «Желтый»
Теперь запрос выполнится! Аналогично можно заполнить оставшиеся значения. Так при помощи параметра можно в одном и том же запросе получать результаты, которые отличаются. То есть, главная функция параметров внутри запросов – делать их более обобщёнными. Это особенно актуально в сложных запросах, так как достаточно будет только изменить сам параметр, не меняя весь запрос.
2. Функция параметра «Ссылка»
В этом варианте будет сравниваться в качестве ограничения для параметра не название цвета, а значение по ссылке:
Рис. 8 Ограничение для параметра – значение по ссылке
Наш параметр «ВыбранныйЦвет» из строки превратился в ссылку на какой-то элемент внутри справочника «Цвета», поэтому у пользователя есть возможность изменить параметр и его тип:
Рис. 9 Изменения типа параметра в 1С
После этого, в момент, когда ведётся выбор значения данного параметра, перед нами появится выпадающий список с перечнем цветов – это функция параметра ссылки.
3. Параметр «Дата»
Допустим, нужен запрос, который будет выбирать заказы клиентов в определённый период. Данный период будет иметь две границы – «НачалоИнтервала» и «КонецИнтервала».
Рис. 10 Параметр «Дата»
Аналогично выполняем данный запрос и видим, что 1С уже распознала, что у данного параметра тип «Дата». Пусть нам нужны заказы за январь 2014 года, тогда получим:
Рис. 11 Пример запроса по параметру «Дата»
Результат запроса с параметром «Дата» будет выглядеть следующим образом:
Рис. 12 Результат запроса с параметром «Дата»
В данной статье были рассмотрены параметры в системе 1С, видов параметр внутри запроса, параметр с типом «Дата», параметры с типом «Ссылка», аналогично проводится работа с параметрами в списках таблиц и таблиц со значениями. Ошибка в них возникает в случае задания невозможного названия, типа, их несоответствий, пунктуационных ошибок в коде программы.
Специалист компании «Кодерлайн»
Айдар Фархутдинов
|
|||
ВагонНеЗнаний
29.09.15 — 10:59 |
Всем привет. Нахожусь в некотором ступоре, ибо не понимаю, почему анализатор синтаксиса текста запроса ругается. |
||
Ненавижу 1С
1 — 29.09.15 — 11:01 |
не хватает скобки (не дописал оператор: ЕСТЬNULL(ВЫБОР КОГДА БазовыеЦены.Цена = 0 И БазовыеЦены.ТипЦен.Рассчитывается |
||
ВагонНеЗнаний
2 — 29.09.15 — 11:07 |
Вот так-то работает (убрал арифметическую операцию умножения): |
||
shuhard_серый
3 — 29.09.15 — 11:08 |
(0)[С каких это пор, нельзя делать арифметические операции над полями,] |
||
Гёдза
4 — 29.09.15 — 11:09 |
значение — составной тип. делай выразить |
||
ВагонНеЗнаний
5 — 29.09.15 — 11:12 |
Вот упростил выборку поля: Убираю операцию умножения — все ОК. |
||
ВагонНеЗнаний
6 — 29.09.15 — 11:13 |
Может анализатор проверять как-то тип значения и в зависимости от этого писать ошибку (если может быть не числом)? |
||
bolobol
7 — 29.09.15 — 11:13 |
Нет таких проблем на платформе 1С:Предприятие 8.2 (8.2.19.121) |
||
1Сергей
8 — 29.09.15 — 11:14 |
попробуй в скобки взяьб |
||
1Сергей
9 — 29.09.15 — 11:14 |
взять |
||
bolobol
10 — 29.09.15 — 11:15 |
Нет таких проблем на платформе 1С:Предприятие 8.3 (8.3.5.1186) |
||
shuhard_серый
11 — 29.09.15 — 11:15 |
(6) не а |
||
bolobol
12 — 29.09.15 — 11:15 |
(6) А может быть «не числом» то, что вы хотите перемножить? |
||
Ёпрст
13 — 29.09.15 — 11:17 |
(5) забить болт, обернуть всё в еще один запрос, сверху перемножить. |
||
Гёдза
14 — 29.09.15 — 11:17 |
(10) Есть, на всех платформах |
||
Гёдза
15 — 29.09.15 — 11:17 |
Правильный ответ в (4) |
||
bolobol
16 — 29.09.15 — 11:17 |
(11) Не правда ваша — конструктор всё проверяет, анализатор тоже. |
||
Ёпрст
17 — 29.09.15 — 11:17 |
и виноват тут не естьнулл, а кейс |
||
Ненавижу 1С
18 — 29.09.15 — 11:19 |
(15) правильный ответ был еще в (1) |
||
bolobol
19 — 29.09.15 — 11:19 |
(17) Тут никто не виноват. ТС пытается перемножить то, что не является числом. |
||
Гёдза
20 — 29.09.15 — 11:20 |
(18) про скобку 1с не так бы ругалось |
||
Ненавижу 1С
21 — 29.09.15 — 11:21 |
(20) уговорил, проблема решается в (4) |
||
ВагонНеЗнаний 22 — 29.09.15 — 11:23 |
Да, скобки не помогают, 8.3.6.2152 тоже не спасла, значит в (4). Пошел выпрямлять. Спасибо. |
|
Миста — веселый ресурс со своими эксклюзивными тараканами Ymryn |
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Much is not right in your example. Or rather: not much is right in your example.
CREATE OR REPLACE FUNCTION f_test(
name text = NULL
, city text = NULL
, phonenumber text = NULL
,address text = NULL
, OUT sno bigint)
RETURNS void AS
$func$
DECLARE
phonenumber AS VarChar(20); -- would collide with parameter name
BEGIN
phonenumber := phonenumber; -- nonsense
SELECT INTO sno max(ssno) + 1 FROM emp; -- SELECT INTO for assignment
IF sno IS NULL THEN
sno := ident_current('emp') + 1;
END IF;
RAISE NOTICE '%, %, %, %', name, city, phonenumber, address;
INSERT INTO emp(ename, ecity, ephonenumber, eaddress)
VALUES (name, city, phonenumber, address);
END
$func$ LANGUAGE plpgsql;
Major points
-
The error message speaks for itself:
input parameters after one with a default value must also have defaults.
That’s almost what the manual has on that:
All input parameters following a parameter with a default value must
have default values as well. -
It wouldn’t make sense to combine
RETURNS void
withOUT
parameters. -
Don’t declare variable names colliding with parameter names. Completely useless here.
-
The plpgsql assignment operator is
:=
, not=
. -
You don’t normally use the
RAISE
levelINFO
. You wantNOTICE
instead. -
SELECT
without target is not possible in plpgsql, you wantSELECT INTO
. -
IF
is terminated withEND IF
not withEND
.
Simplify further
Use COALESCE
to replace your IF
statement. Aggregate functions return a row even if the table is empty.
But you don’t need that either. Just use the RETURNING
clause to return the new id directly:
CREATE OR REPLACE FUNCTION f_test(
name text = NULL
, city text = NULL
, phonenumber text = NULL
, address text = NULL
, OUT sno bigint)
AS
$func$
BEGIN
RAISE NOTICE '%, %, %, %', name, city, phonenumber, address;
INSERT INTO emp(ename, ecity, ephonenumber, eaddress)
VALUES (name, city, phonenumber, address)
RETURNING ssno
INTO sno; -- Assuming you want to return autoincremented id
END
$func$ LANGUAGE plpgsql;
Much is not right in your example. Or rather: not much is right in your example.
CREATE OR REPLACE FUNCTION f_test(
name text = NULL
, city text = NULL
, phonenumber text = NULL
,address text = NULL
, OUT sno bigint)
RETURNS void AS
$func$
DECLARE
phonenumber AS VarChar(20); -- would collide with parameter name
BEGIN
phonenumber := phonenumber; -- nonsense
SELECT INTO sno max(ssno) + 1 FROM emp; -- SELECT INTO for assignment
IF sno IS NULL THEN
sno := ident_current('emp') + 1;
END IF;
RAISE NOTICE '%, %, %, %', name, city, phonenumber, address;
INSERT INTO emp(ename, ecity, ephonenumber, eaddress)
VALUES (name, city, phonenumber, address);
END
$func$ LANGUAGE plpgsql;
Major points
-
The error message speaks for itself:
input parameters after one with a default value must also have defaults.
That’s almost what the manual has on that:
All input parameters following a parameter with a default value must
have default values as well. -
It wouldn’t make sense to combine
RETURNS void
withOUT
parameters. -
Don’t declare variable names colliding with parameter names. Completely useless here.
-
The plpgsql assignment operator is
:=
, not=
. -
You don’t normally use the
RAISE
levelINFO
. You wantNOTICE
instead. -
SELECT
without target is not possible in plpgsql, you wantSELECT INTO
. -
IF
is terminated withEND IF
not withEND
.
Simplify further
Use COALESCE
to replace your IF
statement. Aggregate functions return a row even if the table is empty.
But you don’t need that either. Just use the RETURNING
clause to return the new id directly:
CREATE OR REPLACE FUNCTION f_test(
name text = NULL
, city text = NULL
, phonenumber text = NULL
, address text = NULL
, OUT sno bigint)
AS
$func$
BEGIN
RAISE NOTICE '%, %, %, %', name, city, phonenumber, address;
INSERT INTO emp(ename, ecity, ephonenumber, eaddress)
VALUES (name, city, phonenumber, address)
RETURNING ssno
INTO sno; -- Assuming you want to return autoincremented id
END
$func$ LANGUAGE plpgsql;