Sql 2个日期和文本之间的日期过滤器

Sql 2个日期和文本之间的日期过滤器,sql,vb.net,Sql,Vb.net,你好 我试图从两个日期和一个文本中筛选我的数据。 下面是我在datagridviewer上加载数据的代码 Private Sub frmMCOUT_Load_2(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim publictable As New DataTable Dim cmd As New OleDb.OleDbCommand Dim da As

你好

我试图从两个日期和一个文本中筛选我的数据。 下面是我在datagridviewer上加载数据的代码

Private Sub frmMCOUT_Load_2(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim publictable As New DataTable
    Dim cmd As New OleDb.OleDbCommand
    Dim da As New OleDb.OleDbDataAdapter
    Dim sql As String = "SELECT DateEncoded as [Date Encoded], LOTNUMBER as [Lot Number], PARTSLIST as [Part Number - Part Name], prdInput as [Input], prdOutput as [Output], OPERATOR as [Operator], PROCESS as [Process], MACHINE as [Machine], REJECTS as [Reject], INTDATE as [Date], Shift as [Shift], PROCMONTH as [Year and Month], PARTNUMBER as [Part Number], PARTNAME as [Part Name], HELPERKEY as [Helper] from ProdOutput WHERE PROCESS = 'MACHINING'; "


    Try
        'open the connection
        'conn.Open()
        With cmd
            .Connection = conn
            .CommandText = sql
        End With
        'get the SQL statements used to select records in the datasource
        da.SelectCommand = cmd
        'it fills the datatable
        da.Fill(publictable)
        'populate the datagridview
        dtgEntryList.DataSource = publictable
    Catch ex As Exception
        MsgBox(ex.Message)
    Finally

        conn.Close()
        da.Dispose()
    End Try
    dtgEntryList.Sort(dtgEntryList.Columns(1), System.ComponentModel.ListSortDirection.Descending)


End Sub
我有两个日期选择器,我需要筛选这两个日期之间输入的日期。我还需要过滤数据,使其显示“加工”过程。你知道怎么做吗


谢谢

我已将数据库代码与用户界面代码分开。这使得代码更易于维护

不要在使用连接的方法之外声明连接

使用
Using…End-Using
块以确保关闭并释放数据库对象

Private ConStr As String = "Your connection string"
Private publictable As DataTable

Private Sub frmMCOUT_Load_2(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Try
        publictable = GetPartsData()  
    Catch ex As Exception
        MsgBox(ex.Message)
        Return
    End Try
    DataGridView1.DataSource = publictable
End Sub

Private Function GetPartsData() As DataTable
    Dim dt As New DataTable
    Dim sql As String = "SELECT DateEncoded as [Date Encoded], LOTNUMBER as [Lot Number], PARTSLIST as [Part Number - Part Name], prdInput as [Input], prdOutput as [Output], OPERATOR as [Operator], PROCESS as [Process], MACHINE as [Machine], REJECTS as [Reject], INTDATE as [Date], Shift as [Shift], PROCMONTH as [Year and Month], PARTNUMBER as [Part Number], PARTNAME as [Part Name], HELPERKEY as [Helper] from ProdOutput 
    WHERE PROCESS = 'MACHINING' 
    Order by LOTNUMBER DESC; "
    Using conn As New OleDbConnection(ConStr),
            cmd As New OleDbCommand(sql, conn)
        conn.Open()
        Using reader = cmd.ExecuteReader
            dt.Load(reader)
        End Using
    End Using
    Return dt
End Function
用户有机会选择日期后,使用
Select
方法过滤
DataTable
,并将结果行数组分配给网格。我不确定要筛选哪个日期字段。只需将
dateencoded
更改为所需的字段。使用数据表中的字段名,而不是数据库中的字段名

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim StartDate = DateTimePicker1.Value
    Dim EndDate = DateTimePicker2.Value
    Dim filteredData = publictable.Select($"Date Encoded >= {StartDate} And Date Encoded <= {EndDate}")
    DataGridView1.DataSource = filteredData
End Sub
Private子按钮1\u单击(发送者作为对象,e作为事件参数)处理按钮1。单击
Dim StartDate=DateTimePicker1.Value
Dim EndDate=DateTimePicker2.Value

Dim filteredData=publictable。选择($”日期编码>={StartDate}和日期编码,因此您需要编写
WHERE
子句来过滤这些值,并向命令中添加适当的参数。大量现有信息和示例供您遵循。如果您这样做时遇到问题,请告诉我们。您想在DB中过滤还是在VB中过滤?在VB中。我插入了数据网格视图