Solved

How to pass parameter array to Crystal Report stored procedure from VB.NET?

Posted on 2010-09-06
6
2,174 Views
Last Modified: 2012-05-10
Hi,

I have a stored procedure e.g

Create StoredProcedure ABC
@ID INT,
@myDate DATE
AS
Begin
Select FirstName,LastName,(Select SUM(Salary) from t2 where t2.paymentDate=@myDate And t2.ID=@ID) from t1 Where t1.ID=@ID
END
============================

Now my question is how to set stored procedure as crystal report data source and then how to pass parameter array to crystal report or stored procedure?

Thanks,
0
Comment
Question by:concern_support
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
6 Comments
 
LVL 10

Expert Comment

by:himanshut
ID: 33614927
View this turoial,its in VB.NET so it might be much clear to your for passign params to CR programatically

http://www.c-sharpcorner.com/UploadFile/mahesh/paramInCR11012006132839PM/paramInCR.aspx

Cheers!
0
 

Author Comment

by:concern_support
ID: 33615017
i can pass parameter to CR programatically and also i can pass parameter array, but i am concern with Stored Procedure that how to set it as CR data source. And then pass parameter to CR parameter or stored procedure?
0
 
LVL 4

Expert Comment

by:tabish
ID: 33615426
The SP as is wont work with array or string of values as it expects parameter of a specific type (in your case int and date).

In the SP you need to accept a string where you expect to pass an array. Normally the string would be "," saperated.

Create a #Temptable and write a code to put every single vale in that table.

later join that #TempTable to the query.

to setup your report with SP please see this
http://www.pdssoftware.com/newsletter/mar07/page6.htm

0
Simplifying Server Workload Migrations

This use case outlines the migration challenges that organizations face and how the Acronis AnyData Engine supports physical-to-physical (P2P), physical-to-virtual (P2V), virtual to physical (V2P), and cross-virtual (V2V) migration scenarios to address these challenges.

 
LVL 4

Accepted Solution

by:
tabish earned 500 total points
ID: 33615467
See an example SQL below:

in that code, it parses the "," saperated string and put the values in the #TempTable within the SP. But you can also write a UDF to parse the string and return a table. It will be just another way.
CREATE PROC dbo.GetOrderList2
(
	@OrderList varchar(500)
)
AS
BEGIN
	SET NOCOUNT ON

	CREATE TABLE #TempList
	(
		OrderID int
	)

	DECLARE @OrderID varchar(10), @Pos int

	SET @OrderList = LTRIM(RTRIM(@OrderList))+ ','
	SET @Pos = CHARINDEX(',', @OrderList, 1)

	IF REPLACE(@OrderList, ',', '') <> ''
	BEGIN
		WHILE @Pos > 0
		BEGIN
			SET @OrderID = LTRIM(RTRIM(LEFT(@OrderList, @Pos - 1)))
			IF @OrderID <> ''
			BEGIN
				INSERT INTO #TempList (OrderID) VALUES (CAST(@OrderID AS int)) --Use Appropriate conversion
			END
			SET @OrderList = RIGHT(@OrderList, LEN(@OrderList) - @Pos)
			SET @Pos = CHARINDEX(',', @OrderList, 1)

		END
	END	

	SELECT o.OrderID, CustomerID, EmployeeID, OrderDate
	FROM 	dbo.Orders AS o
		JOIN 
		#TempList t
		ON o.OrderID = t.OrderID
		
END

Open in new window

0
 

Author Comment

by:concern_support
ID: 33723921
Now how to pass value to this i mean how we can call this procedure
0
 
LVL 4

Expert Comment

by:tabish
ID: 33731907
Normally the Reporting Tools (Crystal, SSRS etc) pass the multiple value parameters as a "," saperated string. you need is to setup your report to call that SP passing the multiple value parameters to it.

Here is the little exract from the link I posted before to setup your report with SP:
When creating a Crystal Report, make it like any other report, except for the following.
1. When specifying a data source, instead of selecting Tables or Views, select Procedures, and then select the newly created procedure.
2. Crystal will immediately prompt you to enter values for the procedure’s input parameters. Do NOT do so; rather, check “Set as Null” and click OK so Crystal will know to prompt for these as input parameters each time the report is run.
3. If you are using SQLServer, click on the Field Explorer and rename the fields to remove the “@” prefix that Crystal automatically adds to conform to SQLServer parameter/variable naming conventions

To call it in SQL Server, go:
execute GetOrderList2("1, 3, 8 , 9, 30, 22, 89 ")
assuming we wnated results for order ids 1, 3, 8 , 9, 30, 22 and 89

Hope it will help
0

Featured Post

Edgartown IT Case Study

Learn about Edgartown's quest to ensure the safety and security of the entire town's employee and citizen data. Read the case study!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Why is this different from all of the other step by step guides?  Because I make a living as a DBA and not as a writer and I lived through this experience. Defining the name: When I talk to people they say different names on this subject stuff l…
The Delta outage: 650 cancelled flights, more than 1200 delayed flights, thousands of frustrated customers, tens of millions of dollars in damages – plus untold reputational damage to one of the world’s most trusted airlines. All due to a catastroph…
Via a live example, show how to shrink a transaction log file down to a reasonable size.
Via a live example, show how to setup several different housekeeping processes for a SQL Server.

705 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question