2014-04-28 50 views
1

我希望我能解釋這一點,因爲我的意思是!使用結果集更改的經典ASP檢查

我有一個SQL查詢已被形成爲一個視圖,使其更容易拉動數據。

但是,我有一個星期編號欄獲取日期,然後計算週數。我已將所有內容輸出到FPDF文檔中,但我需要在週數更改後拆分單元格,然後顯示該週數的總計。

我該如何去檢查星期編號列的變化?我無法想到這個解決方案。

這是我目前沒有工作的代碼,這是非常高的可能性,這是不對的。

if iCounter > 1 Then  
    NewSum = rs("W")  
    rs.moveprevious 
    if StrComp(NewSum,rs("W")) = 1 Then 
     pdf.Cell 15,5,"EOM",1,1,"C",1 
    else  
     rs.movenext  
     pdf.Cell 15,5,"",1,1,"C",1  
    End if 
end if 
+0

@Hyperjase嗨,這有可能爲你包括你的問題,所以我們可以看到在上下文中的問題的一些代碼嗎? – Lankymart

+1

如果您的數據是按照週數排序的,那麼您可以使用變量來追蹤weekno,循環中該weekno的總數,並檢查weekno是否發生變化,當它斷開到新行時輸出總數,然後重新設置總數並將weekno變量設置爲新的weekno。沖洗並重復。 – Lankymart

+3

聽起來可能是'GROUP BY DATEPART(wk,MyDateColumn)'的潛在機會。 – Bond

回答

1

在這種情況下有不同的方法可以解決這個,我個人一直使用數組輕鬆了很多更靈活,比使用ADODB.Recordset更高效總能找到。

一旦有了ADODB.Recordset對象不管使用哪種方法(無論是ADODB.CommandRecordset.Open()Connection.Execute()),則可以將其轉換爲使用Recordset.GetRows()二維陣列。

使用你的例子我會像這樣構造你的代碼;

請考慮到這是未經測試,並從內存編碼,我只是想給你如何做這種計算的一個經典ASP環境的一般要點。

Dim rs, data, row, rows 
Dim weekno 
Dim total_weekno, current_weekno 

'Assuming you have instantiated your rs object 
'... 

'Convert to an Array variable (data) 
If Not rs.EOF Then data = rs.GetRows() 
'Close and release Recordset from memory 
Call rs.Close() 
Set rs = Nothing 

If IsArray(data) Then 
    rows = UBound(data, 2) 

    'Iterate through the array 
    For row = 0 To rows 
    'Assuming weekno column is the first in your resultant columns. 
    weekno = data(0, row) 
    If weekno = current_weekno Then 
     'Increment our total for the current weekno by 1. 
     total_weekno = total_weekno + 1 
    Else 
     'Place logic for adding new row to PDF here. 
     'Use total_weekno to display the incremented total. 

     'Afterward reset total_weekno for the new current weekno. 
     total_weekno = 0 
     'Our weekno has changed so set current weekno. 
     current_weekno = weekno 
    End If 
    Next 
End If