Достучаться из Access до хранимки в MSSQL
От: Grog13 Финляндия  
Дата: 15.01.08 15:30
Оценка:
В MSSQL есть хранимая процедура которая принимает 2 параметра типа DateTime. База находится на удаленном сервере.
Есть аксесс с прилинкованными из MSSQL таблицами.
В аксессе есть некоторые отчеты.

Вопрос состоит в том — как в отчеты аксесса подсунуть то, что вернет хранимая процедура. Т.е. как ее вызвать из аксесса вообще?
Re: Достучаться из Access до хранимки в MSSQL
От: Grog13 Финляндия  
Дата: 15.01.08 16:55
Оценка:
Может даже и не надо достукиваться )

Есть таблица с полями:
id, index, customer_id, subscription_start, subscription_end

Как оптимальнее всего получить из этой таблицы тех, у кого подписка закончилась в текущем месяце и не началась в следующем?
т.е. записи вида
1    777    888   1.12.2007     31.1.2008
2    777    888   1.2.2008      31.12.2008
3    333    999   1.12.1007     31.1.2008


т.е. запрос на январь 2008 — должен вернуть только запись с id == 3.

Пока решение построено на 3х запросах:

1. Получить все записи которые кончаются в этом месяце или начинаются в следующем
2. Из первого запроса получить все записи которые начинаются в следующем
3. Из первого запроса выбрать все записи которых нет во втором.

Есть ли решение проще?
Спасибо
Re[2]: Достучаться из Access до хранимки в MSSQL
От: AnSiSr  
Дата: 16.01.08 05:23
Оценка:
Здравствуйте, Grog13, Вы писали:
G>1. Получить все записи которые кончаются в этом месяце или начинаются в следующем
G>2. Из первого запроса получить все записи которые начинаются в следующем
G>3. Из первого запроса выбрать все записи которых нет во втором.

Select * from <table>
Where <first condition>
And Not Exists (Select 1 from <table> t_inner where t_inner.id = table.id And <second condition>)
Re: Достучаться из Access до хранимки в MSSQL
От: svanir Украина  
Дата: 16.01.08 06:49
Оценка:
Здравствуйте, Grog13, Вы писали:

G>В MSSQL есть хранимая процедура которая принимает 2 параметра типа DateTime. База находится на удаленном сервере.

G>Есть аксесс с прилинкованными из MSSQL таблицами.
G>В аксессе есть некоторые отчеты.

G>Вопрос состоит в том — как в отчеты аксесса подсунуть то, что вернет хранимая процедура. Т.е. как ее вызвать из аксесса вообще?

Создается запрос, потом переделывается на запрос к серверу, сам запрос выглядит вот так.
exec spsvTOVAKTt 39871,1
Где spsvTOVAKTt — хранимая процедура на сервере, 39871,1
— параметры процедуры. если параметрами являются даты то будет выгдядить так '20080101'.
Перед открытием отчета в запрос записываются требуемые параметры:
CurrentDb.QueryDefs("zSPTOVAKT").SQL = "exec spsvTOVAKTt " & Form_fREG.NOMLIST & ",1"
CurrentDb.QueryDefs("zSPTOVAKT").Execute

zSPTOVAKT — это запрос к серверу,
"exec spsvTOVAKTt " & Form_fREG.NOMLIST & ",1" — создание тела запроса
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.