Результат хранимки через 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д