我正在尝试使用 VB.NET 中的 MS ACCESS 根据开始和结束日期进行查询
我不想使用 MS Access 中的函数,因为我使用 SQL for VB.NET。
请指导我。
谢谢
Public Class Form1
Private AbsenService As New ABSENservice()
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
DataGridView1.DataSource = AbsenService.GetAbsenfull()
End Sub
End Class
Public Class ABSENservice
Public Function GetOledbConnectionString() As String
Return "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\trialabsen.accdb;Persist Security Info=False;"
End Function
Private ReadOnly _conn As OleDbConnection
Private _connectionString As String = GetOledbConnectionString()
Public Sub New()
_conn = New OleDbConnection(_connectionString)
End Sub
Public Function GetAbsenfull() As IEnumerable(Of ABSEN)
Dim sql = $"SELECT ABSEN.ID2 AS [ID2],MASTERID2.NAMEID2 AS [NAMEID2],ABSEN.INOUT AS [INOUT],ABSEN.DATEABSEN AS [DATEABSEN],Format(ABSEN.TIME,'hh:mm:ss') AS [TIME],ABSEN.STATUS AS [STATUS] FROM ABSEN INNER JOIN MASTERID2 ON ABSEN.ID2 = MASTERID2.ID2"
Using _conn = New OleDbConnection(GetOledbConnectionString())
Return _conn.Query(Of ABSEN)(sql).ToList()
End Using
End Function
End Class
Public Class ABSEN
Public Property ID() As Integer
Public Property ID2() As String
Public Property NAMEID2() As String
Public Property INOUT() As String
Public Property DATEABSEN() As DateTime
Public Property TIME() As String
Public Property STATUS() As String
End Class
代码结果
ID2 NAMEID2 INOUT DATEABSEN TIME STATUS
1000 JACK IN 21-Apr-24 08:00:00 PRESENT
1000 JACK IN 22-May-24 08:00:00 PRESENT
1000 JACK OUT 22-May-24 17:00:00 PRESENT
1002 KEN IN 22-May-24 08:00:00 PRESENT
1002 KEN OUT 22-May-24 17:00:00 PRESENT
1000 JACK OUT 21-Apr-24 17:00:00 PRESENT
1002 KEN IN 21-Apr-24 08:00:00 PRESENT
1002 KEN OUT 21-Apr-24 17:00:00 PRESENT
1000 JACK IN 22-Apr-24 08:00:00 PRESENT
1000 JACK OUT 22-Apr-24 17:00:00 PRESENT
1002 KEN IN 22-Apr-24 08:00:00 PRESENT
1002 KEN OUT 22-Apr-24 17:00:00 PRESENT
1000 JACK IN 24-Apr-24 08:00:00 PRESENT
1002 KEN OUT 24-Apr-24 17:00:00 PRESENT
1000 JACK OUT 25-Apr-24 17:00:00 PRESENT
1002 KEN IN 25-Apr-24 08:00:00 PRESENT
1000 JACK IN 20-May-24 08:00:00 PRESENT
1000 JACK OUT 20-May-24 17:00:00 PRESENT
1002 KEN IN 20-May-24 08:00:00 PRESENT
1002 KEN OUT 20-May-24 17:00:00 PRESENT
1000 JACK IN 21-May-24 08:00:00 PRESENT
1000 JACK OUT 21-May-24 17:00:00 PRESENT
1002 KEN IN 21-May-24 08:00:00 PRESENT
1002 KEN OUT 21-May-24 17:00:00 PRESENT
1000 JACK IN 20-Apr-24 08:00:00 PRESENT
1000 JACK OUT 20-Apr-24 17:00:00 PRESENT
1002 KEN IN 20-Apr-24 08:00:00 PRESENT
1002 KEN OUT 20-Apr-24 17:00:00 PRESENT
样本数据
桌子
ABSEN
ID2 | 输入输出 | 日期ABSEN | 时间 | 状态 |
---|---|---|---|---|
1000 | 在 | 20 年 4 月 24 日 | 08:00 | 现在 |
1000 | 出 | 20 年 4 月 24 日 | 17:00 | 现在 |
1002 | 在 | 20 年 4 月 24 日 | 08:00 | 现在 |
1002 | 出 | 20 年 4 月 24 日 | 17:00 | 现在 |
1000 | 在 | 21-4-24 | 08:00 | 现在 |
1000 | 出 | 21-4-24 | 17:00 | 现在 |
1002 | 在 | 21-4-24 | 08:00 | 现在 |
1002 | 出 | 21-4-24 | 17:00 | 现在 |
1000 | 在 | 22-4-24 | 08:00 | 现在 |
1000 | 出 | 22-4-24 | 17:00 | 现在 |
1002 | 在 | 22-4-24 | 08:00 | 现在 |
1002 | 出 | 22-4-24 | 17:00 | 现在 |
1000 | 在 | 24 年 4 月 24 日 | 08:00 | 现在 |
1002 | 出 | 24 年 4 月 24 日 | 17:00 | 现在 |
1000 | 出 | 24 年 4 月 24 日 | 17:00 | 现在 |
1002 | 在 | 24 年 4 月 24 日 | 08:00 | 现在 |
1000 | 在 | 24 年 5 月 20 日 | 08:00 | 现在 |
1000 | 出 | 24 年 5 月 20 日 | 17:00 | 现在 |
1002 | 在 | 24 年 5 月 20 日 | 08:00 | 现在 |
1002 | 出 | 24 年 5 月 20 日 | 17:00 | 现在 |
1000 | 在 | 24 年 5 月 21 日 | 08:00 | 现在 |
1000 | 出 | 24 年 5 月 21 日 | 17:00 | 现在 |
1002 | 在 | 24 年 5 月 21 日 | 08:00 | 现在 |
1002 | 出 | 24 年 5 月 21 日 | 17:00 | 现在 |
1000 | 在 | 24 年 5 月 22 日 | 08:00 | 现在 |
1000 | 出 | 24 年 5 月 22 日 | 17:00 | 现在 |
1002 | 在 | 24 年 5 月 22 日 | 08:00 | 现在 |
1002 | 出 | 24 年 5 月 22 日 | 17:00 | 现在 |
桌子
HELPERABSEN
ID2 | 输入输出 | 日期ABSEN | 时间 | 状态 |
---|---|---|---|---|
1000 | 在 | 24 年 4 月 23 日 | 不存在 | |
1000 | 出 | 24 年 4 月 23 日 | 不存在 | |
1002 | 在 | 24 年 4 月 23 日 | 不存在 | |
1002 | 出 | 24 年 4 月 23 日 | 不存在 | |
1000 | 出 | 24 年 4 月 24 日 | 17:00 | 现在 |
1002 | 在 | 24 年 4 月 24 日 | 08:00 | 现在 |
1000 | 在 | 24 年 4 月 24 日 | 08:00 | 现在 |
1002 | 出 | 24 年 4 月 24 日 | 17:00 | 现在 |
桌子
MASTERID2
ID2 | 名称ID2 | 位置 |
---|---|---|
1000 | 杰克 | 工作人员 |
1001 | 罗伊 | 操作员 |
1002 | 肯 | 工作人员 |
1003 | 雷伊 | 操作员 |
桌子
PERIOD
期间名称 | 开始日期 | 结束日期 |
---|---|---|
第一 | 22-4-24 | 24 年 4 月 25 日 |
第二 | 24 年 5 月 22 日 | 24 年 5 月 25 日 |
全部想要的结果
但我想以每个时期为基础
ID2 NAMEID2 INOUT DATEABSEN TIME STATUS
1000 JACK IN 22-Apr-24 08:00 PRESENT
1000 JACK OUT 22-Apr-24 17:00 PRESENT
1002 KEN IN 22-Apr-24 08:00 PRESENT
1002 KEN OUT 22-Apr-24 17:00 PRESENT
1000 JACK IN 23-Apr-24 NOT PRESENT
1000 JACK OUT 23-Apr-24 NOT PRESENT
1002 KEN IN 23-Apr-24 NOT PRESENT
1002 KEN OUT 23-Apr-24 NOT PRESENT
1000 JACK IN 24-Apr-24 08:00 PRESENT
1000 JACK OUT 24-Apr-24 17:00 PRESENT
1002 KEN IN 24-Apr-24 08:00 PRESENT
1002 KEN OUT 24-Apr-24 17:00 PRESENT
1000 JACK IN 25-Apr-24 08:00 PRESENT
1000 JACK OUT 25-Apr-24 17:00 PRESENT
1002 KEN IN 25-Apr-24 08:00 PRESENT
1002 KEN OUT 25-Apr-24 17:00 PRESENT
1000 JACK IN 22-May-24 08:00 PRESENT
1000 JACK OUT 22-May-24 17:00 PRESENT
1002 KEN IN 22-May-24 08:00 PRESENT
1002 KEN OUT 22-May-24 17:00 PRESENT
1000 JACK IN 23-May-24 08:00 PRESENT
1000 JACK OUT 23-May-24
1002 KEN IN 23-May-24
1002 KEN OUT 23-May-24
1000 JACK IN 24-May-24
1000 JACK OUT 24-May-24
1002 KEN IN 24-May-24
1002 KEN OUT 24-May-24
1000 JACK IN 25-May-24
1000 JACK OUT 25-May-24
1002 KEN IN 25-May-24
1002 KEN OUT 25-May-24
您是否尝试更改
的值'获取库存搜索'
功能在
'ABSEN服务'
包含一个
的类'开始日期'
和
'结束日期'
参数?
类似这样的东西:
Public Function GetStockSearching(startDate As Date, endDate As Date) As IEnumerable(Of ABSEN)
Dim sql = $"SELECT ABSEN.ID2 AS [ID2], MASTERID2.NAMEID2 AS [NAMEID2], ABSEN.INOUT AS [INOUT], ABSEN.DATEABSEN AS [DATEABSEN], Format(ABSEN.TIME,'hh:mm:ss') AS [TIME], ABSEN.STATUS AS [STATUS] " &
$"FROM ABSEN INNER JOIN MASTERID2 ON ABSEN.ID2 = MASTERID2.ID2 " &
$"WHERE ABSEN.DATEABSEN BETWEEN #{startDate:yyyy-MM-dd}# AND #{endDate:yyyy-MM-dd}#"
Using _conn = New OleDbConnection(GetOledbConnectionString())
Return _conn.Query(Of ABSEN)(sql).ToList()
End Using
End Function
尝试添加两个参数
'开始日期'
和
'结束日期'
,都是类型
“日期”
,它们将用于过滤
'艾布森'
桌子
'日期ABSEN'
使用
列“之间”
SQL 查询中的运算符。
给我们这个更新的函数,从
调用它'Form1_加载'
事件处理程序并传入所需的开始和结束日期作为参数。
PSA:这是我的第一个答案,所以如果我不符合格式规范,请耐心等待
谢谢:)