2016-10-11 7 views
0

Ich habe einen Bericht mit 3 Parametern. Problem ist, ich möchte nur Daten in einen dieser Parameter eingegeben werden. Wenn Daten in mehr als einem Parameter vorhanden sind, möchte ich, dass der Endbenutzer eine Warnmeldung erhält. Der Grund dafür ist, dass abhängig davon, welcher Parameter Daten enthält, eine separate temporäre Tabelle erstellt wird, um Ergebnisdaten zu kompilieren. Wenn mehr als einer eingegeben wird, wird der SQL-Server gesperrt. Ich bin auf SQL 2008. Wie kann ich das erreichen?SSRS - Nur Daten in einen Parameter eingeben

Hier sind meine Parameter in ssrs:

enter image description here

... und hier ist meine gespeicherten proc. Wenn einer der Parameter einen Wert enthält, wird ein Nullwert zu den beiden anderen Parameter übergeben

CREATE PROC [dbo].[uspS_SerialNumberLookupReport] @_SalesOrder AS VARCHAR(10) ='', @_AQNum AS VARCHAR(10) ='', @_Serial AS VARCHAR(10) ='' 
AS 


IF OBJECT_ID('tempdb..#SerialNumberLookupReport') IS NOT NULL 
DROP TABLE #SerialNumberLookupReport 

CREATE TABLE #SerialNumberLookupReport 
(Company varchar(1), 
Serial varchar(15), 
StockCode varchar(30), 
Description varchar(50), 
SalesOrder int, 
OrderDate datetime, 
ReqShipDate datetime, 
CustomerPoNumber varchar(10), 
CustomerName varchar(50), 
ShippingInstrs varchar(50), 
ShippingCarrier varchar(50), 
ShippingLink varchar(1000)) 

INSERT INTO #SerialNumberLookupReport 

EXEC uspS_SerialNumberLookupX @[email protected]_SalesOrder, @[email protected]_AQNum, @[email protected]_Serial 

INSERT INTO #SerialNumberLookupReport 

EXEC uspS_SerialNumberLookupE @[email protected]_SalesOrder, @[email protected]_AQNum, @[email protected]_Serial 

SELECT DISTINCT 
    Company 
    ,Serial 
    ,StockCode 
    ,Description 
    ,SalesOrder 
    ,OrderDate 
    ,ReqShipDate 
    ,CustomerPoNumber 
    ,CustomerName 
    ,ShippingInstrs 
    ,ShippingCarrier 
    ,ShippingLink 
FROM #SerialNumberLookupReport 

Antwort

2

Sie 2 Parameter stattdessen verwenden könnte, wie

enter image description here

Kommentar zu beantworten: Sie könnten Verwenden Sie Ihre vorhandenen Parameter als Variablen wie:

create proc some_stored_proc 
(@id_type varchar(30) , @value varchar(50)) 
as 

    declare 
    @SalesOrder varchar(50) null, 
    @Serial varchar(50) null, 
    @AQ varchar(50) null 

    if @id_type = 'Sales Order#' 
    set @SalesOrder = @value 
    else 
    if @id_type = 'Serial#' 
    set @Serial = @value 
    else 
    if @id_type = 'AQ#' 
    set @AQ = @value 
+0

Gute Idee. Wie würde ich meinen Bericht bearbeiten und nach diesem Ansatz fragen? Im Moment verwendet es einen Proc mit diesen 3 Parametern. – jdidsQAA

+0

Ich habe ein Update gemacht, aber ich bin mir nicht sicher, ob dieser Ansatz für Sie funktioniert. – Kostya

+0

Danke für Ihre Eingabe. Ich habe das ausprobiert und es hat leider nicht funktioniert mit der Übergabe von Werten an meine existierende gespeicherte Prozedur. – jdidsQAA