none
Vads1.Tables("aaa").Rows.Count 的筆數會累加 ?? RRS feed

  • 問題

  •    各位大大,請教一下..小弟最近在使用迴圈.遇到一個怪問題..以下的程式碼在第一層迴圈筆數是正常..就算重整也是正常的筆數不會累加..
       但是第二層的迴圈卻會累加,這很奇怪....我在別支程式也有使用相同的作法並不會發生這種狀況..
       請問有那位大大可以幫忙看看小弟有那個地方用錯嗎? 謝謝!!

       VASQL1 = "Select * from aaa "
       VACmd1.CommandText = VASQL1
       VACmd1.CommandType = CommandType.Text
       VACmd1.Connection =Conn
       Vada1.SelectCommand = VACmd1
       Vada1.Fill(Vads1, "aaa")

         For i = 0 To Vads1.Tables("aaa").Rows.Count - 1   ==> 這邊是取出有多少員工數 ,筆數都一樣不會累加,正常!!
                vaB = CStr(Vads1.Tables("aaa").Rows(i).Item("B"))  
                      
                VASQL2 = "select * from BBB WHERE VB='" & vaB & "' "
                VACmd2.CommandText = VASQL2
                VACmd2.CommandType = CommandType.Text
                VACmd2.Connection = Conn
                Vada2.SelectCommand = VACmd2
                Vada2.Fill(Vads2, "BBB")
         
                For j = 0 To Vads2.Tables("BBB").Rows.Count - 1  ==> 這邊卻會因為不同人的筆數而累加...
                                                                     比如第一個人有3筆...第一次跑正常
                                                                     跑到第二個人時有8筆..但在這裡卻發現它的筆數變成11..
     
                Next

          Next
    2008年7月23日 上午 04:09

解答

  • 我已試出來了.因為我宣告變數是放在最上面,所以它的new一直都不會跟著上一層迴圈的數量而更新.
    所以我把 Dim Vads2 As New DataSet 這一行特別抓到第一層迴圈裡面宣告就會依照不同的筆數而更新了..

    2008年7月23日 上午 06:01

所有回覆

  • 我已試出來了.因為我宣告變數是放在最上面,所以它的new一直都不會跟著上一層迴圈的數量而更新.
    所以我把 Dim Vads2 As New DataSet 這一行特別抓到第一層迴圈裡面宣告就會依照不同的筆數而更新了..

    2008年7月23日 上午 06:01
  • 如果址是要抓 Count 數,建議直接在 SQL 語法下 Select Count(*) ...

    因為你這種下法,會把資料全部讀出傳回,本機少量資料還沒感覺,大量資料就很明顯,若是 SQL Server 這類網路型資料庫,更會浪費大量頻寬在傳輸你不要的資料上。

     

    2008年7月23日 上午 09:27
    版主