VBcoders Guest



Don't have an account yet? Register
 


Forgot Password?



This is the code which u can not get from books easily. This code provides u understanding of Flex

by Gurjeet Singh Issar (1 Submission)
Category: Databases/Data Access/DAO/ADO
Compatability: VB 6.0
Difficulty: Unknown Difficulty
Originally Published: Thu 5th May 2005
Date Added: Mon 8th February 2021
Rating: (1 Votes)

This is the code which u can not get from books easily. This code provides u understanding of Flex Grid Control and How to use it.

API Declarations


Dim Mode As String 'Stores the current operation "add" or "edit"
Dim CON As Connection 'A Connection variable
Dim RS As Recordset 'A RecordSet variable


Rate This is the code which u can not get from books easily. This code provides u understanding of Flex



Private Sub CmdAddIns_Click()
On Error GoTo ErrHandler
Mode = "add"
MSFlexGrid1.Clear 'Clearing the data in the FlexGrid
MSFlexGrid1.FormatString = "ID      |Name                     "
MSFlexGrid1.Rows = 2 'One FixedRow + One Empty Row
MSFlexGrid1.SetFocus
Exit Sub

ErrHandler:
 MsgBox "An Error has Occured In The FlexChk() Procedure" & vbCr & "Report This Error To [email protected]" & vbCr & "Error Details :-" & vbCr & "Error Number : " & Err.Number & vbCr & "Error Description : " & Err.Description, vbCritical, "FlexGrid Example"
End Sub

Private Sub CmdSaveUpdate_Click()
On Error GoTo ErrHandler
Select Case Mode
Case "add"
 If FlexUpdate(MSFlexGrid1, RS) = True Then
  MsgBox "Record Saved Successfully", vbCritical, "FlexGrid Sample"
 End If
Case "edit"
 If FlexChk(MSFlexGrid1) = True Then
 'If Flex Grid is not empty then deleting current records and
 'updating the new records. However the FlexUpdate() Procedure
 'will check for empty cells, we need to call FlexChk(), because
 'we are going to delete the current records
  CON.Execute "Delete from Student"
  If FlexUpdate(MSFlexGrid1, RS) = True Then
   MsgBox "Record Modified Successfully", vbCritical, "FlexGrid Sample"
  End If
 Else
  MsgBox "Fill All Boxes", vbCritical, "FlexGrid Sample"
 End If
End Select
Call Form_Load
Exit Sub

ErrHandler:
 MsgBox "An Error has Occured In The CmdSaveUpdate_Click() Procedure" & vbCr & "Report This Error To [email protected]" & vbCr & "Error Details :-" & vbCr & "Error Number : " & Err.Number & vbCr & "Error Description : " & Err.Description, vbCritical, "FlexGrid Example"
End Sub

Private Sub CmdCancel_Click()
Call Form_Load 'canceling "add" or "edit" operation
End Sub

Private Sub CmdEditMod_Click()
On Error GoTo ErrHandler
Mode = "edit"
MSFlexGrid1.SetFocus
Exit Sub

ErrHandler:
 MsgBox "An Error has Occured In The CmdEditMod_Click() Procedure" & vbCr & "Report This Error To [email protected]" & vbCr & "Error Details :-" & vbCr & "Error Number : " & Err.Number & vbCr & "Error Description : " & Err.Description, vbCritical, "FlexGrid Example"
End Sub

Private Sub CmdExit_Click()
End
End Sub

Private Sub MSFlexGrid1_KeyPress(KeyAscii As Integer)
On Error GoTo ErrHandler
Select Case Mode
Case "add"
 Call GetKeysAdd(MSFlexGrid1, KeyAscii)
Case "edit"
 Call GetKeysEdit(MSFlexGrid1, KeyAscii)
End Select
Exit Sub

ErrHandler:
 MsgBox "An Error has Occured In The MSFlexgrid1_KeyPress() Procedure" & vbCr & "Report This Error To [email protected]" & vbCr & "Error Details :-" & vbCr & "Error Number : " & Err.Number & vbCr & "Error Description : " & Err.Description, vbCritical, "FlexGrid Example"
End Sub

Private Sub Form_Load()
On Error GoTo ErrHandler
Set CON = New Connection
CON.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\FlexGridSample.mdb;"
Set RS = New Recordset
RS.Open "Select ID,Name from Student", CON, adOpenStatic, adLockBatchOptimistic
Call AssignData(MSFlexGrid1, RS)
Mode = ""
Exit Sub

