Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/25: Рейтинг темы: голосов - 25, средняя оценка - 5.00
176 / 49 / 8
Регистрация: 24.08.2014
Сообщений: 562

Передача параметров из Access в ХП SQL Server

03.05.2017, 10:44. Показов 5098. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем,
подскажите как правильно передать параметры в хранимую процедуру при ее вызове из Access?
На сервере создал ХП:
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
USE [ASDF]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[z_Server_Ambzab] 
@D1 datetime = null 
,@D2 datetime = null 
AS
BEGIN
    SET NOCOUNT ON;
SELECT *
FROM dbo.Ambzab;
END
В Access имеются пользовательские функции D1() и D2() (краткий формат дата и время)
Из Access вызываю ХП:
Visual Basic
1
exec z_server_ambzab
Как передать в ХП значение интервала дат Between D1() And D2() ?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.05.2017, 10:44
Ответы с готовыми решениями:

Не хватает параметров в запросе аксесс к таблицам SQL Server
Здравствуйте. В приложении на Аксесс все таблицы привязаны с БД SQL Server. Делаю запрос на VBA: Dim rs As DAO.Recordset Set rs =...

Ms Access + MS SQL Server
Кто работал в такой связке, подскажите пожалуйста. Если я в Access делаю связные таблицы к SQL серверу, через ODBC, то будет ли быстрее...

ACCESS <-> MS SQL Server
Помогите, как засадить данные в ComboBox на форме в ACCESS из таблицы в MS SQL Server 2000 ? Связь через ADODB.Connection.

23
176 / 49 / 8
Регистрация: 24.08.2014
Сообщений: 562
07.05.2017, 17:10  [ТС]
Студворк — интернет-сервис помощи студентам
texnik-san, спасибо, заработало, казалось бы ерунда, а три дня промучался

