Павел Штатнов » Вторник 26.06.2007 15:31
Идея есть! Что если создать Макрос в EXEL который напрямую обращается к базе SQL-servera и вытаскивает оттуда данные:
Имеется SQL запрос, который формирует форму Л7 в Каскаде Вот он:
"
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER PROCEDURE [dbo].[Л7_Поездки_карты]
@dat_Beg as datetime ,@dat_End as datetime,@MARSH as varchar(5) ,@VIH as varchar(5) ,@SMENA as varchar(5) ,@pr as smallint
AS
SET NOCOUNT ON
SELECT dbo.Поездки.Время_входа, dbo.Поездки.Код_ПСУ, dbo.te_texotd.NA, dbo.Поездки.tabn, dbo.kd_Fio.f, LEFT(dbo.Поездки.Код_маршрута,
LEN(dbo.Поездки.Код_маршрута) - 3) + '/' + RIGHT(LEFT(dbo.Поездки.Код_маршрута, LEN(dbo.Поездки.Код_маршрута) - 1), 2)
+ '/' + RIGHT(dbo.Поездки.Код_маршрута, 1) AS Код_Маршрута, dbo.Поездки.Остановка_входа, dbo.Поездки.Остановка_выхода,
Стоимость_поездки,
dbo.Поездки.Номер_эмиссии, dbo.Типы_карт.Тип_карты as Тип_карты,dbo.Поездки.Код_Типа_карты
into #tmp_l17
FROM dbo.Поездки INNER JOIN
dbo.ta_spr_mars ON LEFT(dbo.Поездки.Код_маршрута, LEN(dbo.Поездки.Код_маршрута) - 3) = dbo.ta_spr_mars.N_MARS LEFT OUTER JOIN
dbo.kd_Fio ON dbo.Поездки.tabn = dbo.kd_Fio.TABN LEFT OUTER JOIN
dbo.te_texotd ON dbo.Поездки.innom_s = dbo.te_texotd.innom_s LEFT OUTER JOIN
dbo.Типы_карт ON dbo.Поездки.Код_Типа_карты = dbo.Типы_карт.Код_типа_карты
WHERE (Поездки.Дата>=@dat_Beg and Поездки.Дата<=@dat_End) AND LEFT(Поездки.Код_маршрута, LEN(Поездки.Код_маршрута) - 3) LIKE @MARSH
and RIGHT(LEFT(Поездки.Код_маршрута, LEN(Поездки.Код_маршрута) - 1), 2) like @VIH and RIGHT(Поездки.Код_маршрута, 1) like @SMENA and
(LEN(dbo.Поездки.Код_маршрута) - 3 > 0) AND (NOT (dbo.Поездки.Дата IS NULL)) AND (NOT (dbo.Поездки.Код_Типа_карты IN ('21', '22', '23','24', '25', '26', '27', '2B')))
if @pr=0
begin
SELECT Время_входа, Код_ПСУ, NA, tabn, f, Код_Маршрута, Остановка_входа, Остановка_выхода, Стоимость_поездки, Номер_эмиссии, Тип_карты,Код_Типа_карты
from #tmp_l17
where not Код_Типа_карты IN ('3A', '3B','3C')
SELECT sum(Стоимость_поездки) as Приход
from #tmp_l17
where not Код_Типа_карты IN ('3A', '3B','3C')
end
if @pr=1
begin
SELECT Время_входа, Код_ПСУ, NA, tabn, f, Код_Маршрута, Остановка_входа, Остановка_выхода, Стоимость_поездки, Номер_эмиссии,Тип_карты,Код_Типа_карты
from #tmp_l17
where Код_Типа_карты IN ( '3A', '3B','3C')
SELECT sum(Стоимость_поездки) as Приход
from #tmp_l17
where Код_Типа_карты IN ( '3A', '3B','3C')
end
if @pr=2
begin
SELECT Время_входа, Код_ПСУ, NA, tabn, f, Код_Маршрута, Остановка_входа, Остановка_выхода, Стоимость_поездки, Номер_эмиссии,Тип_карты,Код_Типа_карты
from #tmp_l17
--where Код_Типа_карты IN ( '3A', '3B','3C')
SELECT sum(Стоимость_поездки) as Приход
from #tmp_l17
--where Код_Типа_карты IN ( '3A', '3B','3C')
end
"
Вопрос за малым, как это реализовать в EXEL? может кто знает?