0

私はこの日付を私のDGVに持っています:

14/06/2012
15/07/2012
16/07/2012
17/07/2012

フィルターを次のように設定します。([supplier_invoice_date] >= '13/07/2012') AND ([supplier_invoice_date] <= '17/07/2012')

フィルターはこれを返します(すべての日付)

14/06/2012
15/07/2012
16/07/2012
17/07/2012

別のテスト:

フィルター:([supplier_invoice_date] >= '15/07/2012') AND ([supplier_invoice_date] <= '17/07/2012')

結果:

    15/07/2012
    16/07/2012
    17/07/2012

フィルター:([supplier_invoice_date] < '17/06/2012')

結果:

14/06/2012
15/07/2012
16/07/2012

数日かかるだけで、数ヶ月もかからないと思います。

これが私のコードです:

Dim dt As New DataTable
Dim suppliersinvoices_data_query As String = ("DATE_FORMAT(MIN(supplier_invoice_date), '%d/%m/%Y') AS supplier_invoice_date, ...")
Dim invoice_objDataAdapter As New MySqlDataAdapter(suppliersinvoices_data_query, objConn)
invoice_objDataAdapter.Fill(dt)

Dim MyFilter As New DataView(dt)
MyFilter.RowFilter = "([supplier_invoice_date] >= '13/07/2012') AND ([supplier_invoice_date] <= '17/07/2012')"
invoicesresults_datagrid_search_supplierinvoice.DataSource = MyFilter
4

2 に答える 2

1

日付をフォーマットするために日付を文字列に変換しているようです。それを避けて、グリッドがデータ ソースから取得した日付値を使用するようにしてください。

DataGridView コントロールの日付をフォーマットする場合は、次のようにしてみてください。

dgv1.Columns("YourDateColumn").DefaultCellStyle.Format = "dd/MM/yyyy"

次に、実際の日付を使用してデータをフィルタリングできます。

MyFilter.Filter = String.Format("[supplier_invoice_date] > '{0}'", _
                                New DateTime(2012, 7, 1))
于 2012-07-17T21:58:49.340 に答える
1

これはDataView.RowFilter構文のfor日付です:

dataView.RowFilter = "supplier_invoice_date >= #2012-07-13#"

ただし、 を使用することもできますLinq-To-DataSet。フィールドの実際のデータ型はStringではなく であると想定しているため、最初Dateに解析する必要があります。Date

Dim startDate = New Date(2012, 7, 13)
Dim endDate =   New Date(2012, 7, 17)
Dim invoiceDate As Date
Dim filtered = From row In dt.AsEnumerable()
    Where Date.TryParse(row.Field(Of String)("supplier_invoice_date"), invoiceDate) _
    AndAlso invoiceDate >= startDate AndAlso invoiceDate <= endDate
Dim tblFiltered As DataTable = filtered.CopyToDataTable()
于 2012-07-17T22:03:02.347 に答える