So i'm not to sure how to research on this topic. My mission is to have a SSRS report execute a select query that is stored in a table. my table has a (select * from MyTable) in a column. What I need the report to do is when the hyperlink is clicked it will open a new tablix with all the data.
Any help we be appreciated.
Thank
I'm not sure what you are trying to do, but you can create dynamic SQL in your dataset query.
Put the SQL into a variable then execute it.
DECLARE #SQL VARCHAR(max)
SELECT #SQL = SQL_FIELD
FROM YOUR_TABLE
WHERE your criteria ...
EXEC(#sSQL)
After your SQL to set up your table, add your SELECT query.
You may have issues with permissions (as always) to EXEC.
I am working on SSRS Report.
Continuously getting bellow error does anyone have idea to sovle?
The value provided for the report parameter '' is not valid for its
type. (rsReportParameterTypeMismatch)
Using query something like below - My query type is Text
CREATE TABLE #Temp
(
....
)
INSERT INTO #Temp
(
...
)
SELECT ...
FROM ... joins TABLE....
WHERE d.Date BETWEEN #FromDate AND #ToDate
SELECT ...
FROM #Temp
.. joins TABLE...
WHERE ...
DROP TABLE #Temp
Image that shows the error.
Probably incorrect Date format on the server.
To resolve it, change the Date format on the host to en-us via Control Panel
Is it possible that each time a table has a record inserted, delete a view, then re-create a view using the data in the table. For example, my table structure is like such
Create Table NeedView (
Databasename varchar(100)
,DateAdded datetime
)
And the information in that table is just a fully qualified database name like so servername.database.dbo.table My thought is to have a trigger applied that each time a record is inserted into this table, 1st drop the view (it would be called dbo.ViewMaster then recreate it with a quick select of
Select fullname, phone
from each table in the database. Is this achievable through a trigger?
EDIT
I now just need to figure out how to cycle the table to create a view for each databasename in the table...I have this rough syntax ready, with the exception of actually iterating each database. Can someone help me with the missing piece?
CREATE TRIGGER GetViewReady ON [FullOn]
FOR INSERT
AS
IF OBJECT_ID('FullInformation', 'V') IS NOT NULL
DROP VIEW FullInformation
Declare #database varchar(100), #campaignID varchar(10)
Declare C1 Cursor FOR
Select database
FROM [FullOn]
Open C1
Fetch Next FROM C1 INTO #database
WHILE ##Fetch_Status = 0
Begin
'Here is where the actual iteration to create the view would go...
'How would that statement actually need to be syntactically written?
Fetch Next From C1 Into #database
End
GO
EDIT --
A few database names would be hellfire.master.dbo.hennigar, hellfire.mainframe.dbo.dekalb, hellfire.master.dbo.ftworth and the syntax I am after would be like so:
Select fullname, phone
FROM hellfire.master.dbo.hennigar
UNION ALL
select fullname, phone
from hellfire.mainframe.dbo.dekalb
UNION ALL
select fullname, phone
from hellfire.master.dbo.ftworth
i have one SP as below
CREATE procedure [dbo].[SAMPLE]
(
#ID varchar(20)=null,
#FromDate varchar(20)=null,
#ToDate varchar(20)=null,
#LastDate varchar(20)=null,
#TransType varchar(50) = '',
#ProviderId varchar(max)=null,
#Payerid varchar(max)=null,
#PageNum int =1,
#PageSize int=10,
#Mode int=0,
#DateType varchar(20)=null,
#SortOrder varchar(10)='',
#SortColumn varchar(50)=''
)
in procedure , some logic is implemented.
now i have to generate report in SSRS by using the above sp
i follwed the method like datasource creation , data set created by selecting query type as stored procedure , now it shows all above parameters. now i want to pass parameter only for id ,and it have to display data if id is exist in my table . but i have to display all those parameters but these parameters should not ask to pass the values for it.
can any body provide me solution for it. because i am facing strugle from 3 days onwards.
remeMber that it is not a drilldown or drill through or subreport. it is simple report created from Stored PROCEDURE
thanks in advance
Select each parameter in parameter list follow below steps:
go to parameter properties
select "Default Values" tab
here select "Specify Values"
give the value what you want
go to "general" tab select parameter as "Hidden"
Note: Follow above steps to those parameters that you don't want to select by user. And for ID jus leave it as it is, so that the user can give when running the report.
I have a stored procedure that returns multiple resultsets just as below
CREATE StoredProcedure sp_MultipleDataSets
AS
BEGIN
SELECT EMPID, ENAME, JOB, SAL, DEPTID FROM EMP -- first result set
SELECT DEPTID, DNAME, LOC FROM DEPT --second result set
END
In BIDS, while creating a new report I configured the stored procedure for dataset. It creates the dataset ONLY with the columns returned from the first result set. It does not identify the second result set.
How can I create datasets for both the result sets from a stored procedure like above
Unfortunately, as the documentation explains here:
If multiple result sets are retrieved through a single query, only the first result set is processed, and all other result sets are ignored.
(Found via this question.)
Therefore, I suggest using one of two possibilities:
(1) Split the procedure into two separate procedures - one which returns data from EMP, and one from DEPT - and access the new procedures as two separate datasets.
(2) Union the two separate queries (with an additional column to indicate which query produced each row) and filter or conditionally format your report appropriately. The unioned query might look something like this:
SELECT EMPID ID, ENAME NAME, JOB JOB_LOC, SAL, DEPTID, 'EMP' SOURCE
FROM EMP
UNION ALL
SELECT DEPTID ID, DNAME NAME, LOC JOB_LOC, NULL SAL, DEPTID DEPTID, 'DEPT' SOURCE
FROM DEPT
I use a Parameter in the SP to pull multiple Result sets in SSRS all the time.
You have to separate them by IF statements in the SP and also you then have to HAND TYPE out the FIELDS in the SSRS Dataset setup.
Seems whacky, but it works...
Here is a example.
Stored Procedure(SP) has 2 Parameters defined
#OfficerID
#DatasetFlag
The #OfficerID is the Employee # that has to be passeed or ENTERED IN (SSRS Data input form)
The DatasetFlag is the way I control which IF statement is executed in the SP.
so here is the SP:
CREATE PROCEDURE [dbo].[StoredProcedureNameHere]
#OfficerID VARCHAR(7),
#DatasetFlag VARCHAR(60)
WITH RECOMPILE
AS
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SET NOCOUNT ON;
BEGIN TRY
IF #DatasetFlag = 'EmployeeName'
Begin
SELECT [EmployeeName]
FROM [DatabaseName].[scema].[Employee]
where EmployeeBNumber = #OfficerID
END
ELSE
IF #DatasetFlag = 'Expect'
Begin
SELECT
[TerritoryName]
,[TestNumber]
,[RuleNumber]
,[Expectation]
,[TestCount]
,[PercentToGoal]
FROM [Database].[scema].[Table2]
WHERE OfficerID = #OfficerID
ORDER BY TerritoryID
,TestNumber
,RuleNumber
END
RETURN
GO
The REPORT has 2 Datasets, one I create and it will pull in the parameters and EmployeeName
the other I create and it pulls in EmployeeName as SSRS can only use 1 Result SET~!
BUT.... I fool it ....
but I simpley CREATE the FIELDS by OVERTYPING the EMPLOYENAME and then ADD the
rest (Query) So Edit the FIELDS in the PROPERTIES of the DATASET and put in the Select Column Names.
Then I ese the PARAMETERS menu (Dataset Properties) to put in an EXPRESSION of ="EmployeeName"
for the first Dataset and ="Expect" for the 2nd. I match up the #OfficeID on that screen too.
then when I run this... it asks for OfficerID (RS creates the input form)
and when I put in the ID and hit VIEW REPORT. Or we can all the RDL with the OfficerID, just like the SSRS form does, but in an ASPX page.
BOTH DATASETS are returned (it calls it twice is my assumption)
So NO whacky FILTERING on a UNION dataset or other tricks that I have to then deal with in SSRS, which is not fun... (seriously IIF?)
I have see one Stored Procedure where we have like 20 Parameters , so you can filter
the OUTPUT of the report at the SQL level, rather than a monster pull and filter at the report.
No can you simply create 20 Stored Procedures, WELL YES, but this way, all the code is in ONE locations, and of course it can use selects into TEMP Tables to merge tons of stuff,
and in the end simply POPULATE a table that is the RESULT SET..
As a programmer I find SSRS a bit whacky, but so far I am having fun, trying to find ways to get what I want, not what it offers...
Try something like that:
Create StoredProcedure sp_MultipleDataSets(#Param nvarchar(10))
as
begin
if(#Param == "first")
begin
SELECT EMPID, ENAME, JOB, SAL, DEPTID FROM EMP -- first result set
end
if(#Param == "second")
begin
SELECT DEPTID, DNAME, LOC FROM DEPT --second result set
end
end
Here is one trick for this. This follows idea to Union All all the results for one table and works with SSRS repost with table
For each separate query add one column where is showing purpose of the query For e.g. "name" or "address", this info is repeated for each line of query.
Then Union All the wanted queries.
At Visual Studio / SSRS reporting: Add the dataset which contains storedprocedure. Then from tools select the tablix and drag the wanted data to tablix columns. Then go to tablix row properties -> Row visibility. for there make the sorting clause with IFF function to show only rows with previously defined extra column at queries, for e.g. "Name"
Then make the second tablix and follow the same, now use the IIF function with "Address", then continue as many different tables needed.