При импорте хранимой процедуры SQL Server 2008 в Excel 2016 появляется ошибка - PullRequest
0 голосов
/ 09 июня 2018

Я импортирую хранимую процедуру из SQL Server 2008 в Excel 2016 и получаю сообщение об ошибке при ее выполнении в Excel:

Ошибка преобразования типа данных nvarchar в дату

Это хранимая процедура [LA_VOTER].[Temp].[dmv_import]:

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

-- =============================================
-- Author:           Arash B
-- Create date: 6/5/2018
-- Description:      test for creating dynamic 'Data Entry Signature Verification' worksheeet
-- =============================================
ALTER PROCEDURE [Temp].[dmv_import]
    @date DATE = NULL
AS
BEGIN
    SET NOCOUNT ON;

    DECLARE @date_work DATE

    IF @date IS NULL
       SET @date_work = GETDATE()
    ELSE
       SET @date_work = @date 

    /*count of processed*/
    SELECT 
        vi.import_code as 'DMV Category',
        SUM(CASE WHEN CONVERT(date, vi.createdate, 101) = @date_work THEN 1 ELSE 0 END) AS 'received',
        SUM(CASE WHEN CONVERT(date, vi.processed_date, 101) = @date_work THEN 1 ELSE 0 END) AS 'processed'
    FROM 
        DIMSNet.dbo.voter_import vi
    WHERE 
        vi.import_type IN ('DMV')
        AND import_code < 13
    GROUP BY 
        import_code
END

Я обращаюсь к ней в Excel через Данные - Из других источников, показанных ниже.

Я выбираю из SQL и ввожу «slavote-dr1 ”для подключения к серверу;«DIMSNet» - выбранная таблица и любая случайная таблица, как указано в инструкциях.

Как только я попадаю во всплывающее окно «Импорт данных», я выбираю ячейку на листе Excel, на которую хочу перетащить таблицу, и нажимаю накнопка «Свойства».

Выберите вкладку «Определение» и измените тип команды на «SQL».

Введен исполняемый файл в «Текстовое поле команды».Поскольку база данных используется для подключения, я вставил полный путь для хранимой процедуры в командную строку.

Execute "LA_VOTER"."Temp"."dmv_import" ","

Я нажимаю «ОК» и возвращаюсь в окно «Импорт данных».Я нажимаю «ОК», чтобы импортировать таблицу.

Я получаю ошибку, указанную выше.

Я посмотрел на скрипт и не смог понять, откуда возникла эта ошибка.Можете ли вы что-нибудь предложить?

PS.Добавлено 12.06.18 ----- SP отлично работает на SQL.Проблема возникает только при импорте в Excel.

Ответы [ 2 ]

0 голосов
/ 15 июня 2018

ОК использовал другой метод и заставил его работать.Использовал «Из запроса Microsoft», и мой скрипт Execute был: {CALL LA_VOTE.tmp.dmv_import (?)} , и он импортировал нужные мне данные в нужные мне поля.

http://codebyjoshua.blogspot.com/2012/01/get-data-from-sql-server-stored.html

0 голосов
/ 09 июня 2018

Ошибка, несомненно, в хранимой процедуре.Это почти наверняка в этих строках:

sum(case when convert(date, vi.createdate, 101) = @date_work then 1 else 0 end) as received,
sum(case when convert(date, vi.processed_date, 101) = @date_work then 1 else 0 end) as processed

Я бы посоветовал вам найти проблемы в данных и исправить их.Вы можете решить проблему, выполнив:

sum(case when isdate(vi.createdate) = 0 then 0
         when convert(date, vi.createdate, 101) = @date_work then 1 
         else 0
    end) as received,
sum(case when isdate(vi.processed_date) = 0 then 0
         when convert(date, vi.processed_date, 101) = @date_work
         then 1
         else 0
    end) as processed
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...