I am retrieving two or more tables data based on conditions, so I am writing cursors in SQL server2005 like this:
create PROC [dbo].[uspCustomerInvoiceGetlist]
@CustomerID varchar(20)
AS
BEGIN
SELECT DeleteStatus,InvoiceID,CONVERT(varchar(16),CreationDate,101) + ' ' +
CONVERT(varchar(16),CreationDate,8) as CreationDate,AccountNumber,Sum(Amount) as Amount from tblInvoiceDetails where CustomerID=@CustomerID Group By InvoiceID,CreationDate,AccountNumber,DeleteStatus
END
alter procedure uspCustomerInvoiceGetlist1(@CustomerID varchar(50)) as
Begin
Declare @InvoiceID int, @Balance float
Declare MyCur Cursor for select InvoiceID from tblInvoiceHeader where CustomerID=@CustomerID
Open MyCur
Fetch next from mycur into @InvoiceID
While @@Fetch_Status=0
Begin
set @Balance=(select sum(Balance) from tblInvoicePaymentDetails where CustomerId=@CustomerID and InvoiceId=@InvoiceID)
print @Balance
if @Balance!=0
SELECT h.DeleteStatus,h.InvoiceID,CONVERT(varchar(16),h.CreationDate,101) + ' ' +
CONVERT(varchar(16),h.CreationDate,8) as CreationDate,h.AccountNumber,Sum(h.Amount) as Amount, @Balance as Balance from tblInvoiceDetails h inner join tblInvoicePaymentDetails p on h.CustomerID=p.CustomerID and h.InvoiceID=@InvoiceID
Group By h.InvoiceID,h.CreationDate,h.AccountNumber,h.DeleteStatus
else
SELECT DeleteStatus,InvoiceID,CONVERT(varchar(16),CreationDate,101) + ' ' +
CONVERT(varchar(16),CreationDate,8) as CreationDate,AccountNumber,Sum(Amount) as Amount, 0 as Balance from tblInvoiceDetails where CustomerID=@CustomerID and InvoiceID=@InvoiceID Group By InvoiceID,CreationDate,AccountNumber,DeleteStatus
Fetch Next From MyCUr into @InvoiceID
End
Close Mycur
Deallocate Mycur
End
output is correct like that (two outputs based on condition two are more)
Status InvoiceID Date account no Amount Balance
1 1009 06/21/2011 10:22:15 10009 450 350
Status InvoiceID Date account no Amount Balance
1 1010 06/21/2011 10:22:33 100000 690 0
But I can bind the all values (both) in grid view in ASP.NET 2.0. How is it possible?
In the Front End, You will get Two DataTable.
You just Combine those two DataTable into a Single One.
And Bind the DataTable with the GridView.
Merge like this:
Get the Set of Tables as DataSet and Merge using For Loop: I have given code below: