Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
71 / 18 / 9
Регистрация: 01.08.2022
Сообщений: 130

DoCmd.SetParameter не хочет работать со строковыми значениями

04.04.2025, 13:53. Показов 2875. Ответов 29

Студворк — интернет-сервис помощи студентам
Решил попробовать использовать Параметры в именованных запросах, и столкнулся с проблемой.
Для наглядности выложил простой примерчик. Одно ито же делаю двумя способами: Кодом VBA и макросами.
В макросах все работает, а с VBA возникли проблемы.

На форме 'Form1' 10 кнопок, 8 из них работают, а 2 выдают ошибки (при запуске на 1-й записи):
runtime error '2766'
Объект не содержит программируемый объект "Россия".

Сбоят кнопки: Зап3 VBA, Зап4 VBA. В этих кнопках открываются Запросы содержащие Параметры на
текстовое поле 'Страна'. Запросы с Параметрами на числовые поля ошибок не выдают.
Вложения
Тип файла: rar SetParameter.rar (75.0 Кб, 8 просмотров)
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.04.2025, 13:53
Ответы с готовыми решениями:

Немного о синтаксисе DoCmd.OpenForm
Если нужно открыть форму со значениями определеной записи то должно ли быть указующее поле ключевым? А то если оно не ключевое то его...

Подскажите как задать два условия для DoCmd.OpenForm
Необходимо открыть форму с фильтром на два условия: поле =Код1 и поле =Код2 С одним условием работает: DoCmd.OpenForm...

Как пользоваться фильтром в DoCmd.OpenReport
Как им пользоваться, т.е. фильтром, просто есть формочка с комбобоксом там я и хочу выбрать занчение по которому надо фильтровать по одному...

29
Эксперт MS Access
 Аватар для Eugene-LS
13260 / 5938 / 1528
Регистрация: 05.10.2016
Сообщений: 16,606
04.04.2025, 17:31
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Geizer1 Посмотреть сообщение
Как тут:
Можно короче:
DoCmd.SetParameter "Страна:", "'Россия'"

Добавлено через 8 минут
Geizer1, и не путайте:
Текстовый аргумент для процедуры или функции: "Россия"
Как условие отбора текстового поля в запросе: "'Россия'" или """Россия""" (в одинарных или двойных кавычках)
Примечание: Двойные кавычки в коде "задваиваются":
"""Россия""" = """" & "Россия" & """"
1
71 / 18 / 9
Регистрация: 01.08.2022
Сообщений: 130
04.04.2025, 18:32  [ТС]
Eugene-LS,
Цитата Сообщение от Eugene-LS Посмотреть сообщение
Как условие отбора текстового поля в запросе: "'Россия'"
Текст запроса из моего примера, в котором условие отбора написано напрямую:
SELECT Таблица.Код, Таблица.Страна, Таблица.Город
FROM Таблица
WHERE (((Таблица.Страна)="Россия"));

А если применен в Параметр, то надо писать "'Россия'".
Умом Россию не понять, в неё надо просто верить.)
0
Эксперт MS Access
 Аватар для Eugene-LS
13260 / 5938 / 1528
Регистрация: 05.10.2016
Сообщений: 16,606
04.04.2025, 19:01
Цитата Сообщение от Geizer1 Посмотреть сообщение
А если применен в Параметр, то надо писать "'Россия'"
Да, т.к. в параметр вы передаёте значение, которое в дальнейшем будет использовано как условие отбора.
Смотрите:
SQL
1
SELECT * FROM Таблица WHERE (Страна = 'Россия');
То же отработает.
Правило для условия отбора запроса (в одинарных или двойных кавычках) - сработало.

Добавлено через 5 минут
Цитата Сообщение от Geizer1 Посмотреть сообщение
Умом Россию не понять, в неё надо просто верить.

Не по теме:

... Аршином общим не измерить:
У ней особенная стать —
В Россию можно только верить.

1
71 / 18 / 9
Регистрация: 01.08.2022
Сообщений: 130
05.04.2025, 05:16  [ТС]
С текстовыми значениями вроде разобрались.
Решил проверить Даты. Создал еще один запрос "Запрос5". И кнопки Зап5 (задаем на прямую), Зап5_1. (задаем из формы)
В макросах все работает сразу.

В VBA (КнопкаЗап5VBA) DoCmd.SetParameter "Дата:", "#04.04.2025#" - не работает,
но DoCmd.SetParameter "Дата:", "#04/04/2025#" - работает.