Добавлено через 44 минуты
Подведу итоги, может кому пригодится.
Вариант передачи параметров хранимой процедуре.
Требуется присвоить значения переменным @DT1 и @DT2, чтобы произвести выборку данных из таблицы. Результат получить в виде запроса в Access для последующей с ним работы.
На сервере (хранимая процедура):
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
USE [ASDF]
GO
/****** Object:  StoredProcedure [dbo].[z_server_ambzab]    Script Date: 07.05.2017 7:39:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[z_server_ambzab] 
    -- Add the parameters for the stored procedure here
    @DT1 datetime, 
    @DT2 datetime
AS
BEGIN
 
    SET NOCOUNT ON;
 
SELECT Ambzab.IDZAB, Ambzab.RegDataZ, Ambzab.KDR, Ambzab.KK, Ambzab.PRIMZ, Ambzab.REPEATEDZ, Ambzab.UMOZ, Ambzab.KZ, Ambzab.SLUCHTRUDZ, Ambzab.DNITRUDZ, Ambzab.KONSZ
FROM Ambzab
WHERE (((Ambzab.RegDataZ) Between @DT1 And @DT2));
END
В Access создаем т.н. "запрос к серверу" в котором пишем код:
Visual Basic
1
2
3
EXEC z_server_ambzab @DT1 = '20170101', @DT2 = '20170131'
' или в таком виде:
EXEC z_server_ambzab @DT1 = ' ', @DT2 = ' '
где '20170101' и '20170131' даты в немецком формате без разделителей (2017.01.01 и 2017.01.31), любые, которые есть в таблице, главное чтобы параметры передавались и запрос срабатывал в таком виде.
Далее на событие нажатия кнопки в форме, в которой используется результат запроса к серверу или результат нескольких взаимосвязанных запросов в которых участвует запрос к серверу, вешаем процедуру texnik-san, открываем результирующий запрос:
Visual Basic
1
2
3
4
5
6
Private Sub Кнопка13_Click()
Dim str As String
str = "EXEC z_server_ambzab @DT1 = '" & Format(d1(), "YYYYMMDD") & "', @DT2 = '" & Format(d2(), "YYYYMMDD") & "'"
CurrentDb.QueryDefs("z_Server_Ambzab").SQL = str
DoCmd.OpenQuery "z_server_ambzab"
End Sub
ну и далее как положено, радуемся

Добавлено через 30 минут
*) d1() и d2() функции дата и время, задаваемые пользователем
0
шапоклякистка 8-го дня
 Аватар для texnik-san
3681 / 2241 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
07.05.2017, 21:27
Позволю себе еще два примечания:

1)
Цитата Сообщение от rvg Посмотреть сообщение
даты в немецком формате без разделителей (2017.01.01 и 2017.01.31), любые, которые есть в таблице
Выделенное жирным - совершенно необязательно.

2)
Цитата Сообщение от rvg Посмотреть сообщение
(((Ambzab.RegDataZ) Between @DT1 And @DT2))
А вот тут может быть подводный камень, если поле Ambzab.RegDataZ может содержать не только дату, но и время.

Допустим, DT2 равно '20161212'. Вы будете очень удивлены, но 12.12.2016 15:15 не попадет в выборку. Потому что 12.12.2016 15:15 > 12.12.2016 00:00.

Я бы рекомендовала заменить условие на

SQL
1
(Ambzab.RegDataZ >= @DT1) AND (Ambzab.RegDataZ < (@DT2+1))
0
шапоклякистка 8-го дня
 Аватар для texnik-san
3681 / 2241 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
07.05.2017, 21:30
Позволю себе еще два примечания:

1)
Цитата Сообщение от rvg Посмотреть сообщение
даты в немецком формате без разделителей (2017.01.01 и 2017.01.31), любые, которые есть в таблице
Выделенное жирным - совершенно необязательно.

2)
Цитата Сообщение от rvg Посмотреть сообщение
(((Ambzab.RegDataZ) Between @DT1 And @DT2))
А вот тут может быть подводный камень, если поле Ambzab.RegDataZ может содержать не только дату, но и время.

Допустим, DT2 равно '20161212'. Вы будете очень удивлены, но 12.12.2016 15:15 не попадет в выборку. Потому что 12.12.2016 15:15 > 12.12.2016 00:00.

Я бы рекомендовала заменить условие на

SQL
1
(Ambzab.RegDataZ >= @DT1) AND (Ambzab.RegDataZ < (@DT2+1))
Добавлено через 3 минуты
Да и переменные @DT1, @DT2 описала бы как date, а не datetime - если только не подразумевается передача точного значения времени (но тогда и рекомендация о замене Between на >= AND < неверна)
1
176 / 49 / 8
Регистрация: 24.08.2014
Сообщений: 562
07.05.2017, 22:20  [ТС]
поле RegDataZ получило свойство datetime автоматически при импорте таблиц и поскольку в исходных таблицах оно имеет краткий формат даты, то часы:мин везде имеют значение 00:00, но Ваше замечание в любом случае я учту ))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.05.2017, 22:20

Access & SQL Server
Ni razu ne delal, wot teper' prihoditsja... Nushno podkljuchit', k Access, bazu dannih nahodjashujusja na udalennom, cherez Internet,...

Перемещение из access в SQL server
Добрый день. Нужно постоянно перемещать данные из таблицы аксес в таблицу SQL server, для этого планирую сделать форму в аксесе и...

Люди памагите! Sql server и Access
На сервере у меня есть БД, я через ODBC подключил ее в аксес. Есть формы и все такое. У меня вопрос как создать такую тему: В основной...

Перенос базы Access в SQL Server
начало здесь https://www.cyberforum.ru/ms-access/thread87179-page2.html Сергей1980, ты как я понимаю знаешь как делать перенос базы...

Ускорение работы Access-SQL Server
Сабж такой: Имеется некий апгрейд клиент-серверной БД Access-Access на Access-SQL Server следующим образом: таблицы прилинковываются к...


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

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Новые блоги и статьи
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
День 5 из 28: Codex подсказывает следующий запрос
and_y87 12.10.2026
9 октября 2026 года OpenAI запустила бету Composer predictions — подсказок следующего сообщения в текущем диалоге Codex. Это помощь с формулировкой запроса, а не автоматическое продолжение задачи. . . .
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru