Καλημέρα σε όλους. Είχα ρωτήσει πιο παλιά για το πως μπορώ να ελέγχω events κατά την διάρκεια του form closing και επιλύθηκε μια χαρά χάρις την βοήθεια των ανθρώπων εδώ. Αυτό που αντιμετωπίζω όμως είναι το εξής :
Όταν κλείνει η φόρμα τρέχω ένα query το οποίο καταγράφει την έξοδο των χρηστών στην βάση (κάνω το ίδιο και για την είσοδο). Το query, κατά την έξοδο όμως, τρέχει 2 φορές (!) με αποτέλεσμα να έχω διπλή εγγραφή στην βάση για την έξοδο του ίδιου χρήστη.
το module που έχω φτιάξει για login-logout, είναι το εξής :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
| Imports System.Windows.Forms
Imports System.Data.SqlClient
Module General
'==================================================================================================
'Query Εισόδου Χρηστών...
Public login As String = "INSERT INTO [20_UserLog] " _
& "(UserID, FName, LName, Logdate, In_Out)" _
& "VALUES " _
& "(" & Convert.ToInt32(CentralScreen.UserIDText.Text) & ", " _
& "(SELECT FName FROM [20_Users] WHERE UserID = " & Convert.ToInt32(CentralScreen.UserIDText.Text) & "), " _
& "(SELECT LName FROM [20_Users] WHERE UserID = " & Convert.ToInt32(CentralScreen.UserIDText.Text) & "), " _
& "GETDATE(), " _
& "'I')"
'Query Εξόδου Χρηστών...
Public logout As String = "INSERT INTO [20_UserLog] " _
& "(UserID, FName, LName, Logdate, In_Out)" _
& "VALUES " _
& "(" & Convert.ToInt32(CentralScreen.UserIDText.Text) & ", " _
& "(SELECT FName FROM [20_Users] WHERE UserID = " & Convert.ToInt32(CentralScreen.UserIDText.Text) & "), " _
& "(SELECT LName FROM [20_Users] WHERE UserID = " & Convert.ToInt32(CentralScreen.UserIDText.Text) & "), " _
& "GETDATE(), " _
& "'O')"
'==================================================================================================
'Ορισμός των SQL Commands για το Login/Logout των χρηστών...
Public loginCMD As New SqlCommand(login, SQLConn.Connection)
Public logoutCMD As New SqlCommand(logout, SQLConn.Connection)
'==================================================================================================
Public Sub LoginRec()
loginCMD.ExecuteNonQuery()
SQLConn.Connection.Close()
End Sub
Public Sub LogoutRec()
logoutCMD.ExecuteNonQuery()
SQLConn.Connection.Close()
End Sub
End Module |
...και καλείται από την παρακάτω ρουτίνα η οποία καλείται όταν ο χρήστης πατήσει το κουμπί "Χ" της φόρμας...
1
2
3
4
5
| Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As FormClosingEventArgs) _
Handles Me.FormClosing
LogoutRec()
Application.Exit()
End Sub |
..αν μπορείτε να βοηθείσετε θα το εκτιμήσω πολύ....
ευχαριστώ εκ των προτέρων....
Αντώνης Ε. Κόλλιας