1

フォームのテキストボックス「購入者」に入力されたテキストで始まる「購入者」列のデータを表示する必要があります。MS Access 2003 データベースを使用しています。このために、私は以下を使用しています...

            Dim query = "SELECT * FROM Details WHERE [Purchaser] LIKE '" & Purchaser.Text & "*'"
            Dim dc = New OleDbCommand(query, cn)
            Dim rows = dc.ExecuteNonQuery
            cn.Close()

            If rows = 0 Then
                'Show a form for new entry
            Else

                Dim oleadap = New OleDbDataAdapter(query, cn)
                Dim dset As DataSet = Nothing
                oleadap.Fill(dset, "Details")

                For i = 0 To rows
                    Dim purName = dset.Tables("Details").Rows(i).Item("Purchaser").ToString
                    Dim purAddr = dset.Tables("Details").Rows(i).Item("Address").ToString

                    'Populate a list

                Next

            End If

たとえば、A で始まる Purchaser をデータベースで確認しても、変数「rows」は常にゼロであることがわかります。

4

2 に答える 2

2

それは次のようになります。

Dim query = "SELECT * FROM Details WHERE [Purchaser] LIKE '" _
          & Purchaser.Text & "%'"

MS Access ではワイルドカードはアスタリスク (*)、それ以外ではパーセント (%) です。

さらに、ExecuteNonQuery がありますが、それは正しくありません。クエリを実行しています。テストのための注意事項を次に示します。

Dim query = "SELECT * FROM Details WHERE [Purchaser] LIKE '" _
          & Purchaser.Text & "%'"
Dim dc = New OleDbCommand(query, cn)
Dim rows As OleDb.OleDbDataReader
rows = dc.ExecuteReader

If rows.HasRows Then
    Do While rows.Read()
        Console.WriteLine(rows("Purchaser"))
    Loop
End If
Console.ReadLine()
于 2012-09-23T15:26:22.790 に答える
0

%の代わりに使えますか*?もう1つは、パラメーターを使用します。

Dim query = "SELECT * FROM Details WHERE [Purchaser] LIKE @purc & '%' "
Dim dc = New OleDbCommand(query, cn)
dc.Parameters.AddWithValue("@purc", Purchaser.Text)
Dim rows = dc.ExecuteNonQuery
于 2012-09-23T15:27:24.480 に答える