0

ListViewの検索デバイスとしてDateTimePickerを使用する方法はありますか?

DateTimePicker を検索エンジンとして使用する方法がわかりません...

ここに私の検索用のコードがあります:

Dim conn As SqlConnection
Dim cmd As SqlCommand
Dim da As SqlDataAdapter
Dim ds As DataSet
Dim itemcoll(100) As String

Me.ListView1.View = View.Details
Me.ListView1.GridLines = True
ListView1.Items.Clear()

conn = New SqlConnection("Data Source=#####;Initial Catalog=#####;Persist Security Info=True;User ID=#####;Password=#####")
Dim strQ As String = String.Empty
strQ = "SELECT ControlNo,EmpNo,CheckOutDate,CheckOutTime,TaxiNo,PlateNo,Model,Make FROM dbo.ChkInOut WHERE ControlNo ='" + txtsearch.Text + "'"

cmd = New SqlCommand(strQ, conn)
da = New SqlDataAdapter(cmd)
ds = New DataSet
da.Fill(ds, "Table")
Dim i As Integer = 0
Dim j As Integer = 0
For i = 0 To ds.Tables(0).Rows.Count - 1
    For j = 0 To ds.Tables(0).Columns.Count - 1
        itemcoll(j) = ds.Tables(0).Rows(i)(j).ToString()
    Next
    Dim lvi As New ListViewItem(itemcoll)
    Me.ListView1.Items.Add(lvi)
 Next
4

1 に答える 1

1

そのままのコードではほとんど問題がないので、1 つずつ見ていきましょう。

  1. SqlCommandDbCommandインターフェイスを実装する から継承しIDisposableます。

    このインターフェイスの主な用途は、管理されていないリソースを解放することです。

    これを行う最善の方法は、Usingキーワードを使用することです。そのコード例については、このページの下部にあるサンプル コードをご覧ください。

    同じことがSqlConnectionUsingにも当てはまり、ステートメントでラップします。

  2. 文字列を連結して SQL クエリを作成しないでください。これにより、アプリケーションがSQL インジェクション攻撃を受ける可能性があります。パラメータ化されたクエリを作成する方法の例がここここにあります (残念ながら、MSDN で良い例を見つけられませんでした)

    あなたの場合、クエリは次のようになります。

    strQ = "SELECT ControlNo, ..<rest of columns>.. ,Model,Make " & _
           "FROM dbo.ChkInOut " & _
           "WHERE ControlNo = @controlNo"
    
    cmd = New SqlCommand(strQ, conn)
    cmd.Parameters.AddWidthValue("@controlNo", txtsearch.Text);
    
          ... rest of code here ...
    
  3. ユーザー指定の日付でクエリを実行するには、最初にDateTimePicker.Valueプロパティから日付を取得する必要があります。次に、(上記の例のように) クエリを作成し、選択した日付のパラメーターを渡します。SQL Server の日付に関するこの質問が役立つ場合があります。

于 2013-02-02T04:46:50.097 に答える