0

受け取った日付とアイテムの2つの列があるとしましょう

同じ日付が 5 行ある日付を検索した場合

テキストボックスに表示されます

助けてください

*注、私はデータベース接続としてoledbを使用しています

これは私の検索コードです

Private Sub TxSearch_TextChanged(sender As System.Object, e As System.EventArgs) Handles TxSearch.TextChanged


    If Con.State = ConnectionState.Closed Then
        Con.Open()
    End If

    Dad = New OleDb.OleDbDataAdapter("select RecordDate, Item from inv where RecordDate LIKE '%" & TxSearch.Text & "%'", Con)
    Dim dt As New DataTable
    Dad.Fill(dt)

    Me.DataGridView1.DataSource = dt
    Con.Close()
    DataGridView1.RowsDefaultCellStyle.BackColor = Color.DeepSkyBlue
    DataGridView1.AlternatingRowsDefaultCellStyle.BackColor = Color.White
    Con.Close()


    SortDatagridviewColumn(0)
End Sub
4

2 に答える 2

1

Private Sub TxSearch_TextChanged (sender As System.Object, e As System.EventArgs) TxSearch.TextChanged を処理します

If Con.State = ConnectionState.Closed Then
    Con.Open()
End If

Dad = New OleDb.OleDbDataAdapter("select RecordDate, Item from inv where RecordDate LIKE '%" & TxSearch.Text & "%'", Con)
Dim dt As New DataTable
Dad.Fill(dt)

Me.DataGridView1.DataSource = dt

    Dim counter As String
    counter = dt.Rows.Count.ToString
    textBoxRowCount.Text = counter


Con.Close()
DataGridView1.RowsDefaultCellStyle.BackColor = Color.DeepSkyBlue
DataGridView1.AlternatingRowsDefaultCellStyle.BackColor = Color.White
Con.Close()


SortDatagridviewColumn(0)


Private Sub textBoxRowCount_TextChanged(sender As System.Object, e As System.EventArgs) Handles textBoxRowCount.TextChanged

End Sub

サブ終了

于 2013-03-21T17:24:40.050 に答える
0

これだけかもしれません:

....
Dad.Fill(dt)
textBoxRowCount.Text = "Found " + dt.Rows.Count + " rows"
Me.DataGridView1.DataSource = dt
....

編集: パラメータを使用するようにクエリを変更します。SQL コマンドを作成するために文字列を連結しようとしないでください。

Dim sqlText = "select RecordDate, Item from inv where RecordDate LIKE @search"
Dad = New OleDb.OleDbDataAdapter(sqlText, Con)
Dad.SelectCommand.Parameters.AddWithValue("@search", "%" + TextSearch.Text + "%")
Dim dt As New DataTable
Dad.Fill(dt)

ただし、上記の場合、RecordDate はテキスト フィールドと見なされます。代わりに、RecordDate が DateTime 型のデータベース フィールドである場合、LIKE を使用しても意味がありません。等号 (=) または sql 句を使用する必要がありますBETWEEN

コメントを見て、レコードをカウントするクエリを作成できます (RecordDate に関する考慮事項は引き続き有効です)。

Dim sqlText = "select COUNT(*) from inv where RecordDate LIKE @search"
Dim cmd  = New OleDb.OleDbCommand(sqlText, Con)
cmd.Parameters.AddWithValue("@search", "%" + TextSearch.Text + "%")
Dim resultCount = cmd.ExecuteScalar()
于 2013-03-21T14:06:06.937 に答える