Next chapter 41 Item Group

PROJECT SOURCE CODE

SPONSORED LINKS

Item Group

'******************************************************************

'******************************************************************

'** Author : Samee Ullah Siddiqui

'** Subject : Item Group Creation DialogBox

'** Date : Friday, August, 01, 2003

'** Modified : Saturday, August, 02, 2003

'******************************************************************

'******************************************************************

Dim ADDMode As Boolean

Dim EditMode As Boolean

Private Sub AddCmd_Click()

Dim ItemGroup, ItemGroupCode As String

Call SetControls(False)

ItemGroup = InputBox("Enter Item Group Name", "Item Group Entry", , Me.Left + Me.Width + 50, 1050)

If Trim(ItemGroup) = "" Then GoTo ExitLable

Dim IGRst As New ADODB.Recordset

IGRst.CursorLocation = adUseClient

Conn.BeginTrans

ItemGroupCode = GetNextCode()

IGRst.Open "ITEMGROUP", Conn, adOpenKeyset, adLockOptimistic, adCmdTable

With IGRst

.AddNew

!IGCode = ItemGroupCode

!IGDesc = StrConv(Trim(Left(ItemGroup, 50)), vbProperCase)

.Update

End With

Conn.CommitTrans

Call PopulateGroupList

GroupList.SetFocus

ExitLable:

Call SetControls(True)

End Sub

Private Sub ExitCmd_Click()

Unload Me

End Sub

Private Sub Form_KeyPress(KeyAscii As Integer)

If KeyAscii = vbKeyEscape Then Unload Me

End Sub

Private Sub Form_Load()

Call PopulateGroupList

End Sub

Private Sub PopulateGroupList()

'To populating all groups in list

Dim SQL As String

Dim rst As New ADODB.Recordset

rst.CursorLocation = adUseClient

SQL = "SELECT * FROM ITEMGROUP"

rst.Open SQL, Conn, adOpenForwardOnly, adLockReadOnly, adCmdText

GroupList.View = lvwReport

GroupList.ColumnHeaders(1).Width = 5151.41 'Item Group

GroupList.ColumnHeaders(2).Width = 0 'Item Group Code

GroupList.ListItems.Clear

Do Until rst.EOF

With GroupList.ListItems.Add(, , rst!IGDesc)

.ListSubItems.Add , , rst!IGCode

End With

rst.MoveNext

Loop

End Sub

Private Sub Form_Unload(Cancel As Integer)

On Error Resume Next

End Sub

Private Sub GroupList_AfterLabelEdit(Cancel As Integer, NewString As String)

On Error GoTo ErrLbl

Dim ItemGroupCode, SQL As String

Dim Index As Integer

If GroupList.SelectedItem Is Nothing Then Exit Sub

Index = GroupList.SelectedItem.Index

If Index = "0001" Then MsgBox "You Can't Alter Or Change This Group", vbCritical + vbDefaultButton1, App.Title: Cancel = True: GoTo EndLabel

If Trim(NewString) = "" Then

Cancel = True

MsgBox "Item Group Name cannot be blank.", vbCritical, "Editing aborted"

GoTo EndLabel

End If

Dim IGRst As New ADODB.Recordset

IGRst.CursorLocation = adUseClient

Conn.BeginTrans

ItemGroupCode = GroupList.SelectedItem.SubItems(1)

SQL = "SELECT * FROM ITEMGROUP WHERE IGCODE = '" & ItemGroupCode & "'"

IGRst.Open SQL, Conn, adOpenKeyset, adLockOptimistic, adCmdText

With IGRst

!IGDesc = StrConv(Trim(Left(NewString, 50)), vbProperCase)

.Update

End With

Conn.CommitTrans

Call PopulateGroupList

GroupList.ListItems(Index).Selected = True

EndLabel:

GroupList.SetFocus

Call SetControls(True)

Exit Sub

ErrLbl:

ErrHandler "IGFrm.AfterLableEdit"

End Sub

Private Sub GroupList_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)

With GroupList

.SortKey = ColumnHeader.Index - 1

.SortOrder = IIf(.SortOrder = lvwAscending, lvwDescending, lvwAscending)

.Sorted = True

End With

End Sub

Private Sub GroupList_KeyDown(KeyCode As Integer, Shift As Integer)

If KeyCode = vbKeyF2 Then

GroupList.StartLabelEdit

ElseIf KeyCode = vbKeyDelete Then

If GroupList.SelectedItem.Index = "0001" Then MsgBox "You Can't Alter Or Change This Group", vbCritical + vbDefaultButton1, App.Title: Exit Sub

If MsgBox("This will delete selected item [" & GroupList.SelectedItem.Text & "] from the list. Are you sure to do this.", vbQuestion + vbYesNo + vbDefaultButton2, "Deletion Confirmation") = vbNo Then Exit Sub

Dim rst As New ADODB.Recordset

rst.CursorLocation = adUseClient

Dim SQL As String

SQL = "SELECT COUNT(*) FROM ITEM WHERE IGCODE = '" & GroupList.SelectedItem.SubItems(1) & "'"

rst.Open SQL, Conn, adOpenForwardOnly, adLockReadOnly, adCmdText

If Not rst(0) > 0 Then

SQL = "DELETE FROM ITEMGROUP WHERE IGCODE = '" & GroupList.SelectedItem.SubItems(1) & "'"

Conn.BeginTrans

Conn.Execute SQL, , adCmdText

Conn.CommitTrans

Call PopulateGroupList

GroupList.SetFocus

Else

MsgBox "The Item Group you are trying to delete, could not be successful because Item of this group is available.", vbCritical, "Deletion aborted"

GroupList.SetFocus

End If

End If

End Sub

Private Sub SetControls(ByVal Status As Boolean)

AddCmd.Enabled = Status

ExitCmd.Enabled = Status

End Sub

Private Function GetNextCode() As String

Dim RS As New ADODB.Recordset

RS.Open "Select Max(IGCODE) From ITEMGROUP", Conn, adOpenDynamic, adLockOptimistic

If Not RS.EOF Then GetNextCode = GetProperCode(IIf(IsNull(RS(0)), "1", Mid(RS(0), 2) + 1), 4) Else GetNextCode = GetProperCode("1", 4)

End Function