我正在try 使用VB.NET中的MS SYS根据开始和结束日期进行查询
表ABSEN
可以与表HELPERABSEN
合并
因此,我想从表PERIOD
中获取开始日期和结束日期,其中条件基于表PERIOD
中的PERIODNAME
.
如果数据的开始日期和结束日期不存在于DATEABSEN
字段的Absen
表中,则查询根据ID2
和INOUT
创建新记录
我不想使用MS Access中的函数,因为我使用的是VB. NET的SQL.
如果还有其他方法请指导我
谢谢
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 | INOUT | DATEABSEN | TIME | STATUS |
---|---|---|---|---|
1000 | IN | 20-Apr-24 | 08:00 | PRESENT |
1000 | OUT | 20-Apr-24 | 17:00 | PRESENT |
1002 | IN | 20-Apr-24 | 08:00 | PRESENT |
1002 | OUT | 20-Apr-24 | 17:00 | PRESENT |
1000 | IN | 21-Apr-24 | 08:00 | PRESENT |
1000 | OUT | 21-Apr-24 | 17:00 | PRESENT |
1002 | IN | 21-Apr-24 | 08:00 | PRESENT |
1002 | OUT | 21-Apr-24 | 17:00 | PRESENT |
1000 | IN | 22-Apr-24 | 08:00 | PRESENT |
1000 | OUT | 22-Apr-24 | 17:00 | PRESENT |
1002 | IN | 22-Apr-24 | 08:00 | PRESENT |
1002 | OUT | 22-Apr-24 | 17:00 | PRESENT |
1000 | IN | 24-Apr-24 | 08:00 | PRESENT |
1002 | OUT | 24-Apr-24 | 17:00 | PRESENT |
1000 | OUT | 24-Apr-24 | 17:00 | PRESENT |
1002 | IN | 24-Apr-24 | 08:00 | PRESENT |
1000 | IN | 20-May-24 | 08:00 | PRESENT |
1000 | OUT | 20-May-24 | 17:00 | PRESENT |
1002 | IN | 20-May-24 | 08:00 | PRESENT |
1002 | OUT | 20-May-24 | 17:00 | PRESENT |
1000 | IN | 21-May-24 | 08:00 | PRESENT |
1000 | OUT | 21-May-24 | 17:00 | PRESENT |
1002 | IN | 21-May-24 | 08:00 | PRESENT |
1002 | OUT | 21-May-24 | 17:00 | PRESENT |
1000 | IN | 22-May-24 | 08:00 | PRESENT |
1000 | OUT | 22-May-24 | 17:00 | PRESENT |
1002 | IN | 22-May-24 | 08:00 | PRESENT |
1002 | OUT | 22-May-24 | 17:00 | PRESENT |
表HELPERABSEN
ID2 | INOUT | DATEABSEN | TIME | STATUS |
---|---|---|---|---|
1000 | IN | 23-Apr-24 | NOT PRESENT | |
1000 | OUT | 23-Apr-24 | NOT PRESENT | |
1002 | IN | 23-Apr-24 | NOT PRESENT | |
1002 | OUT | 23-Apr-24 | NOT PRESENT | |
1000 | OUT | 24-Apr-24 | 17:00 | PRESENT |
1002 | IN | 24-Apr-24 | 08:00 | PRESENT |
1000 | IN | 24-Apr-24 | 08:00 | PRESENT |
1002 | OUT | 24-Apr-24 | 17:00 | PRESENT |
表MASTERID2
ID2 | NAMEID2 | POSITION |
---|---|---|
1000 | JACK | STAFF |
1001 | ROY | OPERATOR |
1002 | KEN | STAFF |
1003 | REY | OPERATOR |
表PERIOD
PERIODNAME | STARTDATE | ENDDATE |
---|---|---|
FIRST | 22-Apr-24 | 25-Apr-24 |
SECOND | 22-May-24 | 25-May-24 |
已确定的结果
但我想基于每个时期
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 |