ErrHandler:
 MsgBox "An Error has Occured In The Form_Load() Procedure" & vbCr & "Report This Error To [email protected]" & vbCr & "Error Details :-" & vbCr & "Error Number : " & Err.Number & vbCr & "Error Description : " & Err.Description, vbCritical, "FlexGrid Example"
End Sub

Public Sub GetKeysAdd(argFlexGrid As MSFlexGrid, KeyAscii As Integer)
'This Procedure is used to display the pressed key into FlexGrid in Addition Mode
'so that when you press Enter Key in the last row then one row will be added.
'When you press the BackSpace Key in an empty Row then a Row will be Removed.
On Error GoTo ErrHandler
Dim i As Long
If KeyAscii = 13 Then 'if Enter Key then...
 If argFlexGrid.Cols <> (argFlexGrid.Col + 1) Then 'If current column is not last column...
  argFlexGrid.Col = argFlexGrid.Col + 1 'increment col by 1
 Else 'If current column is the last column then...
  argFlexGrid.Rows = argFlexGrid.Rows + 1 'add a row to the FlexGrid...
  argFlexGrid.Col = 0 'set the current column to first column - (0)...
  argFlexGrid.Row = argFlexGrid.Row + 1 'set the current row to last row...
  argFlexGrid.SetFocus 'set the focus.
 End If
 Exit Sub
End If
If KeyAscii = 8 Then 'If BackSpace Key then...
 If Len(Trim(argFlexGrid.Text)) <> 0 Then 'If current cell is not empty then...
  argFlexGrid.Text = Left(argFlexGrid.Text, (Len(argFlexGrid.Text) - 1)) 'Removing a character from the right side of the FlexGrid cell's text
 ElseIf argFlexGrid.Rows > 2 Then 'If FlexGrid has more than 2 Rows including the FixedRow then...
  For i = 0 To argFlexGrid.Cols - 1 'Checking that the current row is empty or not...
   If Len(Trim(argFlexGrid.TextMatrix(argFlexGrid.Row, i))) = 0 Then 'Checking for Empty cell in the current row...
    If argFlexGrid.Col <> argFlexGrid.Cols - 1 Then 'Checking that if we reached the last column...
     argFlexGrid.Col = argFlexGrid.Col + 1 'goto next column...
    Else 'If current columnn is the last column then...
     argFlexGrid.Rows = argFlexGrid.Rows - 1 'Remove a Row.
     Exit Sub
    End If
   End If
  Next
 End If
Else 'If Not BackSpace key then...
 argFlexGrid.Text = argFlexGrid.Text + Chr(KeyAscii) 'Append the pressed character to the right.
End If
Exit Sub

ErrHandler:
 MsgBox "An Error has Occured In The GETKEYSAdd() Procedure" & vbCr & "Report This Error To [email protected]" & vbCr & "Error Details :-" & vbCr & "Error Number : " & Err.Number & vbCr & "Error Description : " & Err.Description, vbCritical, "FlexGrid Example"
End Sub

Public Sub GetKeysEdit(argFlexGrid As MSFlexGrid, KeyAscii As Integer)
'This Procedure is used to display the pressed key into FlexGrid in Addition Mode
'that is you cannot add new rows as you do in GETKEYSAdd().
On Error GoTo ErrHandler
Dim i As Integer
If KeyAscii = 13 Or KeyAscii = 9 Then Exit Sub 'If Enter Key or Tab Key then Exit Sub.
If KeyAscii = 8 Then 'If BackSpace key then...
 If Len(Trim(argFlexGrid.Text)) <> 0 Then 'If current cell is not empty then...
  argFlexGrid.Text = Left(argFlexGrid.Text, (Len(argFlexGrid.Text) - 1)) 'Removing a character from the right side of the FlexGrid cell's text
 End If
Else
 argFlexGrid.Text = argFlexGrid.Text + Chr(KeyAscii) 'Append the pressed character to the right.
End If
Exit Sub

ErrHandler:
 MsgBox "An Error has Occured In The GETKEYSEdit() Procedure" & vbCr & "Report This Error To [email protected]" & vbCr & "Error Details :-" & vbCr & "Error Number : " & Err.Number & vbCr & "Error Description : " & Err.Description, vbCritical, "FlexGrid Example"
End Sub

Public Sub AssignData(argFlexGrid As MSFlexGrid, argRS As Recordset)
'This procedure is used to Assign the Data in the given recordset
'to the given FlexGrid
On Error GoTo ErrHandler
Dim FormatString As String 'Stores the FormatString
Dim i As Long 'Loop Variable
Dim j As Long 'Loop Variable
Dim MaxFldValLen As Long 'Stores the Maximum Field Value Length, Used for Automatic Resizing


