Reputation: 369
I'm Trying to calculated properties from class model object in vb.net
so I want to get rid of the "0" string to be empty
for calculation DUROFWORK
It has not been reduced by DEFREST
DatagridView is only a view so my goal is to use the Report Viewer.
If the status Not Present
then empty for the object IN
,OUT
,DUROFWORK
,LATEIN
For Latein
If the results 00:00:00
then I want the result to be empty
Please Guide me
Thanks
Imports System.ComponentModel
Public Class Form1
Private DTOABSEN As List(Of DTOABSEN)
Private bindingSource As BindingSource = Nothing
Public Sub New()
InitializeComponent()
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.LoadData()
End Sub
Private Sub LoadData()
DTOABSEN = New List(Of DTOABSEN) From {
New DTOABSEN() With {
.DATE = Convert.ToDateTime("06-05-2024"),
.Days = Convert.ToDateTime("06-05-2024").ToString("dddd"),
.STATUS = "PRESENT",
.DEFIN = "08:00",
.DEFREST = "01:00",
.IN = "08:00",
.OUT = "17:00"
},
New DTOABSEN() With {
.DATE = Convert.ToDateTime("07-05-2024"),
.Days = Convert.ToDateTime("07-05-2024").ToString("dddd"),
.STATUS = "PRESENT",
.DEFIN = "08:00",
.DEFREST = "01:00",
.IN = "08:00",
.OUT = "17:00"
},
New DTOABSEN() With {
.DATE = Convert.ToDateTime("08-05-2024"),
.Days = Convert.ToDateTime("08-05-2024").ToString("dddd"),
.STATUS = "PRESENT",
.DEFIN = "08:00",
.DEFREST = "01:00",
.IN = "08:00",
.OUT = "17:00"
},
New DTOABSEN() With {
.DATE = Convert.ToDateTime("09-05-2024"),
.Days = Convert.ToDateTime("09-05-2024").ToString("dddd"),
.STATUS = "PRESENT",
.DEFIN = "08:00",
.DEFREST = "01:00",
.IN = "08:00",
.OUT = "17:00"
},
New DTOABSEN() With {
.DATE = Convert.ToDateTime("10-05-2024"),
.Days = Convert.ToDateTime("10-05-2024").ToString("dddd"),
.STATUS = "PRESENT",
.DEFIN = "08:00",
.DEFREST = "01:00",
.IN = "08:20",
.OUT = "17:00"
},
New DTOABSEN() With {
.DATE = Convert.ToDateTime("11-05-2024"),
.Days = Convert.ToDateTime("11-05-2024").ToString("dddd"),
.STATUS = "NOT PRESENT",
.DEFIN = "08:00",
.DEFREST = "01:00",
.IN = "0",
.OUT = "0"
},
New DTOABSEN() With {
.DATE = Convert.ToDateTime("12-05-2024"),
.Days = Convert.ToDateTime("12-05-2024").ToString("dddd"),
.STATUS = "NOT PRESENT",
.DEFIN = "08:00",
.DEFREST = "01:00",
.IN = "",
.OUT = ""
}
}
bindingSource = New BindingSource With {.DataSource = New BindingList(Of DTOABSEN)(CType(DTOABSEN, IList(Of DTOABSEN)))}
DataGridView1.DataSource = bindingSource
DataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells)
End Sub
End Class
Public Class ABSEN
Public Property [DATE] As DateTime
Public Property Days As String
Public Property STATUS As String
Public Property DEFIN As String
Public Property DEFREST As String
Public Property [IN] As String
Public Property OUT As String
Public Property DUROFWORK As String
Public Property LATEIN As String
End Class
Public Class DTOABSEN
Public Property [DATE] As DateTime
Public Property Days As String
Public Property STATUS As String
Public Property DEFIN As String
Public Property DEFREST As String
Public Property [IN] As String
Public Property OUT As String
Public ReadOnly Property DUROFWORK As TimeSpan
Get
Return CDate(TimeValue(OUT)) - CDate(TimeValue([IN]))
End Get
End Property
Public ReadOnly Property LATEIN As TimeSpan
Get
Return CDate(TimeValue([IN])) - CDate(TimeValue(DEFIN))
End Get
End Property
End Class
Desired output
DATE DAYS STATUS DEFIN DEFREST IN OUT DUROFWORK LATEIN
06-May-24 Monday PRESENT 08:00 01:00 08:00 17:00 08:00:00
07-May-24 Tuesday PRESENT 08:00 01:00 08:00 17:00 08:00:00
08-May-24 Wednesday PRESENT 08:00 01:00 08:00 17:00 08:00:00
09-May-24 Thursday PRESENT 08:00 01:00 08:00 17:00 08:00:00
10-May-24 Friday PRESENT 08:00 01:00 08:00 17:00 07:40:00 00:20:00
11-May-24 Saturday NOT PRESENT 08:00 01:00
12-May-24 Sunday NOT PRESENT 08:00 01:00
Upvotes: 0
Views: 59