none
有關筆數問題 RRS feed

  • 問題

  • 我的資料庫中有很多筆資料,請問如何查詢某一筆記錄是在全部資料庫中的第幾筆呢?我的功大致上已經有可以移到上一筆、下一筆,而我想多新增一項功能,是可以依某一欄位搜尋後得到該筆資料,問題是如何在label顯示出它是在[ 全部筆數中的第幾筆資料]   第幾筆/全部筆數
    2006年9月28日 上午 06:22

解答

  • 如果你要用 Reader,那你要先跑一段取回資料筆數的 SQL 指令,例如:

    SELECT COUNT(product_index) FROM ProductInfo WHERE....

    在取回筆數後,再執行一次取資料的 SQL 指令 .

    SELECT * FROM ProductInfo WHERE...

    不然,就是使用 DataTable...

    2006年10月2日 上午 01:53
    版主

所有回覆

  • 你存取 DataTable 的 index 就可以得到了吧 ...
    先把你要顯示的資料倒進 DataTable,再用它的 index 來移動並讀取資料列 .
    2006年9月28日 下午 01:27
    版主
  • 但我是用reader As OleDbDataReader請問該如何用index呢?以下是我部份的程式:

     Dim HasRecords As Boolean = reader.Read()

            If HasRecords = False Then
                message = "資料表沒有資料!!"
                style = MsgBoxStyle.Information Or MsgBoxStyle.OKOnly
                title = "警告"
                response = MsgBox(message, style, title)
            ElseIf HasRecords = True Then

                Do
                    TextBox1.Text &= reader.Item("id_no")

                 textbox2Text &= reader.Item("備註")
                Loop While reader.Read()
            End If

    請問我該加什麼程式進去做index的基礎程式呢?

    2006年10月2日 上午 12:45
  • 如果你要用 Reader,那你要先跑一段取回資料筆數的 SQL 指令,例如:

    SELECT COUNT(product_index) FROM ProductInfo WHERE....

    在取回筆數後,再執行一次取資料的 SQL 指令 .

    SELECT * FROM ProductInfo WHERE...

    不然,就是使用 DataTable...

    2006年10月2日 上午 01:53
    版主
  • 我試了您的方法還是不行哩><"以下是我的程式

                selectCmd = "select COUNT(customer_index) from [Product No]  where customer like '" & cobcustomer.Text & "' order by customer ASC"
                selectCmd = "select * from [Product No] where customer like '" & cobcustomer.Text & "' order by customer ASC"
    我想要例如客戶名稱為"123"的排在一起之後,搜尋到客戶名稱為"123"的第一筆,如果我按「下一筆」button,就到客戶名稱為"123"的第二筆,但目前我如果按「下一筆」button,它會從我的資料表中的第一筆開始顯示><"請問我該如何修改我的程式呢?

    是因為我的「上一筆、下一筆」是直接link資料表的問題嗎?我是直接用

     Dim bm As BindingManagerBase

    「上一筆」的程式內容:

    if bm.Position < bm.Count - 1 Then
                    bm.Position += 1
                                End If
                CHECKBM()

    2006年10月25日 上午 03:39
  • Select Count(*) ...

    仍會傳回資料表,資料總數在第 0 列第 0 欄。

    2006年10月25日 上午 05:26
    版主
  • 璉大的意思是......可以麻煩說明清楚些嗎><"請問要如何查詢該筆記錄是在「第幾筆」呢?
    2006年10月25日 上午 06:15
  • 我想我會錯意以為你要全部筆數,才用 count 函數。

    目前 SQL 語法中並沒有第幾筆這種資訊,因為沒有意義,資料庫中的第幾筆在資料庫重整時或匯入匯出時,可能會發生改變,意義不大。

    所以通常是用 DataSet 直接拉資料,對於 DataSet 來說是第幾列 (Row) 就是第幾筆 (以 0 為基礎) ,如果有用到 Page 就是 (頁數-1) * 頁數筆數 + 列數。

    2006年10月25日 上午 07:22
    版主
  • 我真的很想問,你到底要的是什麼?
    一下是 DataReader,現在又來一個 BindingManagerBase,你到底要什麼?

    BindingManagerBase <-> DataTable/DataSet
    DataReader <-> 直接下 SQL 指令

    不清不楚的問題,怎麼給你清楚的答案?
    因為你已經不是第一次這樣問了,我想請你教教我該怎麼做?

    2006年10月25日 上午 09:26
    版主
  • 真的很sorry~~我原本搞不清楚 DataReader與dataBinding的不同><"我的程式中有一部份是用DataReader有的部份用dataBinding所以程式才會出現問題,現在我統一用dataBinding做就不會發生我原先抓不到筆數的索引了^^"

    真的很不好意思~~造成您的困惱^^"

    2006年10月26日 上午 12:47