요약 : Crystal Reports에서 "ADO 오류 코드 : 0x80040e14 ... 키워드 'ALL'근처에 잘못된 구문이 있습니다."라는 오류 메시지가 나타납니다. 직원 번호에 대한 'ALL'특수 키워드를 사용하여 SQL SP를 실행할 때.SQL Server 2008 R2에서 저장 프로 시저를 실행하는 CR 2016 보고서 매개 변수와 관련된 문제
긴 이야기 : 나는 크리스탈로 작성된 보고서가 실행될 때 3 개 개의 매개 변수를 수집 2016보고 있습니다
- 날짜에서 (@fdate - 절차/{? FROMDATE} 저장된 SQL - CR을 명령) 날짜로
- (@tDate - 저장 SQL 프로 시저/{TODATE?} - CR 명령)
- 직원 수 (@eCode - 저장 SQL 프로 시저/{EmplNo?} - CR 명령)
우리가 보고서에서 원했던 기능 중 하나는 한 직원 또는 모든 직원을 대상으로 실행할 수 있다는 것입니다. 그러나 이러한 매개 변수는 Crystal Reports 명령에 있으므로 직원 번호 매개 변수를 선택적으로 만들 수 없습니다. 다른 포럼에서 나는 최고 제안을 보았습니다. 사례를 만드는 것이 었습니다 ... 저장 프로 시저 측면에서 매개 변수를 평가할 때 실제로 직원 번호를 전달하는지 또는 모든 레코드를 원할 경우 결정할 때였습니다. 나는 "ALL"이라는 키워드를 사용하여 모든 직원에 대한 기록을 반환하고자 함을 나타냅니다. MS SSMS에서 매개 변수를 명시 적으로 선언하고 설정할 때 저장 프로 시저가 작동합니다. 그러나 정확히 같은 저장 프로 시저를 실행하려고하면 CR 오류가 발생합니다. 이 오류의 원인은 무엇입니까? CR에 내가 필요한 정보를 어떻게보고 할 수 있습니까?
SAP Crystal Reports Designer 2016 - 데이터베이스에서 데이터를 검색하지 못했습니다. 세부 : ADO Error Code: 0x80040e14
SAP 크리스탈이 SQL 명령 보고서 :
EXEC AIM.dbo.GetLaborUtil {?FromDate}, {?ToDate}, {?EmplNo}
MS SQL 서버 2008 R2 (SP2) 익스프레스 - 저장 프로 시저 코드 :
USE [AIM]
GO
/****** Object: StoredProcedure [dbo].[GetLaborUtil] Script Date: 12/12/2017 1:59:38 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[GetLaborUtil] @fDate date, @tDate date, @eCode varchar(4)
AS
SELECT
*
FROM
AIM.dbo.LaborUtil
WHERE
LaborUtil.AttendDate BETWEEN @fDate AND @tDate
AND
LaborUtil.EmplCode = CASE WHEN @eCode = '' THEN LaborUtil.EmplCode
WHEN @eCode LIKE '%ALL%' THEN LaborUtil.EmplCode
WHEN @eCode IS NULL THEN LaborUtil.EmplCode
ELSE CAST(@eCode AS smallint)
END
ORDER BY
LaborUtil.EmplName,
LaborUtil.AttendDate
작동하는 저장 프로 시저를 실행하는
수동 쿼리 :
DECLARE @fDate date
DECLARE @tDate date
DECLARE @eCode varchar(4)
SET @fDate = '1900-01-01'
SET @tDate = '2100-12-31'
SET @eCode = 'ALL'
EXEC AIM.dbo.GetLaborUtil @fDate, @tDate, @eCode
좋아요, 그래서 저는 CASE ... WHEN 절을 "% EVERY %"를 잡으려고 전환했습니다. 그 필드를 공백으로 두는 것이 왜 효과가 없는지 말해 줄 수 있습니까? CR에서 얻은 오류 : "데이터베이스에서 데이터를 검색하지 못했습니다. 세부 정보 : ADO 오류 코드 : 0x80040e14 원본 : SQL Server 용 Microsoft OLE DB 공급자 설명 : ','근처의 구문이 올바르지 않습니다. SQL 상태 : 42000 기본 오류 : 102 [Database Vendor Code : 102] " – Smizles
크리스탈 문제와 같은 문제 인 것 같습니다. 그것은 인용하지 않는다. 그래서이 코드에서는 전달되는 코드가 exec dbo.sp_test_all '10', "with final", " – sepupic
"이라는 명령에 공백 매개 변수를 넣을 수있는 표현식을 생각해 낼 수 있습니까? CR로부터 입력을 받아서 SQL 서버가 이해할 수있는 것으로 변환 할 수 있습니까? – Smizles