В VBA (КнопкаЗап5_1VBA) как ни пытаюсь прикрутить функцию Format, ничего не выходит.
Вложения
Тип файла: rar SetParameter.rar (128.1 Кб, 0 просмотров)
0
71 / 18 / 9
Регистрация: 01.08.2022
Сообщений: 130
05.04.2025, 06:25  [ТС]
Решил перенести функцию Format в сам запрос (Запрос6):
Visual Basic
1
2
3
4
PARAMETERS [Код:] Long, [Конст:] Long, [Страна:] Text ( 255 ), [Дата:] DateTime;
SELECT Таблица.Код, Таблица.Страна, Таблица.Город, Таблица.Дата, [Конст:] AS Конст
FROM Таблица
WHERE (((Таблица.Код)=[Код:]) AND ((Таблица.Страна)=[Страна:]) AND ((Таблица.Дата)=Format([Дата:],"dd\/mm\/yyyy")));
и в кнопке КнопкаЗап6VBA задаем Параметр:
DoCmd.SetParameter "Дата:", "#" & Me!Дата & "#"
Но и это не работает. Выдает ошибку 2421 - не допустимое значение даты.
Вложения
Тип файла: rar SetParameter.rar (147.2 Кб, 8 просмотров)
0
Эксперт MS Access
 Аватар для Eugene-LS
13260 / 5938 / 1528
Регистрация: 05.10.2016
Сообщений: 16,606
05.04.2025, 06:46
Лучший ответ Сообщение было отмечено Geizer1 как решение

Решение

Цитата Сообщение от Geizer1 Посмотреть сообщение
Но и это не работает
Даты SQL (запросы) принимает в "американском" формате, и только в нём.
Формат такой: mm/dd/yyyy + "в решетках" = #04/05/2025#
Попробуйте так: DoCmd.SetParameter "Дата:", Format$(Me!Дата, "\#mm\/dd\/yyyy\#")
...
Конструкцию : Format(Date, "\#mm\/dd\/yyyy\#") - запомните (запишите) - ещё не раз пригодится для передачи "нашей" даты в запрос.
Запрос6 - может быть таким:
SQL
1
2
3
4
PARAMETERS [Код:] Long, [Конст:] Long, [Страна:] Text ( 255 ), [Дата:] DateTime;
SELECT Код, Страна, Город, Дата, [Конст:] AS Конст
FROM Таблица
WHERE ((Код=[Код:]) AND (Страна=[Страна:]) AND (Дата=[Дата:]));
1
71 / 18 / 9
Регистрация: 01.08.2022
Сообщений: 130
05.04.2025, 07:06  [ТС]
Цитата Сообщение от Eugene-LS Посмотреть сообщение
Попробуйте так: DoCmd.SetParameter "Дата:", Format$(Me!Дата, "\#mm\/dd\/yyyy\#")
Да, это работает сразу в качестве параметра для поля с типом Дата.
Спасибо, думаю этот пример многим будет полезен.
Можно отдохнуть)
0
ᴁ ©
Эксперт MS Access
 Аватар для АЕ
4181 / 2466 / 513
Регистрация: 13.12.2016
Сообщений: 8,389
Записей в блоге: 5
05.04.2025, 08:18
первый раз вижу ТС, которому в 25 постах растолковывают про элементарные кавычки, а у него сил нет спасибо нажать за убитое на него время. Причем виноваты все - и мелкософт и Россия. Хотя сам пасибки любит - не новичок поди. Фу.
1
71 / 18 / 9
Регистрация: 01.08.2022
Сообщений: 130
05.04.2025, 08:45  [ТС]
Цитата Сообщение от АЕ Посмотреть сообщение
первый раз вижу ТС, которому в 25 постах растолковывают про элементарные кавычки, а у него сил нет спасибо нажать за убитое на него время. Причем виноваты все - и мелкософт и Россия. Хотя сам пасибки любит - не новичок поди. Фу.
Я думал тут модераторы конфетки раздают.
Мне сложно плюсики потыкать.
0
Модератор
 Аватар для D1973
9952 / 6487 / 2461
Регистрация: 21.01.2014
Сообщений: 27,488
Записей в блоге: 3
14.04.2025, 11:19
Цитата Сообщение от Geizer1 Посмотреть сообщение
Я думал тут модераторы конфетки раздают
Задача модератора - следить за порядком в теме, а не "раздача слонов". Пора бы знать это, не первый день на форумах.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.04.2025, 11:19

Кракозябры при импорте через DoCmd.Transfer
Есть задача: Загнать в таблицу содержимое кучи текстовых файлов. Все нормально вгоняется с помощью метода TransferText объекта DoCmd...

Docmd.Save
подскажите, пожалуйста, как сохранить string, как обычный запрос? спасибо

помогите в пробном примере прописать условие отбора в методе DoCmd.OpenForm
Кто может, помогите в пробном примере прописать условие отбора в методе DoCmd.OpenForm, чтобы при открытии формы Блоки ней выбиралась...

DoCmd.OpenForm
И снова здравствуйте Пытаюсь создать кнопку с фильтром, открывающую форму. Имеется главная форма с кнопкой и комбобоксом. Источник...

Импорт данных из excel в access методом docmd.TransferSpreadsheet
Добрый вечер, помогите кто чем сможет!!! Ни как не могу разобраться с этим методом, есть таблица Любители.xls, выбранный диапазон в этой ...


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

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Новые блоги и статьи
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml, в чате форсили функторы модулей как суперфичу. Пытаясь отдуплить концепт, наткнулся на тутор с простым примером. А главный принцип обучения от. . .
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru