Imports System Imports System.Data Imports System.Data.SqlClient Imports System.IO Imports System.Text Public Class userForm Private cnstr = mainForm.cnstr Private conn As New SqlConnection(cnstr) Private myQuery As String = String.Empty Private myCommand As SqlCommand Private adapter As SqlDataAdapter = New SqlDataAdapter() Private ds As New DataSet("Users") Private i, limit As Integer Private oldUserName As String = String.Empty Private addMode, editMode As Integer Private Sub users_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.MdiParent = mainForm Control.CheckForIllegalCrossThreadCalls = False Me.Top = 0 Me.Left = 0 fillDataSet() disableControls() moveFirst() addMode = 0 editMode = 0 btn_find.Visible = False End Sub Private Sub enableControls() txtUsername.Enabled = True txtPassword.Enabled = True txtPassword2.Enabled = True txtEmployeeCode.Enabled = True cmb_userType.Enabled = True cbActive.Enabled = True End Sub Private Sub disableControls() txtUsername.Enabled = False txtPassword.Enabled = False txtPassword2.Enabled = False txtEmployeeCode.Enabled = False cmb_userType.Enabled = False cbActive.Enabled = False End Sub Private Sub clear() txtUsername.Text = String.Empty txtPassword.Text = String.Empty txtPassword2.Text = String.Empty cmb_userType.SelectedIndex = 0 cbActive.Checked = False End Sub Public Sub toNormalMode() ts_new.Enabled = True ts_edit.Enabled = True ts_delete.Enabled = True ts_find.Enabled = True ts_revert.Enabled = False ts_save.Enabled = False disableControls() End Sub Public Sub toEditMode() ts_new.Enabled = False ts_edit.Enabled = False ts_delete.Enabled = False ts_find.Enabled = False ts_revert.Enabled = True ts_save.Enabled = True enableControls() End Sub Public Sub toAddMode() ts_new.Enabled = False ts_edit.Enabled = False ts_delete.Enabled = False ts_find.Enabled = False ts_revert.Enabled = True ts_save.Enabled = True enableControls() End Sub Public Sub toSearchMode() ts_new.Enabled = False ts_edit.Enabled = False ts_delete.Enabled = False ts_find.Enabled = True ts_revert.Enabled = False ts_save.Enabled = False End Sub Private Sub fillDataSet() Dim conn As New SqlConnection(cnstr) myQuery = "SELECT * FROM Users ORDER BY username" myCommand = New SqlCommand(myQuery, conn) Try conn.Open() adapter.SelectCommand = myCommand ds.Clear() adapter.Fill(ds) i = 0 limit = ds.Tables(0).Rows.Count - 1 Catch ex As Exception MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) Finally conn.Close() conn.Dispose() End Try End Sub Private Sub trace(ByVal username As String) Dim j As Integer = 0 For j = 0 To ds.Tables(0).Rows.Count - 1 If ds.Tables(0).Rows(j).Item("username") = username Then txtUsername.Text = ds.Tables(0).Rows(j).Item("username") txtPassword.Text = ds.Tables(0).Rows(j).Item("password") txtPassword2.Text = ds.Tables(0).Rows(j).Item("password") txtEmployeeCode.Text = ds.Tables(0).Rows(j).Item("employeecode") cmb_userType.SelectedIndex = cmb_userType.Items.IndexOf(ds.Tables(0).Rows(j).Item("authentication")) If ds.Tables(0).Rows(j).Item("active") = 1 Then cbActive.Checked = True Else cbActive.Checked = False End If i = j Exit For End If Next End Sub Public Sub moveFirst() If ds.Tables(0).Rows.Count <> 0 And limit > -1 Then i = 0 txtUsername.Text = ds.Tables(0).Rows(i).Item("username") oldUserName = ds.Tables(0).Rows(i).Item("username") txtPassword.Text = ds.Tables(0).Rows(i).Item("password") txtPassword2.Text = ds.Tables(0).Rows(i).Item("password") txtEmployeeCode.Text = ds.Tables(0).Rows(i).Item("employeecode") cmb_userType.SelectedItem = ds.Tables(0).Rows(i).Item("authentication") If ds.Tables(0).Rows(i).Item("active") = 1 Then cbActive.Checked = True Else cbActive.Checked = False End If Else clear() End If End Sub Public Sub moveNext() If i < limit And limit > -1 Then i = i + 1 txtUsername.Text = ds.Tables(0).Rows(i).Item("username") oldUserName = ds.Tables(0).Rows(i).Item("username") txtPassword.Text = ds.Tables(0).Rows(i).Item("password") txtPassword2.Text = ds.Tables(0).Rows(i).Item("password") txtEmployeeCode.Text = ds.Tables(0).Rows(i).Item("employeecode") cmb_userType.SelectedItem = ds.Tables(0).Rows(i).Item("authentication") If ds.Tables(0).Rows(i).Item("active") = 1 Then cbActive.Checked = True Else cbActive.Checked = False End If End If End Sub Public Sub movePrevious() If i <> 0 And limit > -1 Then i = i - 1 txtUsername.Text = ds.Tables(0).Rows(i).Item("username") oldUserName = ds.Tables(0).Rows(i).Item("username") txtPassword.Text = ds.Tables(0).Rows(i).Item("password") txtPassword2.Text = ds.Tables(0).Rows(i).Item("password") txtEmployeeCode.Text = ds.Tables(0).Rows(i).Item("employeecode") cmb_userType.SelectedItem = ds.Tables(0).Rows(i).Item("authentication") If ds.Tables(0).Rows(i).Item("active") = 1 Then cbActive.Checked = True Else cbActive.Checked = False End If End If End Sub Public Sub moveLast() If limit > -1 Then i = limit txtUsername.Text = ds.Tables(0).Rows(i).Item("username") oldUserName = ds.Tables(0).Rows(i).Item("username") txtPassword.Text = ds.Tables(0).Rows(i).Item("password") txtPassword2.Text = ds.Tables(0).Rows(i).Item("password") txtEmployeeCode.Text = ds.Tables(0).Rows(i).Item("employeecode") cmb_userType.SelectedItem = ds.Tables(0).Rows(i).Item("authentication") If ds.Tables(0).Rows(i).Item("active") = 1 Then cbActive.Checked = True Else cbActive.Checked = False End If Else clear() End If End Sub Public Sub add() clear() addMode = 1 editMode = 0 toAddMode() End Sub Public Sub edit() oldUserName = txtUserName.Text editMode = 1 addMode = 0 toEditMode() End Sub Public Sub save() Dim user As New User(txtUsername.Text) If addMode Or editMode Then If txtPassword.Text = txtPassword2.Text Then If addMode Then user.add(txtUsername.Text, txtPassword.Text, txtEmployeeCode.Text, cmb_userType.SelectedItem, cbActive.Checked) ElseIf editMode Then user.edit(txtUsername.Text, txtPassword.Text, txtEmployeeCode.Text, cmb_userType.SelectedItem, cbActive.Checked) End If fillDataSet() If ds.Tables(0).Rows.Count <> 0 Then oldUserName = txtUsername.Text trace(oldUserName) End If disableControls() addMode = 0 editMode = 0 toNormalMode() Else MessageBox.Show("Passwords do not match", "User", MessageBoxButtons.OK, MessageBoxIcon.Warning) End If End If End Sub Public Sub delete() If txtUserName.Text <> "" Then If MessageBox.Show("Are you sure you want to delete?", "System User", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes And txtUserName.Text <> "" Then Dim user As New User(txtUserName.Text) user.delete(txtUserName.Text) fillDataSet() moveFirst() End If End If End Sub Public Sub revert() If (editMode Or addMode) Then disableControls() clear() If oldUserName <> "" Then retrieve(oldUserName) End If toNormalMode() End If End Sub Public Sub find() txtUsername.Enabled = True txtUserName.Text = String.Empty txtPassword.Text = String.Empty cmb_userType.SelectedIndex = 0 cbActive.Visible = False btn_find.Visible = True toSearchMode() End Sub Private Sub retrieve(ByVal username As String) fillDataSet() trace(username) txtUsername.Enabled = False cbActive.Visible = True btn_find.Visible = False toNormalMode() End Sub Private Sub ts_new_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ts_new.Click add() End Sub Private Sub ts_edit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ts_edit.Click edit() End Sub Private Sub ts_delete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ts_delete.Click delete() End Sub Private Sub ts_find_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ts_find.Click find() End Sub Private Sub ts_save_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ts_save.Click save() End Sub Private Sub ts_revert_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ts_revert.Click revert() End Sub Private Sub btn_find_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_find.Click oldUserName = txtUsername.Text retrieve(oldUserName) End Sub Private Sub txtUsername_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtUsername.KeyUp If e.KeyCode = Keys.Enter Then oldUserName = txtUsername.Text retrieve(oldUserName) End If End Sub Private Sub ts_close_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Me.Close() End Sub Private Sub cbActive_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbActive.CheckedChanged End Sub End Class