'Moving The Recordset to the First
argRS.MoveFirst

'Checking for Empty Recordset
If argRS.RecordCount = 0 Or IsEmpty(argRS) Then Exit Sub

'setting the number of rows
'the total rows of FlexGrid includes the FixedRows also
'So argFlexGrid.Rows=No. Of Records->(argRs.RecordCount) + argrs.FixedRows->(1)
argFlexGrid.Rows = argRS.RecordCount + 1

'Setting the current row
argFlexGrid.Row = 1

'checking for FixedCols
'if FixedCols is 1 then S.No. will be automatically generated
'if FixedCols is 0 then S.No. will Not be generated
If argFlexGrid.FixedCols = 1 Then

'If FlexGrid's FixedCols is 1 then data should be assigned from the second column is that argFlexGrid.col=1
  argFlexGrid.Col = 1

'setting the number of columns
'the total Cols of FlexGrid includes the FixedCols also
'So argFlexGrid.Cols=No. Of Fields->(argRs.Fields.Count) + argrs.FixedCols->(1)
  argFlexGrid.Cols = argRS.Fields.Count + 1
  
  
  For i = 1 To argRS.RecordCount 'this loop is for rows
    
    For j = 1 To argRS.Fields.Count 'this loop is for Columns
      argFlexGrid.TextMatrix(i, j) = argRS(j - 1)
    Next
    
    argFlexGrid.TextMatrix(i, 0) = i 'i holds the S.No.
    argRS.MoveNext
  Next

  argRS.MoveFirst
  FormatString = "S.No."

'The Following loop is used for resizing the FlexGrid Columns using the FormatString Property
'the MaxFldValLen variable stores the maximum length of a field's value
'and this variable is used to add spaces in the FormatString
'Note: This Resizing Is Not Very Accurate !!!

  For i = 0 To argRS.Fields.Count - 1 'this loop is for each Field in the argRS
  MaxFldValLen = 0
    
    For j = 0 To argRS.RecordCount - 1 'this loop is for each Record in the argRS
      If MaxFldValLen <= Len(argRS(i)) Then
        MaxFldValLen = Len(argRS(i))
      End If
      
      argRS.MoveNext
    Next
    
    argRS.MoveFirst
  
    If Len(argRS(i).Name) > MaxFldValLen Then
  'if length of argRS(i).Name>MaxFldValLen(the maximum length of the field's value in a Record) then,
  'add some spaces to the FormatString with the Name of the field, here I added 5 You can change it.
      FormatString = FormatString & "|" & argRS(i).Name & Space(5)
    Else
  'if MaxFldValLen(the maximum length of the field's value in a Record)
  'is greater than the length of argRS(i).Name then,
  'add the excess spaces is that Space(MaxFldValLen - Len(argRS(i).Name) + 15),
  'the value 15 should not be changed for exact output
      FormatString = FormatString & "|" & argRS(i).Name & Space(MaxFldValLen - Len(argRS(i).Name) + 15)
    End If
  
  Next

Else 'if argFlexGrid.FixedCols=0 then - "S.No." will Not be generated

'If FlexGrid's FixedCols is 0 then data should be assigned from the First column is that argFlexGrid.col=0
  argFlexGrid.Col = 0
  
'setting the number of columns
'the total Cols of FlexGrid includes the FixedCols also
'So argFlexGrid.Cols=No. Of Fields->(argRs.Fields.Count) + argrs.FixedCols->(1)
'if FixedCols=0 then argFlexGrid.Cols = argRS.Fields.Count
  argFlexGrid.Cols = argRS.Fields.Count
  
  For i = 1 To argRS.RecordCount 'this loop is for rows
  
    For j = 0 To argRS.Fields.Count - 1 'this loop is for Columns
      argFlexGrid.TextMatrix(i, j) = argRS(j)
    Next
    
    argRS.MoveNext
  Next
  
  argRS.MoveFirst
  
'The Following loop is used for resizing the FlexGrid Columns using the FormatString Property
'the MaxFldValLen variable stores the maximum length of a field's value
'and this variable is used to add spaces in the FormatString
'Note: This Resizing Is Not Very Accurate !!!
  
  For i = 0 To argRS.Fields.Count - 1 'this loop is for each Field in the argRS
  MaxFldValLen = 0
    
    For j = 0 To argRS.RecordCount - 1 'this loop is for each Record in the argRS
      
      If MaxFldValLen <= Len(argRS(i)) Then
        MaxFldValLen = Len(argRS(i))
      End If
      
      argRS.MoveNext
    Next
    
    argRS.MoveFirst
    
    If Len(argRS(i).Name) > MaxFldValLen Then
