Результат хранимки через ADO - VB
Формулировка задачи:
Функция:
хранимка, где она юзается:
Запускаю в менеджере SQL
выдает 1,2,3... и т. д. - работает стало быть
Запускаю через ADO (VBA):
выдает "переменная объекта или переменная не задана"
другие процедуры, запускаемые аналогично отрабатываются, эта не хочет. В чем прикол?
хранимка, где она юзается:
Запускаю в менеджере SQL
выдает 1,2,3... и т. д. - работает стало быть
Запускаю через ADO (VBA):
выдает "переменная объекта или переменная не задана"
другие процедуры, запускаемые аналогично отрабатываются, эта не хочет. В чем прикол?
Решение задачи: «Результат хранимки через ADO»
textual
Листинг программы
USE [tam]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--Источники данных форм и контролов
ALTER PROCEDURE [dbo].[hp_ObjSource]
@ObjName varchar(50), @RecKey INT = 0, @RecKeyList nvarchar(50) = ''
AS
DECLARE @DopWhere nvarchar(50), @SQL nvarchar(1000)
BEGIN
SET NOCOUNT ON;
--Списки
IF @ObjName = 'UP_ID'
SELECT UP_ID, UPKod + ' - ' + UPName AS UKod FROM tab_UsPostawki WHERE Sost=0 ORDER BY UPKod
IF @ObjName = 'TR_ID'
SELECT TR_ID, NameYur FROM tab_Customs_Region WHERE Sost=0 ORDER BY NameYur
IF @ObjName = 'TTD_ID'
SELECT TTD_ID, TTName FROM tab_Decl_Type WHERE Sost=0 ORDER BY TTName
IF @ObjName = 'WName'
SELECT WName FROM tab_WType WHERE Sost=0 ORDER BY WName
IF @ObjName = 'CT_ID'
SELECT CT_ID, Alfa2 + ' - ' + Country_Ukr FROM tab_Country WHERE Sost=0 ORDER BY Country_Ukr
IF @ObjName = 'BR_ID'
SELECT tab_Border.BR_ID, tab_Border.Name_In + ' - ' + tab_Border.Name_Out + ' (' + tab_Country.Country_Ukr + ')' AS RecName
FROM tab_Border INNER JOIN
tab_Country ON tab_Border.CT_ID = tab_Country.CT_ID
WHERE tab_Border.Sost=0
ORDER BY tab_Border.Favor DESC, RecName
IF @ObjName = 'TR_Key'
SELECT TR_Key, NameYur FROM tab_Customs_Region WHERE Sost=0 ORDER BY NameYur
IF @ObjName = 'OrgKey'
BEGIN
IF (SELECT COUNT(*) FROM sys.objects AS O WHERE O.NAME='v_tmp') > 0
DROP VIEW v_tmp
ELSE
EXEC ('CREATE VIEW v_tmp AS
SELECT OrgType, OrgKey, CASE WHEN ISNULL(NameSokr, '''')='''' THEN NameYur ELSE NameSokr END AS RecFld
FROM tab_Org
WHERE Sost=0')
IF @RecKeyList = ''
SELECT OrgKey, RecFld
FROM v_tmp
WHERE OrgType=@RecKey
ELSE
BEGIN
IF CHARINDEX('NOTIN', @RecKeyList) > 0
BEGIN
SET @DopWhere = SUBSTRING(@RecKeyList, 7, Len(@RecKeyList));
SELECT OrgKey, RecFld
FROM v_tmp
WHERE OrgType NOT IN(SELECT number FROM dbo.iter_intlist_to_table(@DopWhere))
END
ELSE
IF CHARINDEX('IN', @RecKeyList) > 0
BEGIN
SET @DopWhere = SUBSTRING(@RecKeyList, 3, Len(@RecKeyList));
SELECT OrgKey, RecFld
FROM v_tmp
WHERE OrgType IN(SELECT number FROM dbo.iter_intlist_to_table(@DopWhere))
END
END
DROP VIEW v_tmp
END
END