codice:
Public Class Main
Dim codice
Dim ulter As Boolean = True
Dim tick = 0
Dim tick2 = 0
Dim tick3 = 0
Dim XLS_Cartel3 As New Microsoft.Office.Interop.Excel.Application()
Dim aperto As Boolean = False
Dim Indice As Integer = 1
Dim passo As Integer = 0
Private Sub Main_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
If aperto = True Then
XLS_Cartel3.ActiveWorkbook.Save()
XLS_Cartel3.Workbooks.Close()
End If
End Sub
Private Sub Main_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
XLS_Cartel3.Workbooks.Open("C:\Cartel3")
XLS_Cartel3.Worksheets(1).Select()
aperto = True
Me.TextBox3.Focus()
Me.TextBox2.Enabled = False
Me.TextBoxNome.Enabled = False
Me.Timer2.Enabled = True
Me.Timer2.Interval = 1000
Me.Timer2.Start()
Me.Timer3.Enabled = True
Me.Timer3.Interval = 1000
End Sub
Private Sub Timer2_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer2.Tick
'gestione orologio del form
Me.TextBox2.Text = Mid$(My.Computer.Clock.LocalTime, 12, 5)
End Sub
Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
'gestione temporizzatore del form
tick += 1
If tick = 2 Then
tick = 0
Me.TextBox3.Text = Nothing
Me.TextBox1.Text = Nothing
Me.TextBoxNome.Text = Nothing
Me.TextBox3.Enabled = True
Me.TextBox1.Enabled = True
Me.TextBox3.Focus()
End If
End Sub
Private Sub Main_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
Me.TextBox1.Location = New System.Drawing.Point(Me.Size.Width * 0.758, Me.Size.Height * 0.233)
Me.TextBox1.Font = New Font(Font.FontFamily, Me.Size.Height * 0.087)
Me.TextBox1.Size = New Size(Me.Size.Height * 0.173, 47)
'
Me.TextBox2.Location = New System.Drawing.Point(Me.Size.Width * 0.758, Me.Size.Height * 0.41)
Me.TextBox2.Font = New Font(Font.FontFamily, Me.Size.Height * 0.0275)
Me.TextBox2.Size = New Size(Me.Size.Height * 0.173, 20)
Me.TextBox3.Location = New System.Drawing.Point(Me.Size.Width * 1.5, Me.Size.Height * 0.2)
Me.TextBox3.Font = New Font(Font.FontFamily, Me.Size.Height * 0.0275)
Me.TextBox3.Size = New Size(Me.Size.Height * 0.173, 20)
Me.TextBoxNome.Location = New System.Drawing.Point(Me.Size.Width * 0.725, Me.Size.Height * 0.1)
Me.TextBoxNome.Font = New Font(Font.FontFamily, Me.Size.Height * 0.025)
Me.TextBoxNome.Size = New Size(Me.Size.Height * 0.42, 21)
Me.Button1.Location = New System.Drawing.Point(Me.Size.Width * 0.84, Me.Size.Height * 0.5)
End Sub
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged
'routine memorizzazione codice dipendente e gestione timbrature
Dim c As Integer
Dim esc As Boolean
If Me.TextBox3.Text.Length = 17 Then
My.Computer.Audio.PlaySystemSound(System.Media.SystemSounds.Beep)
TextBox1.Text = Mid$(Me.TextBox3.Text, 15, 2)
codice = TextBox1.Text
Form1.TextBox6.Text = codice
c = 1
esc = False
Do
If CInt(XLS_Cartel3.Cells(c, 6).value) = codice Then
TextBoxNome.Text = XLS_Cartel3.Cells(c, 14).value
esc = True
Else
If XLS_Cartel3.Cells(c + 1, 6).value = 0 Then
esc = True
Else
c += 1
End If
End If
Loop Until esc = True
Me.TextBox3.Enabled = False
Me.TextBox1.Enabled = False
Me.TextBoxNome.Enabled = False
Me.Timer1.Enabled = True
Me.Timer1.Interval = 1000
Me.Timer1.Start()
Timbratura(codice)
End If
End Sub
Private Sub Timbratura(ByVal codice As Integer)
'routine per aggiornamento del numero delle timbrature del dipendente
Dim Escape = Nothing
Dim ore As Integer
Dim min As Integer
Dim Result As MsgBoxResult
ore = My.Computer.Clock.LocalTime.Hour
min = My.Computer.Clock.LocalTime.Minute
Do
Escape = XLS_Cartel3.Cells(Indice + 1, 6).value
If XLS_Cartel3.Cells(Indice, 6).value = codice Then
'Incremento del numero di timbrature
XLS_Cartel3.Cells(Indice, 7).value = XLS_Cartel3.Cells(Indice, 7).value + 1
If XLS_Cartel3.Cells(Indice, 7).value = 1 Then
XLS_Cartel3.Cells(Indice, 8).value = ore & " : " & min
ElseIf XLS_Cartel3.Cells(Indice, 7).value = 3 Then
Me.Timer3.Stop()
'MsgBox(tick3)
tick3 = 0
XLS_Cartel3.Cells(Indice, 10).value = ore & " : " & min
Me.Timer3.Start()
Me.Button1.Visible = False
ElseIf XLS_Cartel3.Cells(Indice, 7).value = 5 Then
Me.Timer3.Stop()
'MsgBox(tick3)
tick3 = 0
XLS_Cartel3.Cells(Indice, 12).value = ore & " : " & min
Me.Timer3.Start()
Me.Button1.Visible = False
ElseIf XLS_Cartel3.Cells(Indice, 7).value = 2 Then
Me.Timer3.Stop()
tick3 = 0
XLS_Cartel3.Cells(Indice, 9).value = ore & " : " & min
Me.Timer3.Start()
Me.Button1.Visible = True
passo = 9
ElseIf XLS_Cartel3.Cells(Indice, 7).value = 4 Then
Me.Timer3.Stop()
tick3 = 0
XLS_Cartel3.Cells(Indice, 11).value = ore & " : " & min
'XLS.Cells(Indice, 11).value = "19 : 00"
Me.Timer3.Start()
Me.Button1.Visible = True
passo = 11
ElseIf XLS_Cartel3.Cells(Indice, 7).value = 6 Then
Me.Timer3.Stop()
tick3 = 0
XLS_Cartel3.Cells(Indice, 13).value = ore & " : " & min
Me.Timer3.Start()
Me.Button1.Visible = True
passo = 13
End If
Exit Do
ElseIf XLS_Cartel3.Cells(Indice, 6).value <> codice And Escape Is Nothing Then
MsgBox("Numero Badge Inesistente", MsgBoxStyle.Critical, "Attenzione")
End If
Indice += 1
Loop Until Escape Is Nothing
End Sub
Public Function Approx_Difetto(ByVal minuti As Integer)
'routine per l'approssimazione in difetto(al quarto d'ora precedente)della timbratura
If minuti > 0 And minuti <= 15 Then
minuti = 0
ElseIf minuti > 15 And minuti <= 30 Then
minuti = 15
ElseIf minuti > 30 And minuti <= 45 Then
minuti = 30
ElseIf minuti > 45 And minuti <= 59 Then
minuti = 45
End If
Return (minuti)
End Function
Private Sub Timer3_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
tick3 += 1
End Sub
Private Sub calcolo_ore_lavoro(ByVal indice)
Dim ah, bh, ch, am, bm, cm As Integer
Dim th, tm As Integer
Dim zm As Double
Dim pizm, Approx As Integer
ah = Mid$(XLS_Cartel3.Cells(indice, 9).value, 1, 2) - Mid$(XLS_Cartel3.Cells(indice, 8).value, 1, 2)
th = ah
If passo = 11 Then
bh = Mid$(XLS_Cartel3.Cells(indice, 11).value, 1, 2) - Mid$(XLS_Cartel3.Cells(indice, 10).value, 1, 2)
th = ah + bh
ElseIf passo = 13 Then
ch = Mid$(XLS_Cartel3.Cells(indice, 13).value, 1, 2) - Mid$(XLS_Cartel3.Cells(indice, 12).value, 1, 2)
th = ah + bh + ch
End If
If Mid$(XLS_Cartel3.Cells(indice, 9).value, 5, 2) < Mid$(XLS_Cartel3.Cells(indice, 8).value, 5, 2) Then
am = 60 + Mid$(XLS_Cartel3.Cells(indice, 9).value, 5, 2) - Mid$(XLS_Cartel3.Cells(indice, 8).value, 5, 2)
th = th - 1
Else
am = Mid$(XLS_Cartel3.Cells(indice, 9).value, 5, 2) - Mid$(XLS_Cartel3.Cells(indice, 8).value, 5, 2)
End If
tm = am
If passo = 11 Then
If Mid$(XLS_Cartel3.Cells(indice, 11).value, 5, 2) < Mid$(XLS_Cartel3.Cells(indice, 10).value, 5, 2) Then
bm = 60 + Mid$(XLS_Cartel3.Cells(indice, 11).value, 5, 2) - Mid$(XLS_Cartel3.Cells(indice, 10).value, 5, 2)
th = th - 1
Else
bm = Mid$(XLS_Cartel3.Cells(indice, 11).value, 5, 2) - Mid$(XLS_Cartel3.Cells(indice, 10).value, 5, 2)
End If
tm = am + bm
ElseIf passo = 13 Then
If Mid$(XLS_Cartel3.Cells(indice, 13).value, 5, 2) < Mid$(XLS_Cartel3.Cells(indice, 12).value, 5, 2) Then
cm = 60 + Mid$(XLS_Cartel3.Cells(indice, 13).value, 5, 2) - Mid$(XLS_Cartel3.Cells(indice, 12).value, 5, 2)
th = th - 1
Else
cm = Mid$(XLS_Cartel3.Cells(indice, 13).value, 5, 2) - Mid$(XLS_Cartel3.Cells(indice, 12).value, 5, 2)
End If
tm = am + bm + cm
End If
zm = tm / 60
pizm = Int(zm)
th = th + pizm
tm = tm - 60 * pizm
Approx = Approx_Difetto(tm)
tm = Approx
Form1.TextBox7.Text = th
Form1.TextBox8.Text = tm
Form1.TextBox9.Text = XLS_Cartel3.Cells(indice, 5).value
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.Timer1.Stop()
Me.Timer3.Stop()
ulter = False
calcolo_ore_lavoro(Indice)
'azzera timbrature
For passo = 7 To 13
XLS_Cartel3.Cells(Indice, passo) = Nothing
Next
XLS_Cartel3.ActiveWorkbook.Save()
XLS_Cartel3.Workbooks.Close()
aperto = False
Form2.Show()
Form1.Show()
Me.Button1.Visible = False
Me.Hide()
End Sub
End Class