Проблема с получением данных из ХП

Sendie
Дата: 26.02.2008 11:15:37
ADP 2003 + MSSQL 2005
Пытаюсь получить данные из ХП
    
Function GetFilteredTotal()
    Dim req As String
    Dim ds As New ADODB.Recordset
    req = "exec dbo.ac_cost @where_='" + where + " '"
    GetFilteredTotal = 0
    Set ds = CurrentProject.Connection.Execute(req)
    GetFilteredTotal = ds.Fields(0)
    ds.Close
    Set ds = Nothing
end function

Набор данных пустой..
То же самое делаю в query на сервере - порядок.
adv
Дата: 26.02.2008 12:08:58
в профайлере что показывают?

req из дебагпринта в qa и выполнить - отработает?
пробел перед кавычкой должен быть?
Sendie
Дата: 26.02.2008 12:11:53
Отрабатывает...exec dbo.ac_cost @where_='' я пробелы вообще убрал.
Похоже на какой то глюк АДО. Процедура вот
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

ALTER proc [dbo].[ac_cost] 
	@where_ as varchar(255)
as
BEGIN
declare @sum_ float,
		@sum1 float, 
		@sum2 float,
		@rt varchar(500)


IF OBJECT_ID('tempdb..#_TT') IS NOT NULL
DROP TABLE #_TT
create table #_TT (sm float)
set @rt = ('insert into #_TT (sm) SELECT SUM(isnull(v.ac_mtrsum, 0) * CASE WHEN ((vl.id=1) or (vl.ShortDescr is null)) THEN 1 
													 ELSE dbo.get_curs_for_date(vl.ShortDescr, getdate()) 
													 END) AS sm 
FROM dbo.ul_AP_view v LEFT JOIN dbo.UL_Valute vl ON (v.ac_valute_ext = vl.id)
WHERE (v.HasExtension=0) and (v.del=0) and (v.ac_status<>3) ')
--WHERE (v.HasExtension=0) and (v.del=0) and (v.ac_status<>3) ' + @where_)
exec(@rt)
select @sum1 = coalesce((select sm from #_TT),0)
delete from #_TT

set @rt = ('insert into #_TT (sm) select SUM(isnull(v.ac_mtrsum_ext, 0) * CASE 
													WHEN (vl.id=1) or (vl.ShortDescr is null) THEN 1 
													ELSE dbo.get_curs_for_date(vl.ShortDescr, getdate()) 
													END) AS sm
FROM dbo.ul_AP_view v LEFT JOIN dbo.UL_Valute vl ON (v.ac_valute_ext = vl.id)
WHERE (v.HasExtension=0) and (v.del=0) and (v.ac_status<>3) ')
exec(@rt)
select @sum2 = coalesce((select sm from #_TT),0)
select @sum_ = coalesce(@sum1,0) + coalesce(@sum2,0) 
select @sum_ as sm
END
adv
Дата: 26.02.2008 12:18:05
для начала (не вникая:), попробуйте
set nocount on
в начале процедуры
Sendie
Дата: 26.02.2008 12:19:33
Не помогло...
adv
Дата: 26.02.2008 12:25:25
А, ещё и селектов больше одного.

nextrecordset пробовали?
Rivkin Dmitry
Дата: 26.02.2008 13:12:23
Попробуй заменить временную таблицу #_TT на переменную @_TT
declare @_TT table (.......)
Sendie
Дата: 26.02.2008 14:11:26
Rivkin Dmitry
Попробуй заменить временную таблицу #_TT на переменную @_TT
declare @_TT table (.......)

Не удалось обратиться из динамического запроса к такой переменной

adv
А, ещё и селектов больше одного.
nextrecordset пробовали?

Ес! Спасибо :) Может выглядит криво но работает
Set ds = ds.NextRecordset
Set ds = ds.NextRecordset
Set ds = ds.NextRecordset
GetFilteredTotal = ds.Fields(0)
Rivkin Dmitry
Дата: 26.02.2008 14:19:08
Что значит не удалось обратиться? Делов то всего заменить #_TT в тексте процедуры на @_TT
и вместо create table #_TT (sm float)
написать declare table @_TT (sm float)