'if length of argRS(i).Name>MaxFldValLen(the maximum length of the field's value in a Record) then,
'add some spaces to the FormatString with the Name of the field, here I added 5 You can change it.
      If FormatString = "" Then 'if this loop runs for first time then FormatString will be empty
        FormatString = argRS(i).Name & Space(5)
      Else
        FormatString = FormatString & "|" & argRS(i).Name & Space(5)
      End If

    Else
'if MaxFldValLen(the maximum length of the field's value in a Record)
'is greater than the length of argRS(i).Name then,
'add the excess spaces is that Space(MaxFldValLen - Len(argRS(i).Name) + 15),
'the value 15 should not be changed for exact output
      If FormatString = "" Then 'if this loop runs for first time then FormatString will be empty
        FormatString = argRS(i).Name & Space(MaxFldValLen - Len(argRS(i).Name) + 15)
      Else
        FormatString = FormatString & "|" & argRS(i).Name & Space(MaxFldValLen - Len(argRS(i).Name) + 15)
      End If
    End If
    
  Next
  
End If

'Finally assign the FormatString
argFlexGrid.FormatString = FormatString
Exit Sub

ErrHandler:
 MsgBox "An Error has Occured In The AssignData() Procedure" & vbCr & "Report This Error To [email protected]" & vbCr & "Error Details :-" & vbCr & "Error Number : " & Err.Number & vbCr & "Error Description : " & Err.Description, vbYesNo + vbCritical, "FlexGrid Example"
End Sub
Public Function FlexUpdate(argFlexGrid As MSFlexGrid, argRS As Recordset) As Boolean
'This Procedure will Save the Data in the FlexGrid to the given
'Recordset's Database
On Error GoTo ErrHandler
Dim i As Long, j As Long
If argFlexGrid.Rows <= 1 Then Exit Function 'If there is no Row or Only FixedRow.
If FlexChk(argFlexGrid) = False Then 'Checking for empty cells by calling FlexChk().
 FlexUpdate = False
 Exit Function
End If
argFlexGrid.Row = 0 'setting current row
argFlexGrid.Col = 0 'setting current col
argRS.AddNew
For i = 0 To (argFlexGrid.Rows - 1) 'This loop saves data to the table.
 argFlexGrid.Row = argFlexGrid.Row + 1
 argFlexGrid.Col = 0
 For j = 0 To argRS.Fields.Count - 1
  argRS(j) = Trim(argFlexGrid.Text)
  If argFlexGrid.Col + 1 <> argFlexGrid.Cols Then
   argFlexGrid.Col = argFlexGrid.Col + 1
  End If
 Next
 argRS.UpdateBatch adAffectAllChapters
 If argFlexGrid.Rows = (argFlexGrid.Row + 1) Then GoTo FIN
 argRS.AddNew
Next

FIN:
argRS.UpdateBatch adAffectAllChapters
FlexUpdate = True
Exit Function

ErrHandler:
 MsgBox "An Error has Occured In The FlexUpdate() Procedure" & vbCr & "Report This Error To [email protected]" & vbCr & "Error Details :-" & vbCr & "Error Number : " & Err.Number & vbCr & "Error Description : " & Err.Description, vbCritical, "FlexGrid Example"
End Function

Public Function FlexChk(argFlexGrid As MSFlexGrid) As Boolean
'This Procedure will check the given flexgrid for empty cells
On Error GoTo ErrHandler
Dim ig, jg, ercnt As Long
Dim flg As Boolean

For jg = 0 To (argFlexGrid.Rows - 1)
 For ig = 0 To (argFlexGrid.Cols - 1)
  If Len(Trim(argFlexGrid.TextMatrix(jg, ig))) = 0 Then
   flg = True
   GoTo EMTY
  Else
   flg = False
  End If
 Next
Next

EMTY:
 If flg = True Then
  FlexChk = False
 Else
  FlexChk = True
 End If

Exit Function

ErrHandler:
 MsgBox "An Error has Occured In The FlexChk() Procedure" & vbCr & "Report This Error To [email protected]" & vbCr & "Error Details :-" & vbCr & "Error Number : " & Err.Number & vbCr & "Error Description : " & Err.Description, vbCritical, "FlexGrid Example"
End Function


Download this snippet    Add to My Saved Code

This is the code which u can not get from books easily. This code provides u understanding of Flex Comments

No comments have been posted about This is the code which u can not get from books easily. This code provides u understanding of Flex . Why not be the first to post a comment about This is the code which u can not get from books easily. This code provides u understanding of Flex .

Post your comment

Subject:
Message:
0/1000 characters