2011-06-22 29 views
0

我检索基于条件的两个或更多表中的数据,所以我在SQL Server2005中这样写入光标:如何将SQL Server 2005中的游标值检索到ASP.NET 2.0中的gridview?

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 [email protected] 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 [email protected] 
     Open MyCur 
     Fetch next from mycur into @InvoiceID 
     While @@Fetch_Status=0 
     Begin 
     set @Balance=(select sum(Balance) from tblInvoicePaymentDetails where [email protected] and [email protected]) 
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 [email protected] 
    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 [email protected] and [email protected] Group By InvoiceID,CreationDate,AccountNumber,DeleteStatus 

      Fetch Next From MyCUr into @InvoiceID 
     End 
     Close Mycur 
     Deallocate Mycur 
    End 

输出就是这样正确的(两个输出基于条件的两个更)

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 

但我可以结合在ASP.NET 2.0在网格视图中的所有的值(两者)。这怎么可能?

回答

0

在前端,您将得到两个DataTable。 您只需将这两个DataTable合并为一个。 并将DataTable与GridView绑定。 合并这样的:

dt1.Merge(dt2);  //dt1 is the DataTable 1 and dt2 is the DataTable 2 

获取一组表的数据集,并使用循环合并:我已经给下面的代码:

DataTable dtmerge = new DataTable(); 
    for (int i = 0; i < ds.Tables.Count; i++)    // ds is the DataSet 
    { 
     dtmerge.Merge(ds.Tables[i]); 
    } 
+0

假设二者多个表显示基于条件如何能够先生 – hmk

+0

您可以根据需要合并所有DataTable并遵循相同的操作。 – thevan

+0

嗨。我编辑了我的答案。按照这个。这可能会帮助你。 – thevan