Как получить значения курсора в SQL Server 2005 в виде сетки в ASP.NET 2.0? - PullRequest
0 голосов
/ 22 июня 2011

Я получаю данные из двух или более таблиц на основе условий, поэтому я пишу курсоры в SQL server2005 следующим образом:

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

вывод правильный, как этот (два выхода на основе условия два больше)

 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. Как это возможно?

1 Ответ

0 голосов
/ 22 июня 2011

В интерфейсе вы получите две таблицы данных. Вы просто объединяете эти два DataTable в один. И связать DataTable с GridView. Объединить так:

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

Получить набор таблиц в виде DataSet и объединить, используя цикл For: я дал следующий код:

  DataTable dtmerge = new DataTable();
  for (int i = 0; i < ds.Tables.Count; i++)             // ds is the DataSet
  {
      dtmerge.Merge(ds.Tables[i]);
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...