You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在DataGridView2中按DateIN和HourIN筛选今日到店人员

解决方案:筛选今日到店人员并绑定到DataGridView2

我来帮你搞定这个需求,结合你的数据库结构和VB.NET代码,一步步来实现:


核心思路

你的表把日期和时间拆成了DateIN(日期)和HourIN(时间)两个字段,所以首先要把这两个字段合并成完整的DateTime值,然后筛选出**今日(当前自然日)**的到店记录,最后把结果绑定到DataGridView2上。

关键SQL查询语句

在SQL Server中,Date和Time类型可以直接相加得到完整的DateTime,我们用这个特性来精准筛选今日的记录:

SELECT Id, FirstName, Phone, DateOut, HourOut, DateIN, HourIN
FROM TableOberge
-- 合并DateIN和HourIN为完整DateTime,判断是否在今日00:00到明日00:00之间
WHERE CAST(DateIN AS DATETIME) + CAST(HourIN AS DATETIME) >= CAST(GETDATE() AS DATE)
  AND CAST(DateIN AS DATETIME) + CAST(HourIN AS DATETIME) < DATEADD(DAY, 1, CAST(GETDATE() AS DATE))

这个查询会精准匹配所有今日到店的人员,不会漏掉凌晨的记录,也不会包含昨日的晚班记录。

完整的VB.NET代码实现

把你写了一半的Form1_Load事件补充完整,注意用Using语句管理数据库资源,避免内存泄漏:

Imports System.Data.SqlClient

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    ' 替换成你的实际数据库连接字符串
    Dim connString As String = "Data Source=你的SQL服务器名;Initial Catalog=DataOberge;Integrated Security=True;"
    
    ' 构建筛选今日到店人员的SQL语句
    Dim sqlQuery As String = "SELECT Id, FirstName, Phone, DateOut, HourOut, DateIN, HourIN " &
                             "FROM TableOberge " &
                             "WHERE CAST(DateIN AS DATETIME) + CAST(HourIN AS DATETIME) >= CAST(GETDATE() AS DATE) " &
                             "AND CAST(DateIN AS DATETIME) + CAST(HourIN AS DATETIME) < DATEADD(DAY, 1, CAST(GETDATE() AS DATE))"

    ' 使用Using语句自动释放数据库资源
    Using sqlConn As New SqlConnection(connString)
        Using sqlCmd As New SqlCommand(sqlQuery, sqlConn)
            Try
                sqlConn.Open()
                ' 用SqlDataAdapter填充DataTable
                Dim dataAdapter As New SqlDataAdapter(sqlCmd)
                Dim resultTable As New DataTable()
                dataAdapter.Fill(resultTable)

                ' 将结果绑定到DataGridView2
                DataGridView2.DataSource = resultTable

                ' 可选:自定义列标题,提升用户体验
                DataGridView2.Columns("Id").HeaderText = "编号"
                DataGridView2.Columns("FirstName").HeaderText = "姓名"
                DataGridView2.Columns("Phone").HeaderText = "联系电话"
                DataGridView2.Columns("DateOut").HeaderText = "离店日期"
                DataGridView2.Columns("HourOut").HeaderText = "离店时间"
                DataGridView2.Columns("DateIN").HeaderText = "到店日期"
                DataGridView2.Columns("HourIN").HeaderText = "到店时间"
            Catch ex As Exception
                ' 捕获并显示错误信息
                MessageBox.Show("加载数据失败:" & ex.Message, "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End Try
        End Using
    End Using
End Sub

重要注意事项

  • 连接字符串替换:一定要把connString里的服务器名、认证方式改成你自己的数据库配置(如果用SQL账号登录,要加上User ID=xxx;Password=xxx;)
  • SQL注入防护:如果之后需要动态筛选其他日期,一定要用参数化查询(比如sqlCmd.Parameters.AddWithValue("@TargetDate", targetDate)),不要直接拼接字符串
  • 数据库兼容性:如果你的数据库不是SQL Server,日期合并语法会有差异(比如MySQL用STR_TO_DATE(CONCAT(DateIN, ' ', HourIN), '%Y-%m-%d %H:%i:%s'))

内容的提问来源于stack exchange,提问作者ABIDINE

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:42:22