【解決方法】DataRow から rowID または ObjectID を取得する

プログラミングQA


みんな、おはよう。

ListView を備えた単純なフォームがあります (約 2800 のサプライヤー名が入力されています)。
これらの名前は、SQL 選択ステートメントの結果としてデータセット内に常駐します。
ユーザーは、探しているサプライヤーが見つかるまでサプライヤーのリストを単純にスクロールすることもできます (これには時間がかかりすぎるとユーザーから不満の声が上がっています)。または、ListView を選択し、サプライヤー名の最初の文字を入力すると、ListView が選択することもできます。入力された文字で始まる最初のサプライヤー。
ただし、1 文字だけでは不十分です。 ユーザーは、より多くの文字を入力してサプライヤー名に近づけることを望んでいます。

これを実現するために、それを実行できる「クイック検索」TextBox を組み込みました。
計画は、キー入力された各文字を取得し、データセットから DataRow (または dataRows) に選択し、Rowid を取得して、ListView 上で一致する項目を選択または複数選択することです。

私が抱えている大きな問題は、DataRow _Rowid にアクセスできないことです (デバッグ モードでは確認できます)。

VB
Public Class Form1


    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Ssql = "SELECT SP_Name from Supplier Where SP_Name <> ' Select Supplier' ORDER BY SP_Name"
        da = New OleDb.OleDbDataAdapter(Ssql, cn)
        da.Fill(ds, "Suppliers")
        cn.Close()

        For x = 0 To ds.Tables("Suppliers").Rows.Count - 1
            ListView1.Items.Add(New ListViewItem(ds.Tables("Suppliers").Rows(x).Item(0).ToString))
        Next
    End Sub


    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
        Dim RowNumber As String

        RowNumber = CStr(GetRowNumbers(TextBox1.Text))

    End Sub



    Private Function GetRowNumbers(ByVal theSupplier As String) As String
        Dim Table As DataTable = ds.Tables("Suppliers")
        Dim Expression As String
        Dim FoundRows() As DataRow

        Expression = "SP_Name LIKE '" & theSupplier & "%'"

        FoundRows = Table.Select(Expression)


        If FoundRows.Count = 0 Then
            Return "Nothing Found"
        else
           Return CStr((FoundRows(0)(0)))   '<<<<< RETURN THE ds.Tables("Suppliers") row number as found in FoundRows
        End If

    End Function

誰かがこれを行う方法をアドバイスしてください。

改めて、どうもありがとうございました。

解決策 1

コメント

タイトルとURLをコピーしました