vb fun in c#

Upload: raghavendra-gowda

Post on 15-Oct-2015

27 views

Category:

Documents


1 download

TRANSCRIPT

VB C#

UBound() = yourArray.GetUpperBound(0) or yourArray.Length for one-dimesional arraysLBound() = yourArray.GetLowerBound(0)IsNothing() = Object.ReferenceEquals(obj,null)Chr() = Convert.ToChar()Len() = "string".LengthUCase() = "string".ToUpper()LCase() = "string".ToLower()Left() = "string".Substring(0, length)Right() = "string".Substring("string".Length - desiredLength)RTrim() = "string".TrimEnd()LTrim() = "string".TrimStart()Trim() = "string".Trim()Mid() = "string".Substring(start, length)Replace() = "string".Replace()Split() = "string".Split()Join() = String.Join()MsgBox() = MessageBox.Show()IIF() = (boolean_condition ? "true" : "false")

VBScript to C# - Equivalent string functionsA Cheat Sheet containing the VBScript string functions and their equivalent methods in C#.VBScriptDescriptionC# Equivalent

InStrReturns the position of the first occurrence of one string within another. The search begins at the first character of the stringIndexOf()

InStrRevReturns the position of the first occurrence of one string within another. The search begins at the last character of the string-

LCaseConverts a specified string to lowercaseToLower()

LeftReturns a specified number of characters from the left side of a stringSubString()

LenReturns the number of characters in a stringLength()

LTrimRemoves spaces on the left side of a stringTrimStart()

RTrimRemoves spaces on the right side of a stringTrimEnd()

TrimRemoves spaces on both the left and the right side of a stringTrim()

MidReturns a specified number of characters from a stringSubString()

ReplaceReplaces a specified part of a string with another string a specified number of timesReplace()

RightReturns a specified number of characters from the right side of a stringSubString()

SpaceReturns a string that consists of a specified number of spacesPadLeft(), PadRight()

StrCompCompares two strings and returns a value that represents the result of the comparisonCompare(), Equals()

StringReturns a string that contains a repeating character of a specified length-

StrReverseReverses a string-

UCaseConverts a specified string to uppercaseToUpper()

Top of Form12

Dim new_flag As BooleanDim no_recs As IntegerDim clsobj As clsProdDim User_Value As ByteDim curr_col As IntegerDim isAscending As BooleanDim Screen_Id As Long 'It is used to get the Value of ViewRights.SlNoPrivate Sub cmdExit_Click() Unload MeEnd Sub

Private Sub cmdView_Click() msflex.rows = 1 Call load_dataEnd Sub

Private Sub cmdUpdate_Click()

If MsgBox("Are You Sure To Save?", vbYesNo + vbQuestion, mdiSSI.msgTxt) = vbYes Then Call save_record msflex.rows = 1 Call load_data txtEdit.Visible = False MsgBox "Record Saved .", vbInformation, mdiSSI.msgTxtEnd IfEnd Sub

Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)' If KeyCode = vbKeyF1 Then' Call clsobj.show_help("TransInvStock.html")' ElseIf KeyCode = vbKeyF5 Then' If cmbStore.ListIndex = 0 Then' If msflex.rows > 1 And msflex.Row > 0 Then' Me.MousePointer = vbHourglass' frmStockDetails.Left = 3500' frmStockDetails.Top = 3500' frmStockDetails.Show vbModal' Me.MousePointer = 99' Else' MsgBox "You have to select an Item from the displayed list to get Details!!!", vbInformation, mdiSSI.msgTxt' End If' Else' MsgBox "Store option should be ALL in order to view Details!!!", vbInformation, mdiSSI.msgTxt' End If' End IfEnd SubPrivate Sub Form_Load()On Error Resume Next Dim main As Integer Me.MousePointer = vbHourglass Set clsobj = New clsProd 'to get user rights If IsCurrYr = False Then User_Value = 4 clsobj.Get_Connection_mdi Else clsobj.Get_Connection' User_Value = clsobj.Retrieve_Id("select mnustock from UserRights Where UserId=" & whoami) End If 'To get Screen Id' Screen_Id = clsobj.Retrieve_Id("Select SlNo from ViewRights Where frmname='" & Replace(Me.namE, "'", "''") & "'") '1' Call clsobj.Register_User_Log(Screen_Id, 1) '1 refers to user_Value as Read Only (Which manually set by Us) Call init_msflex curr_col = 1 load_lstFieldsValues msflex.AllowUserResizing = flexResizeColumns Me.MousePointer = vbDefault msflex.rows = 1End SubPrivate Sub Form_Unload(Cancel As Integer) Call clsobj.UnRegister_User_Log(Screen_Id) clsobj.Leave_Connection Set clsobj = NothingEnd SubPrivate Sub init_msflex() 'msflex.FormatString = " Sl.No |Item Code / Part No. | Qty After Reduction | Qty On Hand | Current Value | Value before Alteration" ''0 1 2 3 4 5 6 7 8 9 msflex.FormatString = " Sl.No | CustomerName | Inv.No. | Inv.Date. | Invoice Value | OverDueDays | C-FormRefNO | C-FormAmt | ReMarks | C-FormRefDate " msflex.WordWrap = True msflex.RowHeight(0) = 600 For i = 0 To 9' Call CellColor(0, i, vbWhite, vbRed) msflex.Row = 0 msflex.Col = i msflex.CellFontBold = True Next i' msflex.ColWidth(5) = 0' msflex.ColWidth(4) = 0End SubPrivate Sub CellColor(ByVal ro As Integer, ByVal co As Integer, ByVal bg As ColorConstants, ByVal fg As ColorConstants) msflex.Row = ro msflex.Col = co msflex.CellBackColor = bg msflex.CellForeColor = fgEnd SubPrivate Sub load_data()Dim i As IntegerDim tmpThisSession As Long Dim tmpdays As Integer Dim tmphrs As Long Dim tmpmins As Long Dim tmpCalc As Long Dim DispStr As String Dim tmpyear As Long Select Case lstFields.ListIndex Case 0 'this is called from Manufacturing msflex.FormatString = " Sl.No | CustomerName | Inv.No. | Inv.Date. | Invoice Value | OverDueDays " '''| C-FormRefNO | C-FormAmt | ReMarks | C-FormRefDate " clsobj.open_temp_rec ("Select * from DcInv where InvNo is not null and invno 'Nil' and IsFormC=true and CformValidationtrue and dcinv=false and invcancl=false order by invno") With clsobj.tmp_Rec If Not .EOF Then .MoveFirst While Not .EOF msflex.rows = msflex.rows + 1 msflex.Row = msflex.rows - 1 msflex.TextMatrix(msflex.Row, 0) = msflex.rows - 1 Dim CustName As String CustName = clsobj.Retrieve_Name("select Custname from customer where custid=" & .Fields("Custid") & " ") msflex.TextMatrix(msflex.Row, 1) = CustName msflex.TextMatrix(msflex.Row, 2) = .Fields("InvNo") msflex.TextMatrix(msflex.Row, 3) = .Fields("InvDate") msflex.TextMatrix(msflex.Row, 4) = .Fields("TotVal")' msflex.TextMatrix(msflex.Row, 5) = .Fields("ProdQty") Dim prsdate As String prsdate = Now tmpThisSession = DateDiff("n", .Fields("InvDate"), Now) ' If tmpTotSEEDMins >= 9999999 Then' Call update_rec("Update License set TotSEEDtime=0")' End If tmpCalc = Int(tmpThisSession / 60) 'this will give no. of hours of total SEED usage 525600 If tmpCalc >= 24 Then tmpdays = Int(tmpCalc / 24) 'this will give no. of days of total SEED usage DispStr = tmpdays & " Day(s) " tmpCalc = tmpCalc Mod 24 'this will give remaining no. of hours of SEED usage (after days calculation) DispStr = DispStr & tmpCalc & " Hour(s) " 'the follg. will 'overflow' run time error 'tmpmins = tmpTotSEEDMins - ((tmpdays * 24 * 60) + (tmpCalc * 60)) 'the error is because if result crosses beyond integer value 'check this in immediate window ? 57 * 24 * 60 (where 57 is the tmpdays) 'so the resolution is with precision (instead of 60 we made 60.0 or 60#) then converting to clng tmpmins = tmpThisSession - (CLng(tmpdays * 24 * 60#) + (tmpCalc * 60)) 'if we type 60.0, compiler assumes 60# DispStr = DispStr & tmpmins & " Minute(s) " Else DispStr = tmpCalc & " Hour(s) " DispStr = DispStr & Format(((tmpThisSession / 60) - tmpCalc) * 60, "00") & " Minute(s) " End If msflex.TextMatrix(msflex.Row, 5) = DispStr .MoveNext Wend Else MsgBox "Details Not found..", vbCritical, mdiSSI.msgTxt End If End With clsobj.close_temp_rec Case 1 'this is called from Manufacturing dc cum invoice msflex.FormatString = " Sl.No | CustomerName | Inv.No. | Inv.Date. | Invoice Value | OverDueDays " '''| C-FormRefNO | C-FormAmt | ReMarks | C-FormRefDate " clsobj.open_temp_rec ("Select * from DcInv where InvNo is not null and invno 'Nil' and IsFormC=true and CformValidationtrue and dcinv=true and invcancl=false order by invno") ''("Select * from DcInv where InvNo is not null and invno 'Nil' and IsFormC=true and CformValidationtrue and dcinv=true and invcancl=false order by invno") With clsobj.tmp_Rec If Not .EOF Then .MoveFirst While Not .EOF msflex.rows = msflex.rows + 1 msflex.Row = msflex.rows - 1 msflex.TextMatrix(msflex.Row, 0) = msflex.rows - 1 Dim CustmrName As String CustmrName = clsobj.Retrieve_Name("select Custname from customer where custid=" & .Fields("Custid") & " ") msflex.TextMatrix(msflex.Row, 1) = CustmrName msflex.TextMatrix(msflex.Row, 2) = .Fields("InvNo") msflex.TextMatrix(msflex.Row, 3) = .Fields("InvDate") msflex.TextMatrix(msflex.Row, 4) = .Fields("TotVal")' msflex.TextMatrix(msflex.Row, 5) = .Fields("ProdQty") Dim prsntdate As String prsntdate = Now tmpThisSession = DateDiff("n", .Fields("InvDate"), Now) ' If tmpTotSEEDMins >= 9999999 Then' Call update_rec("Update License set TotSEEDtime=0")' End If tmpCalc = Int(tmpThisSession / 60) 'this will give no. of hours of total SEED usage 525600 If tmpCalc >= 24 Then tmpdays = Int(tmpCalc / 24) 'this will give no. of days of total SEED usage DispStr = tmpdays & " Day(s) " tmpCalc = tmpCalc Mod 24 'this will give remaining no. of hours of SEED usage (after days calculation) DispStr = DispStr & tmpCalc & " Hour(s) " 'the follg. will 'overflow' run time error 'tmpmins = tmpTotSEEDMins - ((tmpdays * 24 * 60) + (tmpCalc * 60)) 'the error is because if result crosses beyond integer value 'check this in immediate window ? 57 * 24 * 60 (where 57 is the tmpdays) 'so the resolution is with precision (instead of 60 we made 60.0 or 60#) then converting to clng tmpmins = tmpThisSession - (CLng(tmpdays * 24 * 60#) + (tmpCalc * 60)) 'if we type 60.0, compiler assumes 60# DispStr = DispStr & tmpmins & " Minute(s) " Else DispStr = tmpCalc & " Hour(s) " DispStr = DispStr & Format(((tmpThisSession / 60) - tmpCalc) * 60, "00") & " Minute(s) " End If msflex.TextMatrix(msflex.Row, 5) = DispStr .MoveNext Wend Else MsgBox "Details Not found..", vbCritical, mdiSSI.msgTxt End If End With clsobj.close_temp_rec Case 2 ''''from purchase form msflex.FormatString = " Sl.No | VendorName | Inv.No. | Inv.Date. | Invoice Value | OverDueDays " '''| C-FormRefNO | C-FormAmt | ReMarks | C-FormRefDate " clsobj.open_temp_rec ("Select * from Purchase where InvNo is not null and invno 'Nil' and VATrCST=false and IsFormC=True order by invno") With clsobj.tmp_Rec If Not .EOF Then .MoveFirst While Not .EOF msflex.rows = msflex.rows + 1 msflex.Row = msflex.rows - 1 msflex.TextMatrix(msflex.Row, 0) = msflex.rows - 1 Dim VendName As String VendName = clsobj.Retrieve_Name("select Vendorname from Vendor where VendorCode=" & .Fields("VendorCode") & " ") msflex.TextMatrix(msflex.Row, 1) = VendName msflex.TextMatrix(msflex.Row, 2) = .Fields("InvNo") msflex.TextMatrix(msflex.Row, 3) = .Fields("InvDate") msflex.TextMatrix(msflex.Row, 4) = .Fields("TotVal")' msflex.TextMatrix(msflex.Row, 5) = .Fields("ProdQty") Dim prsentdate As String prsentdate = Now tmpThisSession = DateDiff("n", .Fields("InvDate"), Now) ' If tmpTotSEEDMins >= 9999999 Then' Call update_rec("Update License set TotSEEDtime=0")' End If tmpCalc = Int(tmpThisSession / 60) 'this will give no. of hours of total SEED usage 525600 If tmpCalc >= 24 Then tmpdays = Int(tmpCalc / 24) 'this will give no. of days of total SEED usage DispStr = tmpdays & " Day(s) " tmpCalc = tmpCalc Mod 24 'this will give remaining no. of hours of SEED usage (after days calculation) DispStr = DispStr & tmpCalc & " Hour(s) " 'the follg. will 'overflow' run time error 'tmpmins = tmpTotSEEDMins - ((tmpdays * 24 * 60) + (tmpCalc * 60)) 'the error is because if result crosses beyond integer value 'check this in immediate window ? 57 * 24 * 60 (where 57 is the tmpdays) 'so the resolution is with precision (instead of 60 we made 60.0 or 60#) then converting to clng tmpmins = tmpThisSession - (CLng(tmpdays * 24 * 60#) + (tmpCalc * 60)) 'if we type 60.0, compiler assumes 60# DispStr = DispStr & tmpmins & " Minute(s) " Else DispStr = tmpCalc & " Hour(s) " DispStr = DispStr & Format(((tmpThisSession / 60) - tmpCalc) * 60, "00") & " Minute(s) " End If msflex.TextMatrix(msflex.Row, 5) = DispStr .MoveNext Wend Else MsgBox "Details Not found..", vbCritical, mdiSSI.msgTxt End If End With clsobj.close_temp_rec End Select

End Sub

Private Sub cmdPrint_Click() Dim clsxl As New clsExcelPrint Dim strexcelpassword As String

If msflex.rows < 2 Then MsgBox "No data to Print...", vbExclamation, mdiSSI.msgTxt Exit Sub Else On Error GoTo PRINTERRR Me.MousePointer = vbHourglass clsxl.print_preview_XL msflex, False, "C-Form Pending statement " clsxl.oexcel.Visible = True clsxl.oexcel.activeworkbook.printpreview Me.MousePointer = vbDefault End If Set clsxl = Nothing Exit SubPRINTERRR: Me.MousePointer = vbDefault MsgBox "Printer Error !!!", vbExclamation, mdiSSI.msgTxtEnd SubPrivate Sub load_lstFieldsValues()' lstTopics.AddItem "MFG. & LABOUR WORK" lstFields.AddItem "MANUFACTURING" lstFields.AddItem "MFG DC CUM INVOICE"' lstTopics.AddItem "SUB CONTRACT" lstFields.AddItem "PURCHASE"End Sub

Private Sub lstFields_Click()

If lstFields.ListIndex > 0 Then msflex.ColWidth(0) = 0 Else msflex.ColWidth(0) = 1750 End If msflex.rows = 1 Call load_data txtEdit.Visible = FalseEnd Sub

Private Sub msflex_Click()If msflex.rows 1 Then

Select Case msflex.Col Case 6, 7, 8 Call placeit(msflex.Row, msflex.Col) Case Else Call placeit(msflex.Row, 6) End Select' If msflex.Col > 5 Then ' Call placeit(msflex.Row, msflex.Col)' Call placeit(msflex.Row, 6)' End IfEnd IfEnd SubPrivate Sub placeit(ByVal X As Integer, ByVal Y As Integer) Dim tmpId As Long Dim tmpUnit As Double Dim ItmId As Long msflex.Row = X msflex.Col = Y txtEdit.Move msflex.CellLeft + msflex.Left, msflex.CellTop + msflex.Top, msflex.CellWidth, msflex.CellHeight If Y = 6 Then txtEdit.MaxLength = 100 ElseIf Y = 7 Then 'if cursor got focus on 'particulars' column in msflex txtEdit.MaxLength = 100 ElseIf Y = 8 Then txtEdit.MaxLength = 100 End If txtEdit.Text = msflex.TextMatrix(X, Y) txtEdit.Visible = True txtEdit.SetFocusEnd Sub

Private Sub txtEdit_Change() Dim tmp As Long On Error GoTo Last msflex.TextMatrix(msflex.Row, msflex.Col) = txtEdit.Text If msflex.Col = 7 Then msflex.TextMatrix(msflex.Row, 9) = Now End If Exit SubLast: On Error Resume Next Call clsobj.er_hnd(Err.Description & " " & Err.Number & " " & Me.namE & "-" & Me.ActiveControl.namE, Now)End Sub

Private Sub txtEdit_KeyDown(KeyCode As Integer, Shift As Integer)If KeyCode = 13 Then key_used = True Select Case msflex.Col Case 6 'column 3 index 2 'ItemCode' If msflex.TextMatrix(msflex.Row, 6) "" Then msflex.Col = msflex.Col + 1 Call placeit(msflex.Row, msflex.Col)' End If Case 7 'UOM' If msflex.TextMatrix(msflex.Row, 2) "" Then msflex.Col = msflex.Col + 1 Call placeit(msflex.Row, msflex.Col)' End If' Case 8 'Qty'' If Val(msflex.TextMatrix(msflex.Row, 3)) 0 Then' msflex.Col = msflex.Col + 1' Call placeit(msflex.Row, msflex.Col)'' End If Case 8 If msflex.Row < msflex.rows - 1 Then msflex.Row = msflex.Row + 1 msflex.Col = 6 Call placeit(msflex.Row, msflex.Col) Else' If Trim(msflex.TextMatrix(msflex.Row, 1)) "" And Trim(msflex.TextMatrix(msflex.Row, 2)) "" And Val(msflex.TextMatrix(msflex.Row, 3)) 0 Then msflex.rows = msflex.rows + 1 'to write the slNo and move the cursor to new row Call placeit(msflex.rows - 1, 6) msflex.TextMatrix(msflex.Row, 0) = msflex.TextMatrix(msflex.Row - 1, 0) + 1' End If End If' End If End Select End IfEnd SubPrivate Sub txtEdit_KeyPress(KeyAscii As Integer) If msflex.Col = 6 Or msflex.Col = 7 Then If KeyAscii > 47 And KeyAscii < 58 Or KeyAscii = 8 Or KeyAscii = 46 Then If InStr(1, txtEdit.Text, ".") > 0 And KeyAscii = 46 Then KeyAscii = 0 End If Else KeyAscii = 0 End If End IfEnd Sub

Private Sub save_record() Dim i As Integer, cattid As Integer Dim ItemId As Long Select Case lstFields.ListIndex Case 0 'this is called from Manufacturing For i = 1 To msflex.rows - 1 clsobj.open_temp_rec ("Select * from DcInv where InvNo is not null and invno 'Nil' and dcinv=False and invno= '" & msflex.TextMatrix(i, 2) & "' order by invno") With clsobj.tmp_Rec If Not .EOF Then .Fields("CformrefNo") = msflex.TextMatrix(i, 6) If msflex.TextMatrix(i, 9) = "" Then .Fields("CformRefDate") = "" Else .Fields("CformRefDate") = msflex.TextMatrix(i, 9) End If 'the ItemCode in the msflex is stored in the Item table and while displaying the record it is retrived withrespect to ItemId .Fields("CformAmt") = Val(msflex.TextMatrix(i, 7)) .Fields("CformRemarks") = msflex.TextMatrix(i, 8) If (.Fields("CformrefNo")) "" Or .Fields("CformAmt") > 0 Then .Fields("CformValidation") = True End If .Update End If End With clsobj.close_temp_rec Next i Case 1 'this is called from Manufacturing dc cum invoice For i = 1 To msflex.rows - 1 clsobj.open_temp_rec ("Select * from DcInv where InvNo is not null and invno 'Nil' and dcinv=True and invno= '" & msflex.TextMatrix(i, 2) & "' order by invno") With clsobj.tmp_Rec If Not .EOF Then .Fields("CformrefNo") = msflex.TextMatrix(i, 6) If msflex.TextMatrix(i, 9) = "" Then .Fields("CformRefDate") = "" Else .Fields("CformRefDate") = msflex.TextMatrix(i, 9) End If 'the ItemCode in the msflex is stored in the Item table and while displaying the record it is retrived withrespect to ItemId .Fields("CformAmt") = Val(msflex.TextMatrix(i, 7)) .Fields("CformRemarks") = msflex.TextMatrix(i, 8) If (.Fields("CformrefNo")) "" Or .Fields("CformAmt") > 0 Then .Fields("CformValidation") = True End If .Update End If End With clsobj.close_temp_rec Next i Case 2 For i = 1 To msflex.rows - 1 clsobj.open_temp_rec ("Select * from Purchase where InvNo is not null and invno 'Nil' and invno= '" & msflex.TextMatrix(i, 2) & "' order by invno") With clsobj.tmp_Rec If Not .EOF Then .Fields("CformrefNo") = msflex.TextMatrix(i, 6) If msflex.TextMatrix(i, 9) = "" Then .Fields("CformRefDate") = "" Else .Fields("CformRefDate") = msflex.TextMatrix(i, 9) End If 'the ItemCode in the msflex is stored in the Item table and while displaying the record it is retrived withrespect to ItemId .Fields("CformAmt") = Val(msflex.TextMatrix(i, 7)) .Fields("CformRemarks") = msflex.TextMatrix(i, 8) If (.Fields("CformrefNo")) "" Or .Fields("CformAmt") > 0 Then .Fields("CformValidation") = True End If .Update End If End With clsobj.close_temp_rec Next i End Select End Sub

'**************************************************************************************************************' This file is provided as part of the Bargavi Solutions -'' THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT' WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,' INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES' OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR' PURPOSE.'' Copyright (C) 2003-04 Bargavi Solutions, All rights reserved' Purpose: Holds global Procedures and Functions for Daily Production System''**************************************************************************************************************Public dbconnection As ADODB.ConnectionPublic dbrec As ADODB.RecordsetPublic tmp_Rec As ADODB.RecordsetPublic tmp_Rec2 As ADODB.RecordsetPublic tmp_Rec3 As ADODB.RecordsetPublic strquery As StringDim i As IntegerPublic errNo As Long

'''Public whoami As String

''***********************************************************************************' Procedure: Err_Handler()' Purpose: handles the error and write to the database.'***********************************************************************************Public Sub er_hnd(ByVal log As String, ByVal dt As Date) ' On Error GoTo 111: Dim err_RS As ADODB.Recordset Set err_RS = New ADODB.Recordset On Error Resume Next err_RS.Open "insert into errlog VALUES ('" & Left(log, 255) & "', #" & dt & "#)", dbconnection, adOpenDynamic, adLockOptimistic' err_RS.Close Set err_RS = Nothing Exit Sub'111:' 'error handler error can't do anything' MsgBox "Unknown Error", vbCriticalEnd Sub

'***********************'************************************************************' Procedure: Get_Start()' Purpose: Establishes connection to the database with USER SELECTED ACC.YEAR.'***********************************************************************************Public Sub Get_Start() Dim con_path As String On Error GoTo Report_Connection_Error Set dbconnection = New ADODB.Connection 'con_path = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\DataBase\DBStart.mdb" + ";Persist Security Info=False" con_path = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\DataBase\DBStart.mdb" & ";Persist Security Info=False;Jet OLEDB:Database Password=Prayukti@#$SWTechPST" '& encryp_decryp("") With dbconnection .ConnectionString = con_path .Open End With Exit SubReport_Connection_Error: MsgBox Err.Description & vbCrLf & "CAUTION: Make Sure DataBase 'DBStart.mdb' Exists in the Correct Path !!! ", vbCritical End ' to close the program if the database is not connectedEnd Sub'**************************************************************************************************************' Procedure: Leave_DBStart' Purpose: Releases connection to the database DBStart'**************************************************************************************************************Public Sub Leave_DBstart() dbconnection.Close Set dbconnection = NothingEnd Sub

'***********************************************************************************' Procedure: Get_Connection()' Purpose: Establishes connection to the database.'***********************************************************************************Public Sub Get_Connection() Dim con_path As String On Error GoTo Report_Connection_Error Set dbconnection = New ADODB.Connection 'con_path = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path + "\DataBase\" & curr_DB_file & ";Persist Security Info=False" con_path = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\DataBase\" & curr_DB_file & ";Persist Security Info=False;Jet OLEDB:Database Password=Prayukti@#$SWTechPST" '& encryp_decryp("") With dbconnection .ConnectionString = con_path' .CursorLocation = adUseClient 'MsgBox con_path .Open End With Exit SubReport_Connection_Error: MsgBox Err.Description & vbCrLf & "CAUTION: Make Sure DataBase Exists in the Correct Path !!! ", vbCritical End ' to close the program if the database is not connectedEnd Sub

'***********************************************************************************' Procedure: Get_Connection_mdi()' Purpose: Establishes connection to the database, When user changes the financial year in MDI screen.'***********************************************************************************Public Sub Get_Connection_mdi() Dim con_path As String On Error GoTo Report_Connection_Error Set dbconnection = New ADODB.Connection curr_DB_file_mdi = "DB" & Replace(mdiSSI.cmbAccYears.Text, "-", "_") & ".mdb" 'con_path = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path + "\DataBase\" & curr_DB_file & ";Persist Security Info=False" con_path = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\DataBase\" & curr_DB_file_mdi & ";Persist Security Info=False;Jet OLEDB:Database Password=Prayukti@#$SWTechPST" '& encryp_decryp("") With dbconnection .ConnectionString = con_path' .CursorLocation = adUseClient 'MsgBox con_path .Open End With Exit SubReport_Connection_Error: MsgBox Err.Description & vbCrLf & "CAUTION: Make Sure DataBase Exists in the Correct Path !!! ", vbCritical End ' to close the program if the database is not connectedEnd Sub

'**************************************************************************************************************' Procedure: Leave_Connection' Purpose: Releases connection to the database'**************************************************************************************************************Public Sub Leave_Connection() dbconnection.Close Set dbconnection = NothingEnd Sub

'**************************************************************************************************************' Procedure: Recordset_Creation(strQuery)' Purpose: Releases connection to the database.' Input: strQuery containing the SQL Query to Fetch Records.'**************************************************************************************************************Public Sub Recordset_Creation(strquery As String)On Error GoTo Report_Recordset_Error ' for selling purpose Set dbrec = New ADODB.Recordset With dbrec .Open strquery, dbconnection, adOpenDynamic, adLockOptimistic End With Exit SubReport_Recordset_Error: MsgBox Err.Description, vbCritical, "e-Trans" Call er_hnd(Err.Description & " " & Err.Number & " : From ClsProd", Now)End Sub'**************************************************************************************************************' Procedure: Recordset_Close()' Purpose: Releases Recordset.'**************************************************************************************************************Public Sub RecordSet_Close() On Error GoTo Report_Recordset_Error ' for selling purpose dbrec.Close Set dbrec = Nothing Exit SubReport_Recordset_Error: MsgBox Err.Description, vbCritical, "e-Trans" Call er_hnd(Err.Description & " " & Err.Number & " : From ClsProd", Now)End SubPublic Function get_UnitGuide(ByVal l_ItemId As Long) As StringOn Error GoTo Last Dim RS_UnitGuide As ADODB.Recordset Set RS_UnitGuide = New ADODB.Recordset Call RS_UnitGuide.Open("Select * from Item where ItemId=" & l_ItemId, dbconnection, adOpenForwardOnly, adLockReadOnly) With RS_UnitGuide If Not .EOF Then' If .Fields("measureunit") .Fields("ALTMeasureUnit") Then' get_UnitGuide = "ITEM: " & .Fields("ItemCode") & " Measuring Unit (Qty) : " & .Fields("measureunit") & " Alternate Unit (Alt.Qty) : " & .Fields("ALTMeasureUnit")' Else get_UnitGuide = "ITEM: " & .Fields("ItemCode") & " UOM : " & .Fields("measureunit") '& " --> (NO Alternate Unit)" End If End With Call RS_UnitGuide.Close Set RS_UnitGuide = Nothing 'End If Exit FunctionLast: MsgBox Err.Description, vbCriticalEnd FunctionPublic Function Retrieve_Id(ByVal querry As String)On Error GoTo Report_Recordset_Error ' for selling purpose Set dbrec_Retrieve_Ids = New ADODB.Recordset dbrec_Retrieve_Ids.Open querry, dbconnection, adOpenDynamic, adLockOptimistic With dbrec_Retrieve_Ids If Not .EOF Then If IsNull(.Fields(0)) = False Then Retrieve_Id = .Fields(0) Else Retrieve_Id = 0 End If Else Retrieve_Id = 0 End If End With dbrec_Retrieve_Ids.Close Exit FunctionReport_Recordset_Error: MsgBox Err.Description, vbCritical, "e-Trans" Call er_hnd(Err.Description & " " & Err.Number & " : From ClsProd", Now)End Function

Public Function Retrieve_Name(ByVal querry As String) As StringOn Error GoTo Report_Recordset_Error ' for selling purpose Set dbrec_Retrieve_Name = New ADODB.Recordset With dbrec_Retrieve_Name .Open querry, dbconnection, adOpenDynamic, adLockOptimistic If Not .EOF Then If IsNull(.Fields(0)) = False Then Retrieve_Name = .Fields(0) Else Retrieve_Name = "" End If Else Retrieve_Name = "" End If End With dbrec_Retrieve_Name.Close Exit FunctionReport_Recordset_Error: MsgBox Err.Description, vbCritical, "e-Trans" Call er_hnd(Err.Description & " " & Err.Number & " : From ClsProd", Now)End Function'introduced for alt.QtyPublic Function disp_Alt_Qty(ByVal l_ItemId As Long, ByVal sng_Qty_to_Conv As Single, Optional b_Conv_To_alt_UOM As Boolean = True) As Single 'PURPOSE: to calculate the alternate Qty for the given Qty or ViceVersa (two diff. units for the same ItemId) 'arguments 'l_itemId - is the itemId for which the alternate Qty to be calculated 'sng_Qty_to_Conv - is the qty for which the alt.Qty has to be calculated (Note: this sng_Qty_to_Conv may be the UOM or Alternate UOM qty -->calculation should be vice versa) 'b_Conv_To_alt_UOM -> true means calculation from Qty --> Alt.Qty 'b_Conv_To_alt_UOM -> false means calculation from Alt.Qty --> Qty If b_Conv_To_alt_UOM = True Then 'qty to alt.Qty Calculation (given qty * unitConvert) disp_Alt_Qty = sng_Qty_to_Conv * Retrieve_Id("select UnitConvert from Item where itemid=" & l_ItemId) Else 'alt.qty to Qty Calculation (given Alt.qty * (1/unitConvert)) disp_Alt_Qty = sng_Qty_to_Conv * (1 / Retrieve_Id("select UnitConvert from Item where itemid=" & l_ItemId)) End IfEnd FunctionPublic Function Retrieve_TWO_Cols(ByVal querry As String) As StringOn Error GoTo Report_Recordset_Error ' for selling purpose Set dbrec_Retrieve_Name = New ADODB.Recordset With dbrec_Retrieve_Name .Open querry, dbconnection, adOpenDynamic, adLockOptimistic If Not .EOF Then Retrieve_TWO_Cols = .Fields(1) & " , " & .Fields(0) Else Retrieve_TWO_Cols = "" End If End With dbrec_Retrieve_Name.Close Exit FunctionReport_Recordset_Error: MsgBox Err.Description, vbCritical, "e-Trans" Call er_hnd(Err.Description & " " & Err.Number & " : From ClsProd", Now)End Function

Public Sub open_temp_rec(ByVal querry As String) 'this can be used for insert commandOn Error GoTo Report_Recordset_Error ' for selling purpose Set tmp_Rec = New ADODB.Recordset With tmp_Rec .Open querry, dbconnection, adOpenDynamic, adLockOptimistic End With Exit SubReport_Recordset_Error: MsgBox Err.Description, vbCritical, "e-Trans" Call er_hnd(Err.Description & " " & Err.Number & " : From ClsProd", Now)End Sub

Public Sub close_temp_rec()On Error GoTo Report_Recordset_Error ' for selling purpose tmp_Rec.Close Set tmp_Rec = Nothing Exit SubReport_Recordset_Error: MsgBox Err.Description, vbCritical, "e-Trans" Call er_hnd(Err.Description & " " & Err.Number & " : From ClsProd", Now)End Sub

Public Sub open_temp_rec2(ByVal querry As String) 'this can be used for insert commandOn Error GoTo Report_Recordset_Error ' for selling purpose Set tmp_Rec2 = New ADODB.Recordset With tmp_Rec2 .Open querry, dbconnection, adOpenDynamic, adLockOptimistic End With Exit SubReport_Recordset_Error: MsgBox Err.Description, vbCritical, "e-Trans" Call er_hnd(Err.Description & " " & Err.Number & " : From ClsProd", Now)End Sub

Public Sub close_temp_rec2()On Error GoTo Report_Recordset_Error ' for selling purpose tmp_Rec2.Close Set tmp_Rec2 = Nothing Exit SubReport_Recordset_Error: MsgBox Err.Description, vbCritical, "e-Trans" Call er_hnd(Err.Description & " " & Err.Number & " : From ClsProd", Now)End Sub

Public Sub open_temp_rec3(ByVal querry As String) 'this can be used for insert commandOn Error GoTo Report_Recordset_Error ' for selling purpose Set tmp_Rec3 = New ADODB.Recordset With tmp_Rec3 .Open querry, dbconnection, adOpenDynamic, adLockOptimistic End With Exit SubReport_Recordset_Error: MsgBox Err.Description, vbCritical, "e-Trans" Call er_hnd(Err.Description & " " & Err.Number & " : From ClsProd", Now)End Sub

Public Sub close_temp_rec3()On Error GoTo Report_Recordset_Error ' for selling purpose tmp_Rec3.Close Set tmp_Rec3 = Nothing Exit SubReport_Recordset_Error: MsgBox Err.Description, vbCritical, "e-Trans" Call er_hnd(Err.Description & " " & Err.Number & " : From ClsProd", Now)End Sub

Public Function chk_rec_exst(ByVal querry As String) As BooleanOn Error GoTo Report_Recordset_Error ' for selling purpose Set dbrec_rec_exst = New ADODB.Recordset With dbrec_rec_exst .Open querry, dbconnection, adOpenDynamic, adLockOptimistic If Not .EOF Then chk_rec_exst = True Else chk_rec_exst = False End If End With dbrec_rec_exst.Close Exit FunctionReport_Recordset_Error: MsgBox Err.Description, vbCritical, "e-Trans" Call er_hnd(Err.Description & " " & Err.Number & " : From ClsProd", Now)End FunctionPublic Sub load_combo(ByRef combos As ComboBox, ByVal qryy As String)On Error GoTo Report_Recordset_Error ' for selling purpose Dim dbrec_load_data As ADODB.Recordset Set dbrec_load_data = New ADODB.Recordset combos.Clear combos.Refresh With dbrec_load_data .Open qryy, dbconnection, adOpenDynamic, adLockOptimistic If Not .EOF Then .MoveFirst While Not .EOF combos.AddItem (.Fields(1)) combos.ItemData(combos.NewIndex) = .Fields(0) .MoveNext Wend End If End With dbrec_load_data.Close Set dbrec_load_data = Nothing Exit SubReport_Recordset_Error: MsgBox Err.Description, vbCritical, "e-Trans" Call er_hnd(Err.Description & " " & Err.Number & " : From ClsProd", Now)End SubPublic Sub load_combo1(ByRef combos As ComboBox, ByVal qryy As String)On Error GoTo Report_Recordset_Error ' for selling purpose Dim dbrec_load_data As ADODB.Recordset Set dbrec_load_data = New ADODB.Recordset combos.Clear combos.Refresh With dbrec_load_data .Open qryy, dbconnection, adOpenDynamic, adLockOptimistic If Not .EOF Then .MoveFirst While Not .EOF If IsNull(.Fields(0)) Then Else combos.AddItem (.Fields(0)) End If .MoveNext Wend End If End With dbrec_load_data.Close Set dbrec_load_data = Nothing Exit SubReport_Recordset_Error: MsgBox Err.Description, vbCritical, "e-Trans" Call er_hnd(Err.Description & " " & Err.Number & " : From ClsProd", Now)End Sub

Public Sub load_list1(ByRef lists As ListBox, ByVal qryy As String)On Error GoTo Report_Recordset_Error ' for selling purpose Dim dbrec_load_data As ADODB.Recordset Set dbrec_load_data = New ADODB.Recordset lists.Clear lists.Refresh With dbrec_load_data .Open qryy, dbconnection, adOpenDynamic, adLockOptimistic If Not .EOF Then .MoveFirst While Not .EOF lists.AddItem (.Fields(0)) .MoveNext Wend End If End With dbrec_load_data.Close Set dbrec_load_data = Nothing Exit SubReport_Recordset_Error: MsgBox Err.Description, vbCritical, "e-Trans" Call er_hnd(Err.Description & " " & Err.Number & " : From ClsProd", Now)End Sub

Public Sub load_list(ByRef lists As ListBox, ByVal qryy As String)On Error GoTo Report_Recordset_Error ' for selling purpose Dim dbrec_load_data As ADODB.Recordset Set dbrec_load_data = New ADODB.Recordset lists.Clear lists.Refresh With dbrec_load_data .Open qryy, dbconnection, adOpenDynamic, adLockOptimistic If Not .EOF Then .MoveFirst While Not .EOF lists.AddItem (.Fields(1)) lists.ItemData(lists.NewIndex) = .Fields(0) .MoveNext Wend End If End With dbrec_load_data.Close Set dbrec_load_data = Nothing Exit SubReport_Recordset_Error: MsgBox Err.Description, vbCritical, "e-Trans" Call er_hnd(Err.Description & " " & Err.Number & " : From ClsProd", Now)End Sub

'to get the itemdata of a listbox or comboboxPublic Function Get_ItemData_From_String(TmpLst As Object, tmpstr As String) As Long Dim i As Integer Get_ItemData_From_String = 0 For i = 0 To TmpLst.ListCount - 1 If UCase(tmpstr) = UCase(TmpLst.List(i)) Then Get_ItemData_From_String = TmpLst.ItemData(i) Exit For End If Next iEnd Function

Public Function encryp_decryp(ByVal chk As String) Dim i As Integer Dim Encrypted_Decrypted_String As String Dim ch As Byte encrypt_decrypt = chk 'Trim(txtUserPassword.Text) For i = 1 To Len(encrypt_decrypt) ch = (Asc(Mid$(encrypt_decrypt, i, 1)) + 128) Mod 256 Encrypted_Decrypted_String = Encrypted_Decrypted_String + Chr(ch) Next i encryp_decryp = Encrypted_Decrypted_StringEnd Function

Public Function Get_Cmb_ListIndex_From_ItemData(TmpCmb As ComboBox, TmpItmData As Long) As Long Dim i As Integer Get_Cmb_ListIndex_From_ItemData = -1 For i = 0 To TmpCmb.ListCount - 1 If TmpItmData = TmpCmb.ItemData(i) Then Get_Cmb_ListIndex_From_ItemData = i Exit For End If Next iEnd Function

'Public Sub write_log(ByVal frmname As String, ByVal AdmNo As String)'' Open App.Path + "\log.txt" For Append As #1' If frmname = "frmStudDel" Then' Print #1, frmname & "----> " & Now & "Admission No: " & AdmNo & " Deleted "' Print #1,' End If' Close #1'End Sub

Public Function cal_OT_Hrs(ByVal OTstr As String) As Single Dim tmpVal As String cal_OT_Hrs = 0 If Len(OTstr) = 0 Then cal_OT_Hrs = 0 Else For i = 1 To 40 'ASSUME 40 DAYS IN ACCIDENTAL DATA tmpVal = Str_Split_Using_Separator(OTstr, ",", i) If tmpVal = "" Then Exit For Else cal_OT_Hrs = cal_OT_Hrs + Val(tmpVal) End If Next i End IfEnd Function

Public Function cal_days_Present(ByVal Lstr As String) As Single cal_days_Present = 0 If Len(Lstr) = 0 Then cal_days_Present = 0 Else For i = 1 To Len(Lstr) If Mid(Lstr, i, 1) = "P" Then cal_days_Present = cal_days_Present + 1 ElseIf Mid(Lstr, i, 1) = "N" Or Mid(Lstr, i, 1) = "M" Then cal_days_Present = cal_days_Present + 0.5 End If Next i End IfEnd Function Public Function cal_Leave_days(ByVal Lstr As String) As Single cal_Leave_days = 0 If Len(Lstr) = 0 Then cal_Leave_days = 0 Else For i = 1 To Len(Lstr) If Mid(Lstr, i, 1) = "L" Then cal_Leave_days = cal_Leave_days + 1 ElseIf Mid(Lstr, i, 1) = "M" Then cal_Leave_days = cal_Leave_days + 0.5 End If Next i End IfEnd Function

Public Function cal_Holidays(ByVal HoliStr As String) As Integer 'this function will return the minus of the holidays ie working days Dim i As Integer cal_Holidays = 0 If Len(HoliStr) = 0 Then Else For i = 1 To Len(HoliStr) If Mid(HoliStr, i, 1) = "0" Then cal_Holidays = cal_Holidays + 1 End If Next i End IfEnd Function

Public Function Str_Split_Using_Separator(ByVal Src_Str As String, ByVal sep As String, ByVal pos As Integer) As String Dim pos_cnt As Integer If pos = 0 Then MsgBox "Position Error" Exit Function End If pos_cnt = 1 While True If pos_cnt pos And InStr(1, Src_Str, sep) > 0 Then Src_Str = Right$(Src_Str, Len(Src_Str) - InStr(1, Src_Str, sep)) Else If InStr(1, Src_Str, sep) > 0 Then Str_Split_Using_Separator = Left$(Src_Str, InStr(1, Src_Str, sep) - 1) ElseIf InStr(1, Src_Str, sep) = 0 And pos = pos_cnt Then ' if the separator is not found fetch the remaining string Str_Split_Using_Separator = Src_Str Else Str_Split_Using_Separator = "" End If Exit Function End If pos_cnt = pos_cnt + 1 WendEnd Function

'for wordWrap the given string to the given widthPublic Function setWidth(Expression As String, Width As Integer) As String Dim sTemp As String sTemp = vbNullString Dim arWords 'array to hold string arWords = Split(Expression, " ") Dim ipos As Integer Dim ilen As Integer ilen = 0 'From Nett ' For ipos = LBound(arWords) To UBound(arWords) 'shows the error at ubound() so Here I cutdown 1 i.e Ubound()-1 ' the above code may be used when "option base 1" 'if No option base is specified then option base is Zero by default so Ubound()-1 is used For ipos = LBound(arWords) To UBound(arWords) ilen = ilen + Len(arWords(ipos)) sTemp = sTemp & arWords(ipos) & " " If ipos < UBound(arWords) Then If ilen + Len(arWords(ipos + 1)) > Width Then 'add a carriage return 'sTemp = sTemp & vbCrLf sTemp = sTemp & vbLf ilen = 0 End If Else If ilen + Len(arWords(ipos)) > Width Then 'add a carriage return /line feed 'sTemp = sTemp & vbCrLf sTemp = sTemp & vbLf ilen = 0 End If End If Next ipos setWidth = sTempEnd Function

Public Sub update_rec(ByVal strr As String)On Error GoTo Report_Recordset_Error ' for selling purpose Dim tt_rec As ADODB.Recordset Set tt_rec = New ADODB.Recordset tt_rec.Open strr, dbconnection, adOpenDynamic, adLockOptimistic Set tt_rec = Nothing Exit SubReport_Recordset_Error: MsgBox Err.Description, vbCritical, "e-Trans" Call er_hnd(Err.Description & " " & Err.Number & " : From ClsProd", Now)End Sub

Public Function MoneyToWords(cMoney As Long) As String Dim lRemaining As Long Dim sTempStr As String, sRtnVal As String, sSet As String Dim nNextNbr As Integer, nDigits As Integer Dim last3DigitOver As Boolean last3DigitOver = False 'lRemaining = CLng(cMoney) ' drop the cents lRemaining = CLng(cMoney) sTempStr = "000" & lRemaining nDigits = 0 'process sets of 3 digits from least to most significant Do While (IsNumeric(sTempStr) And Val(sTempStr) > 0) 'If Len(sTempStr) > 1 Then nNextNbr = Val(Right$(sTempStr, 2)) sTempStr = Left(sTempStr, Len(sTempStr) - 2) 'ElseIf Len(sTempStr) = 1 Then ' nNextNbr = Val(Right$(sTempStr, 1)) ' sTempStr = Left(sTempStr, Len(sTempStr) - 1) 'End If 'handle tens and units digits this set sSet = "" If (nNextNbr > 9 And nNextNbr < 20) Then sSet = Choose(nNextNbr - 9, "ten", "eleven", "tweleve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen") & " " & sSet ElseIf (nNextNbr > 0) Then sSet = Choose(Val(Right(Str(nNextNbr), 1)), "one", "two", "three", "four", "five", "six", "seven", "eight", "nine") & sSet End If If (nNextNbr >= 20) Then sSet = Choose(Left$(nNextNbr, 1), "error", "twenty", "thirty", "fourty", "fifty", "sixty", "seventy", "eighty", "ninety") & " " & sSet End If ' the following if block code will be executed only once If last3DigitOver = False And Len(sTempStr) >= 1 Then 'handle hundreds digit in this set nNextNbr = Val(Right$(sTempStr, 1)) sTempStr = Left(sTempStr, Len(sTempStr) - 1) If (nNextNbr >= 1) Then sSet = " HUNDRED, " & sSet sSet = Choose(nNextNbr, "one", "two", "three", "four", "five", "six", "seven", "eight", "nine") & " " & sSet End If End If 'handle set suffix,no suffix if this set was "000" If (sSet "") Then sRtnVal = sSet & Choose(nDigits / 3, " THOUSAND, ", " LAKH, ", " CRORE, ") & sRtnVal End If If last3DigitOver = False Then last3DigitOver = True nDigits = nDigits + 3 Loop If Right(sRtnVal, 2) = ", " Then sRtnVal = Left(sRtnVal, Len(sRtnVal) - 2) End If MoneyToWords = sRtnValEnd Function

Public Function cal_Actual_Holidays(ByVal HoliStr As String) As Integer 'this function will return the minus of the holidays ie working days Dim i As Integer cal_Actual_Holidays = 0 If Len(HoliStr) = 0 Then Else For i = 1 To Len(HoliStr) If Mid(HoliStr, i, 1) = "1" Then cal_Actual_Holidays = cal_Actual_Holidays + 1 End If Next i End If

End Function

Public Function get_total_for_user_req(ByRef msflex As MSFlexGrid, ByVal r1 As Integer, ByVal r2 As Integer, ByVal c1 As Integer, ByVal c2 As Integer) Dim aa, BB aa = 0: BB = 0 If r1 > r2 Then r1 = r1 + r2 r2 = r1 - r2 r1 = r1 - r2 End If If c1 > c2 Then c1 = c1 + c2 c2 = c1 - c2 c1 = c1 - c2 End If For i = r1 To r2 For j = c1 To c2 aa = aa + Val(msflex.TextMatrix(i, j)) If Abs(c1 - c2) = 1 And j = c1 Then BB = BB + Val(msflex.TextMatrix(i, c1)) * Val(msflex.TextMatrix(i, c2)) End If Next j Next i If aa = 0 Then get_total_for_user_req = "Sum : ZERO" ElseIf BB = 0 Then get_total_for_user_req = "Sum : " & Round(aa, 2) Else get_total_for_user_req = "Sum : " & Round(aa, 2) & vbCrLf & "(C1 " & Chr(215) & " C2): " & BB End IfEnd Function

Public Function repeat_char(ByVal ch As Integer, ByVal lengt As Integer) As String Dim tmp As String For i = 1 To lengt tmp = tmp & Chr(ch) Next i repeat_char = tmpEnd Function

Public Sub PSprinting(ByRef cmmDlg As CommonDialog, ByRef rtbP As RichTextBox) On Error Resume Next' cdlPDReturnDC = 256' cdlPDNoPageNums = 8' cdlPDSelection = 1' cdlPDAllPages = 0 Dim f As New StdFont f.namE = "Courier New" f.Size = 11 Set Printer.Font = f cmmDlg.Flags = cdlPDReturnDC + cdlPDNoPageNums '256 + 8 If rtbPreview.SelLength = 0 Then cmmDlg.Flags = cmmDlg.Flags + cdlPDAllPages ' + 0 Else cmmDlg.Flags = cmmDlg.Flags + cdlPDSelection End If cmmDlg.ShowPrinter rtbP.SelPrint (cmmDlg.hDC)End Sub

'+++++++++++++++++++++++++PRINTING SOLUTIONS+++++++++++++++++++++++++++++++++++++++++++'NOTE: IF AN EMPTY STRING STARTS WITH SPACE(n) COMMAND, SYSTEM WILL ALLOCATE 10 SPACES EXTRA WITH n required spaces, SO use'use the code----> tmp = " " & space(69)' (INSTEAD OF using )' tmp=space(70)'+++++++++++++++++++++++++PRINTING SOLUTIONS+++++++++++++++++++++++++++++++++++++++++++

Public Function LPad(ValIn As Variant, nDec As Integer, _ WidthOut As Integer) As String'' Formatting function left pads with spaces, using specified' number of decimal digits.'xstring = LPad(2.3, 2, 7) If IsNumeric(ValIn) Then If nDec > 0 Then LPad = Right$(Space$(WidthOut) & _ Format$(ValIn, "0." & String$(nDec, "0")), _ WidthOut) Else LPad = Right$(Space$(WidthOut) & Format$(ValIn, "0"), WidthOut) End If Else LPad = Right$(Space$(WidthOut) & ValIn, WidthOut) End IfEnd Function

'Public Function get_new_dcno(ByVal currTabl As String) As Long' 'booktype1 uses all three separate' 'booktype2 uses mfg and lab one combined book and subcon separate book' 'booktype3 uses all three combined in one' Dim tmp As Long, tmp2 As Long' Select Case mdiSSI.bookType' Case 1 'booktype1 uses all three separate' Select Case UCase(currTabl)' Case "DCINV"' If chk_rec_exst("select * from " & currTabl) Then' tmp = CLng(Val(Retrieve_Name("SELECT dcno from dcinv where dcinvid=(select max(dcinvid) from dcinv)")))' End If' Case "DCOUTGOINGINV"' If chk_rec_exst("select * from " & currTabl) Then' tmp = CLng(Val(Retrieve_Name("SELECT dcno from dcOUTGOINGinv where dcid=(select max(dcid) from dcoutgoinginv)")))' End If' Case "DCSUBCONOUTGOING"' If chk_rec_exst("select * from " & currTabl) Then' tmp = CLng(Val(Retrieve_Name("SELECT dcno from dcsubconOUTGOING where dcid=(select max(dcid) from dcsubconOUTGOING)")))' End If' End Select' Case 2 'booktype2 uses mfg and lab one combined book and subcon separate book' Select Case UCase(currTabl)' Case "DCINV"' If chk_rec_exst("select * from dcinv") Then' tmp = CLng(Val(Retrieve_Name("SELECT dcno from dcinv where dcinvid=(select max(dcinvid) from dcinv)")))' End If' If chk_rec_exst("select * from DCOUTGOINGINV") Then' tmp2 = CLng(Val(Retrieve_Name("SELECT dcno from dcOUTGOINGinv where dcid=(select max(dcid) from dcoutgoinginv)")))' End If' If tmp2 > tmp Then tmp = tmp2' Case "DCOUTGOINGINV"' If chk_rec_exst("select * from DCOUTGOINGINV") Then' tmp = CLng(Val(Retrieve_Name("SELECT dcno from dcOUTGOINGinv where dcid=(select max(dcid) from dcoutgoinginv)")))' End If' If chk_rec_exst("select * from dcinv") Then' tmp2 = CLng(Val(Retrieve_Name("SELECT dcno from dcinv where dcinvid=(select max(dcinvid) from dcinv)")))' End If' If tmp2 > tmp Then tmp = tmp2' Case "DCSUBCONOUTGOING"' If chk_rec_exst("select * from dcsubconOUTGOING") Then' tmp = CLng(Val(Retrieve_Name("SELECT dcno from dcsubconOUTGOING where dcid=(select max(dcid) from dcsubconOUTGOING)")))' End If' End Select' Case 3 'booktype3 uses all three combined in one' If chk_rec_exst("select * from DCINV") Then' tmp = CLng(Val(Retrieve_Name("SELECT dcno from dcinv where dcinvid=(select max(dcinvid) from dcinv)")))' End If' If chk_rec_exst("select * from DCOUTGOINGINV") Then' tmp2 = CLng(Val(Retrieve_Name("SELECT dcno from dcOUTGOINGinv where dcid=(select max(dcid) from dcoutgoinginv)")))' If tmp2 > tmp Then tmp = tmp2' End If' If chk_rec_exst("select * from DCSUBCONOUTGOING") Then' tmp2 = CLng(Val(Retrieve_Name("SELECT dcno from dcsubconOUTGOING where dcid=(select max(dcid) from dcsubconOUTGOING)")))' If tmp2 > tmp Then tmp = tmp2' End If' End Select' 'In the previous codes we obtain the maximum DCNO if it is not alphanumeric, suppose it is numeric only' 'ALSO since the duplication is checked with every DC say mfg,labour,subcontract (all Outgoing DCs)' 'No need to check the duplication of obtained maximum DCNO' 'If conditions are changed by the end user then we should add the' 'code for checking the found out DCNO + 1 in any of the DCs'' get_new_dcno = tmp + 1''End Function''Public Function get_new_Invoiceno(ByVal currTabl As String) As Long' 'booktype1 uses all three separate' 'booktype2 uses mfg and lab one combined book and subcon separate book' 'booktype3 uses all three combined in one'' Dim tmp As Long, tmp2 As Long' Select Case mdiSSI.bookTypeINV' Case 2 'booktype2 uses 2 type of books for mfg and labour' Select Case UCase(currTabl)' Case "DCINV"' If chk_rec_exst("select * from DCINV") Then' tmp = CLng(Val(Retrieve_Name("SELECT invno from dcinv where invdatet=(select max(invdatet) from dcinv where invno is not null and InvNo'Nil')")))' End If' Case "DCOUTGOINGINV"' If chk_rec_exst("select * from DCOUTGOINGINV") Then' tmp = CLng(Val(Retrieve_Name("SELECT invno from dcOUTGOINGinv where invdatet=(select max(invdatet) from dcoutgoinginv where invno is not null and InvNo'Nil')")))' End If' End Select' Case 1 'booktype1 uses one book for both type of invoices' 'booktype3 uses all three combined in one' If chk_rec_exst("select * from DCINV") Then' tmp = CLng(Val(Retrieve_Name("SELECT invno from dcinv where invdatet=(select max(invdatet) from dcinv where invno is not null and InvNo'Nil')")))' End If' If chk_rec_exst("select * from DCOUTGOINGINV") Then' tmp2 = CLng(Val(Retrieve_Name("SELECT invno from dcOUTGOINGinv where invdatet=(select max(invdatet) from dcoutgoinginv where invno is not null and InvNo'Nil')")))' If tmp2 > tmp Then tmp = tmp2' End If' End Select' get_new_Invoiceno = tmp + 1'End Function

'DONE FOR AUTO NO For EVERY YEAR (full block Changed)Public Function get_new_dcno(ByVal currTabl As String) As Long 'booktype1 uses all three separate 'booktype2 uses mfg and lab one combined book and subcon separate book 'booktype3 uses all three combined in one Dim tmp As Long, tmp2 As Long Select Case mdiSSI.bookType Case 1 'booktype1 uses all three separate Select Case UCase(currTabl) Case "DCINV" If chk_rec_exst("select * from " & currTabl) Then 'tmp = CLng(Val(Retrieve_Name("SELECT dcno from dcinv where dcinvid=(select max(dcinvid) from dcinv where dcdateT between #4/1/" & Mid(curr_DB_file, 3, 4) & "# and #3/31/" & Val(Mid(curr_DB_file, 3, 4)) + 1 & " 23:59#)"))) tmp = CLng(Val(Retrieve_Name("SELECT dcno from dcinv where dcinvid=(select max(dcinvid) from dcinv where dcinv = False and dcdateT between #4/1/" & get_FinYear(Date) & "# and #3/31/" & get_FinYear(Date) + 1 & " 23:59#)"))) End If Case "DCOUTGOINGINV" If chk_rec_exst("select * from " & currTabl) Then tmp = CLng(Val(Retrieve_Name("SELECT dcno from dcOUTGOINGinv where dcid=(select max(dcid) from dcoutgoinginv where dcdateT between #4/1/" & get_FinYear(Date) & "# and #3/31/" & get_FinYear(Date) + 1 & " 23:59#)"))) End If Case "DCSUBCONOUTGOING" If chk_rec_exst("select * from " & currTabl) Then tmp = CLng(Val(Retrieve_Name("SELECT dcno from dcsubconOUTGOING where dcid=(select max(dcid) from dcsubconOUTGOING where dcdateT between #4/1/" & get_FinYear(Date) & "# and #3/31/" & get_FinYear(Date) + 1 & " 23:59#)"))) End If End Select Case 2 'booktype2 uses mfg and lab one combined book and subcon separate book Select Case UCase(currTabl) Case "DCINV" If chk_rec_exst("select * from dcinv") Then tmp = CLng(Val(Retrieve_Name("SELECT dcno from dcinv where dcinvid=(select max(dcinvid) from dcinv where dcdateT between #4/1/" & get_FinYear(Date) & "# and #3/31/" & get_FinYear(Date) + 1 & " 23:59#)"))) End If If chk_rec_exst("select * from DCOUTGOINGINV") Then tmp2 = CLng(Val(Retrieve_Name("SELECT dcno from dcOUTGOINGinv where dcid=(select max(dcid) from dcoutgoinginv where dcdateT between #4/1/" & get_FinYear(Date) & "# and #3/31/" & get_FinYear(Date) + 1 & " 23:59#)"))) End If If tmp2 > tmp Then tmp = tmp2 Case "DCOUTGOINGINV" If chk_rec_exst("select * from DCOUTGOINGINV") Then tmp = CLng(Val(Retrieve_Name("SELECT dcno from dcOUTGOINGinv where dcid=(select max(dcid) from dcoutgoinginv where dcdateT between #4/1/" & get_FinYear(Date) & "# and #3/31/" & get_FinYear(Date) + 1 & " 23:59#)"))) End If If chk_rec_exst("select * from dcinv") Then tmp2 = CLng(Val(Retrieve_Name("SELECT dcno from dcinv where dcinvid=(select max(dcinvid) from dcinv where dcdateT between #4/1/" & get_FinYear(Date) & "# and #3/31/" & get_FinYear(Date) + 1 & " 23:59#)"))) End If If tmp2 > tmp Then tmp = tmp2 Case "DCSUBCONOUTGOING" If chk_rec_exst("select * from dcsubconOUTGOING") Then tmp = CLng(Val(Retrieve_Name("SELECT dcno from dcsubconOUTGOING where dcid=(select max(dcid) from dcsubconOUTGOING where dcdateT between #4/1/" & get_FinYear(Date) & "# and #3/31/" & get_FinYear(Date) + 1 & " 23:59#)"))) End If End Select Case 3 'booktype3 uses all three combined in one If chk_rec_exst("select * from DCINV") Then tmp = CLng(Val(Retrieve_Name("SELECT dcno from dcinv where dcinvid=(select max(dcinvid) from dcinv where dcdateT between #4/1/" & get_FinYear(Date) & "# and #3/31/" & get_FinYear(Date) + 1 & " 23:59#)"))) End If If chk_rec_exst("select * from DCOUTGOINGINV") Then tmp2 = CLng(Val(Retrieve_Name("SELECT dcno from dcOUTGOINGinv where dcid=(select max(dcid) from dcoutgoinginv where dcdateT between #4/1/" & get_FinYear(Date) & "# and #3/31/" & get_FinYear(Date) + 1 & " 23:59#)"))) If tmp2 > tmp Then tmp = tmp2 End If If chk_rec_exst("select * from DCSUBCONOUTGOING") Then tmp2 = CLng(Val(Retrieve_Name("SELECT dcno from dcsubconOUTGOING where dcid=(select max(dcid) from dcsubconOUTGOING where dcdateT between #4/1/" & get_FinYear(Date) & "# and #3/31/" & get_FinYear(Date) + 1 & " 23:59#)"))) If tmp2 > tmp Then tmp = tmp2 End If End Select 'In the previous codes we obtain the maximum DCNO if it is not alphanumeric, suppose it is numeric only 'ALSO since the duplication is checked with every DC say mfg,labour,subcontract (all Outgoing DCs) 'No need to check the duplication of obtained maximum DCNO 'If conditions are changed by the end user then we should add the 'code for checking the found out DCNO + 1 in any of the DCs get_new_dcno = tmp + 1 'if the value is 1 , then we are alerting the end user, that he/she is in the next financial year 'curr_DB_file will hold the string db2007_08 i.e the database name from which we capture the financial year(starting year) and comparing with get_FinYear(date) ===> if curr fin. database not found then caution(message box) will expand with iif condition (true condition) otherwise no extra message If Val(get_new_dcno) = 1 Then MsgBox "You are about to start New Records for this FINANCIAL YEAR " & get_FinYear(Date) & "-" & (get_FinYear(Date) + 1) & _ vbCrLf & vbCrLf & vbCrLf & IIf(Mid(curr_DB_file, 3, 4) get_FinYear(Date), "!!! STOP PROCEEDING FURTHER --- Please Read the Following !!! " & _ vbCrLf & vbCrLf & " We recommend you to close this software and Proceed with 'MaintainFinYear.Exe' Software Kit supplied along with this e-Trans Software", ""), _ vbInformation, "e-Trans SOFTWARE - ALERT" End If End Function

'DONE FOR AUTO NO For EVERY YEAR (full block Changed)Public Function get_new_Invoiceno(ByVal currTabl As String) As Long 'booktype1 uses all three separate 'booktype2 uses mfg and lab one combined book and subcon separate book 'booktype3 uses all three combined in one

Dim tmp As Long, tmp2 As Long Select Case mdiSSI.bookTypeINV Case 2 'booktype2 uses 2 type of books for mfg and labour Select Case UCase(currTabl) Case "DCINV" If chk_rec_exst("select * from DCINV") Then tmp = CLng(Val(Retrieve_Name("SELECT invno from dcinv where invdatet=(select max(invdatet) from dcinv where invno is not null and InvNo'Nil' and invdatet between #4/1/" & get_FinYear(Date) & "# and #3/31/" & get_FinYear(Date) + 1 & " 23:59#)"))) End If Case "DCOUTGOINGINV" If chk_rec_exst("select * from DCOUTGOINGINV") Then tmp = CLng(Val(Retrieve_Name("SELECT invno from dcOUTGOINGinv where invdatet=(select max(invdatet) from dcoutgoinginv where invno is not null and InvNo'Nil' and invdatet between #4/1/" & get_FinYear(Date) & "# and #3/31/" & get_FinYear(Date) + 1 & " 23:59#)"))) End If End Select Case 1 'booktype1 uses one book for both type of invoices 'booktype3 uses all three combined in one If chk_rec_exst("select * from DCINV") Then tmp = CLng(Val(Retrieve_Name("SELECT invno from dcinv where invdatet=(select max(invdatet) from dcinv where invno is not null and InvNo'Nil' and IsProformaTrue and invdatet between #4/1/" & get_FinYear(Date) & "# and #3/31/" & get_FinYear(Date) + 1 & " 23:59#)"))) End If If chk_rec_exst("select * from DCOUTGOINGINV") Then tmp2 = CLng(Val(Retrieve_Name("SELECT invno from dcOUTGOINGinv where invdatet=(select max(invdatet) from dcoutgoinginv where invno is not null and InvNo'Nil' and invdatet between #4/1/" & get_FinYear(Date) & "# and #3/31/" & get_FinYear(Date) + 1 & " 23:59#)"))) If tmp2 > tmp Then tmp = tmp2 End If End Select get_new_Invoiceno = tmp + 1 'if the value is 1 , then we are alerting the end user, that he/she is in the next financial year 'curr_DB_file will hold the string db2007_08 i.e the database name from which we capture the financial year(starting year) and comparing with get_FinYear(date) ===> if curr fin. database not found then caution(message box) will expand with iif condition (true condition) otherwise no extra message If Val(get_new_Invoiceno) = 1 Then MsgBox "You are about to start New Records for this FINANCIAL YEAR " & get_FinYear(Date) & "-" & (get_FinYear(Date) + 1) & _ vbCrLf & vbCrLf & vbCrLf & IIf(Mid(curr_DB_file, 3, 4) get_FinYear(Date), "!!! STOP PROCEEDING FURTHER --- Please Read the Following !!! " & _ vbCrLf & vbCrLf & " We recommend you to close this software and Proceed with 'MaintainFinYear.Exe' Software Kit supplied along with this e-Trans Software", ""), _ vbInformation, "e-Trans SOFTWARE - ALERT" End If

End Function

Public Function IsAvailPO(ByVal custid As Long, ByVal strPO As String, ByVal tbl As String) As Boolean If UCase(tbl) = "SUBCONPO" Then If chk_rec_exst("select * from " & tbl & " where suPPid=" & custid & " and PONo='" & ReplStr(strPO, "'", "''") & "'") = True Then IsAvailPO = True Else IsAvailPO = False End If Else If chk_rec_exst("select * from " & tbl & " where CUstid=" & custid & " and PONo='" & ReplStr(strPO, "'", "''") & "'") = True Then IsAvailPO = True Else IsAvailPO = False End If End IfEnd Function

Public Function IsAvailPO_subcon(ByVal suppid As Long, ByVal strPO As String, ByVal tbl As String) As Boolean If chk_rec_exst("select * from " & tbl & " where suppid=" & suppid & " and PONo='" & ReplStr(strPO, "'", "''") & "'") = True Then IsAvailPO_subcon = True Else IsAvailPO_subcon = False End IfEnd Function''---------------------------------------------------------------------'""""""""""""""""""""""""""ERROR HANDLING"""""""""""""""""""""""""""""'---------------------------------------------------------------------

Public Function err_display(ByVal errNo As Long) As String 'Case "-2147217900(80040e14)" If errNo = -2.1472179008004E+28 Then err_display = "Syntax error" ElseIf errNo = 5 Then err_display = "Invalid Procedure Call" 'Case "2147217887(80040e21)" ElseIf errNo = 2.1472178878004E+35 Then err_display = "Field is too small to accept the data you typed" 'Case "-214747887(80040e21)" ElseIf errNo = -2.147478878004E+34 Then err_display = "The Microsoft Jet database engine stopped the process because you and another user are attempting to change the same data at same time" Else err_display = "Read - Write Error" End If End Function

Public Function msf_check_valid_itm(ByRef msfT As MSFlexGrid, ByVal co As Integer) As Boolean Dim i As Integer, j As Integer msf_check_valid_itm = False For i = 1 To msfT.rows - 2 For j = i + 1 To msfT.rows - 1 If Trim(msfT.TextMatrix(i, co)) = Trim(msfT.TextMatrix(j, co)) Then MsgBox "Duplication of Part No./ Items is not allowed. SEE ROWS: " & i & " and " & j, vbCritical Exit Function End If Next j Next i msf_check_valid_itm = TrueEnd Function

Public Function msf_RowQty_OK_if_red(ByRef msfT As MSFlexGrid, ByVal Co1 As Integer, ByVal co2 As Integer) As Boolean'this function is used to check for the rows which are in Yellow data i.e POBALqty in msflex, to check with user typed 'Qty' with 'POBalQty' (only if POBALqty is yellow it will be checked with Qty) Dim i As Integer msf_RowQty_OK_if_red = True With msfT .Col = co2 For i = 1 To .rows - 1 .Row = i If .CellForeColor = vbRed Then 'if yellow color If Val(.TextMatrix(i, Co1)) > Val(.TextMatrix(i, co2)) Then MsgBox "In Row: " & i & " , Qty should not be greater than " & Val(.TextMatrix(i, co2)), vbCritical, mdiSSI.msgTxt msf_RowQty_OK_if_red = False Exit Function End If End If Next i End WithEnd Function

Public Function msf_RowQty_OK_with_StockPO(ByRef msfT As MSFlexGrid, ByVal Co1 As Integer, ByVal co2 As Integer) As Boolean'this function is used to check for all the rows in msflex, with user typed 'Qty' with 'StkQty' or 'POBalQty' based on the request. Dim i As Integer msf_RowQty_OK_with_StockPO = True With msfT For i = 1 To .rows - 1 If Val(.TextMatrix(i, Co1)) > Val(.TextMatrix(i, co2)) Then MsgBox "In Row: " & i & " , Qty should not be greater than " & Val(.TextMatrix(i, co2)), vbCritical, mdiSSI.msgTxt msf_RowQty_OK_with_StockPO = False Exit Function End If Next i End WithEnd Function

Public Function remove_all_vbcrlf(ByVal strCRLF As String) As String 'to remove unwanted vbcrlf in a string (Generally at the END of the string) While Right(strCRLF, 1) = vbCr Or Right(strCRLF, 1) = vbLf strCRLF = Left(strCRLF, Len(strCRLF) - 1) Wend remove_all_vbcrlf = strCRLFEnd Function

Public Function ReplStr(sSrcStr As String, sFind As String, sReplaceWith As String) As StringDim nStart As Long, sStr As String, nStrLen As Long

nStart = 1nStrLen = Len(sReplaceWith)While nStart 0 nStart = InStr(nStart, sSrcStr, sFind)If nStart > 0 ThensSrcStr = Left(sSrcStr, nStart - 1) & sReplaceWith & Mid(sSrcStr, nStart + Len(sFind))nStart = nStart + nStrLen End IfWendReplStr = sSrcStr End Function

Public Sub show_help(ByVal f_path As String) Dim i As Long On Error GoTo Last i = Shell(App.Path & "\Help\hh.exe" & " " & App.Path & "\Help\" & f_path, vbMaximizedFocus) Exit SubLast: MsgBox "Help files are not installed!!!", vbInformation, mdiSSI.msgTxtEnd Sub

'' Public Function Replace(sIn As String, sFind As String, _' sReplace As String, Optional nStart As Long = 1, _' Optional nCount As Long = -1, Optional bCompare As _' VbCompareMethod = vbBinaryCompare) As String'' Dim nC As Long, nPos As Integer, sOut As String' sOut = sIn' nPos = InStr(nStart, sOut, sFind, bCompare)' If nPos = 0 Then GoTo EndFn:' Do' nC = nC + 1' sOut = Left(sOut, nPos - 1) & sReplace & _' Mid(sOut, nPos + Len(sFind))' If nCount -1 And nC >= nCount Then Exit Do' nPos = InStr(nStart, sOut, sFind, bCompare)' Loop While nPos > 0'EndFn:' Replace = sOut'End Function

'Function Description()'-------- -----------'Join Used to join arrays elements.''Split Split a string into a variant array.''InStrRev Similar to InStr but searches from end of string.''Replace To find a particular string and replace it.''Reverse To reverse a string.''If these functions are coded and added in a module,'all the above functions can be used in the project as if they are intrinsic functions.'''' Public Function Join(source() As String, Optional _' sDelim As String = " ") As String' Dim sOut As String, iC As Integer' On Error GoTo errh:' For iC = LBound(source) To UBound(source) - 1' sOut = sOut & source(iC) & sDelim' Next' sOut = sOut & source(iC)' Join = sOut' Exit Function'errh:' Err.Raise Err.Number' End Function'' Public Function Split(ByVal sIn As String, Optional sDelim As _' String, Optional nLimit As Long = -1, Optional bCompare As _' VbCompareMethod = vbBinaryCompare) As Variant' Dim sRead As String, sOut() As String, nC As Integer' If sDelim = "" Then' Split = sIn' End If' sRead = ReadUntil(sIn, sDelim, bCompare)' Do' ReDim Preserve sOut(nC)' sOut(nC) = sRead' nC = nC + 1' If nLimit -1 And nC >= nLimit Then Exit Do' sRead = ReadUntil(sIn, sDelim)' Loop While sRead ""' ReDim Preserve sOut(nC)' sOut(nC) = sIn' Split = sOut' End Function'' Public Function ReadUntil(ByRef sIn As String, _' sDelim As String, Optional bCompare As VbCompareMethod _' = vbBinaryCompare) As String' Dim nPos As String' nPos = InStr(1, sIn, sDelim, bCompare)' If nPos > 0 Then' ReadUntil = Left(sIn, nPos - 1)' sIn = Mid(sIn, nPos + Len(sDelim))' End If' End Function'' Public Function StrReverse(ByVal sIn As String) As String' Dim nC As Integer, sOut As String' For nC = Len(sIn) To 1 Step -1' sOut = sOut & Mid(sIn, nC, 1)' Next' StrReverse = sOut' End Function'' Public Function InStrRev(ByVal sIn As String, sFind As String, _' Optional nStart As Long = 1, Optional bCompare As _' VbCompareMethod = vbBinaryCompare) As Long' Dim nPos As Long' sIn = StrReverse(sIn)' sFind = StrReverse(sFind)' nPos = InStr(nStart, sIn, sFind, bCompare)' If nPos = 0 Then' InStrRev = 0' Else' InStrRev = Len(sIn) - nPos - Len(sFind) + 2' End If' End Function' '********************************'MULTI USERS IN NETWORK'New Functions onwards 19-03-2006''********************************Public Sub Register_User_Log(ByVal TmpScrId As String, Optional ByVal TmpUsrVal As Long = 1) 'Id 'Auto Number 'DateT SysId UserId 'ScreenId 'This allow u those have the user right greater than read rights On Error GoTo Register_User_Log_Error'**********************************************************************************************'Here Previously it was not insert the record where uservalue < 3'=============================================================================================='''''''''''''''''''''''''''''''''' If TmpUsrVal > 1 Then'''''''''''''''''''''''''''''''''' Dim db_reg_User As ADODB.Recordset'''''''''''''''''''''''''''''''''' Set db_reg_User = New ADODB.Recordset'''''''''''''''''''''''''''''''''' Call db_reg_User.Open("Select * from OnLineUsers", dbconnection, adOpenDynamic, adLockOptimistic)'''''''''''''''''''''''''''''''''' With db_reg_User'''''''''''''''''''''''''''''''''' .AddNew'''''''''''''''''''''''''''''''''' .Fields("DateT") = Now'''''''''''''''''''''''''''''''''' .Fields("SysId") = SYS_ID'''''''''''''''''''''''''''''''''' .Fields("UserId") = whoami'''''''''''''''''''''''''''''''''' .Fields("UserVal") = TmpUsrVal'''''''''''''''''''''''''''''''''' .Fields("ScreenId") = TmpScrId'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '****************************************'''''''''''''''''''''''''''''''''' ' Old Fields Removed from the table'''''''''''''''''''''''''''''''''' ' .Fields("IsRunning") = True'''''''''''''''''''''''''''''''''' ' .Fields("RecId") = TmpRecId'''''''''''''''''''''''''''''''''' ' .Fields("ActionId") = TmpActId'''''''''''''''''''''''''''''''''' '****************************************'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' .Update'''''''''''''''''''''''''''''''''' End With'''''''''''''''''''''''''''''''''' Call db_reg_User.Close'''''''''''''''''''''''''''''''''' Set db_reg_User = Nothing'''''''''''''''''''''''''''''''''' End If'=========================================================================================

Dim db_reg_User As ADODB.Recordset Set db_reg_User = New ADODB.Recordset Call db_reg_User.Open("Select * from OnLineUsers", dbconnection, adOpenDynamic, adLockOptimistic) With db_reg_User .AddNew .Fields("DateT") = Now .Fields("SysId") = SYS_ID .Fields("UserId") = whoami .Fields("UserVal") = TmpUsrVal .Fields("ScreenId") = TmpScrId '**************************************** ' Old Fields Removed from the table ' .Fields("IsRunning") = True ' .Fields("RecId") = TmpRecId ' .Fields("ActionId") = TmpActId '**************************************** .Update End With Call db_reg_User.Close Set db_reg_User = Nothing Exit SubRegister_User_Log_Error: MsgBox Err.Description, vbCriticalEnd SubPublic Sub UnRegister_User_Log(ByVal TmpScrId As String) On Error GoTo UnRegister_User_Log_Error Call update_rec("delete * from OnLineUsers Where SysId=" & SYS_ID & " and UserId=" & whoami & " and ScreenId='" & Replace(TmpScrId, "'", "''") & "'") Exit Sub ' Dim db_unReg_User As ADODB.Recordset ' Set db_unReg_User = New ADODB.Recordset ' 'Call db_unReg_User.Open("Select * from OnLineUsers Where DateT Between #" & Format(Now, "mm/dd/yyyy") & "# and #" & Format(Now, "mm/dd/yyyy") & " 23:59 # and SysId=" & SYS_ID & " and UserId=" & whoami & " and ScreenId='" & replace(TmpScrId,"'","''") & "'", dbconnection, adOpenDynamic, adLockOptimistic) ' Call db_unReg_User.Open("Select * from OnLineUsers Where DateT Between #" & Format(Now, "mm/dd/yyyy") & "# and #" & Format(Now, "mm/dd/yyyy") & " 23:59 # and SysId=" & SYS_ID & " and UserId=" & whoami & " and ScreenId='" & replace(TmpScrId,"'","''") & "'", dbconnection, adOpenDynamic, adLockOptimistic) ' With db_unReg_User ' If Not .EOF Then ' .Delete (adAffectCurrent) ' End If ' End With ' Call db_unReg_User.Close ' Set db_unReg_User = Nothing ' Exit SubUnRegister_User_Log_Error: MsgBox Err.Description, vbCriticalEnd SubPublic Sub Clear_Scr_Log_For_SysId() 'This one clear all logs for that particular system id while open or Close the application On Error GoTo Clear_Scr_Log_For_SysId_Error Call update_rec("delete * from OnLineUsers Where SysId=" & SYS_ID) Exit Sub ' Dim db_unReg_SysId As ADODB.Recordset ' Set db_unReg_SysId = New ADODB.Recordset ' 'Call db_unReg_SysId.Open("Select * from OnLineUsers Where DateT Between #" & Format(Now, "mm/dd/yyyy") & "# and #" & Format(Now, "mm/dd/yyyy") & " 23:59 # and SysId=" & SYS_ID & " and UserId=" & whoami & " and ScreenId='" & replace(TmpScrId,"'","''") & "'", dbconnection, adOpenDynamic, adLockOptimistic) ' Call db_unReg_SysId.Open("Select * from OnLineUsers Where SysId=" & SYS_ID, dbconnection, adOpenDynamic, adLockOptimistic) ' With db_unReg_SysId ' If Not .EOF Then ' .Delete (adAffectCurrent) ' End If ' End With ' Call db_unReg_SysId.Close ' Set db_unReg_SysId = Nothing Clear_Scr_Log_For_SysId_Error: MsgBox Err.Description, vbCriticalEnd SubPublic Function Chk_More_Users_In_Screen(ByVal ScrId As String) As Boolean '********************************************************** 'This Function is used for check the current screen, 'Is there more users working in it 'before the save or modify or delete the record '********************************************************** '********************************************************** 'It receives the OnlineUsers.DateT and 'Check with the Other Users in same screen By OnlineUsers.DateT(Where SysIdCurrent SysId) 'The DateT is Greater than or Equal to others, It will show the error message and control back to called place '********************************************************** Dim TmpDateT As String Chk_More_Users_In_Screen = True TmpDateT = Retrieve_Name("Select DateT from OnLineUsers Where ScreenId='" & Replace(ScrId, "'", "''") & "' and SysId=" & SYS_ID & " and UserId=" & whoami) 'If data reterival causes will happen If Trim(TmpDateT) = "" Then MsgBox "Your Log was deleted by the Administrator.Contact Ur Administrator", vbCritical, mdiSSI.msgTxt Chk_More_Users_In_Screen = False 'Exit Function End If Call open_temp_rec("Select * from OnLineUsers Where UserVal>1 and ScreenId='" & Replace(ScrId, "'", "''") & "' and SysId " & SYS_ID) With tmp_Rec If Not .EOF Then While Not .EOF And Chk_More_Users_In_Screen 'Here We check my Date and Time is Greater than Equal to Some other User If Format(TmpDateT, "DD/mm/yyyy HH:MM:SS") >= Format(.Fields("DateT"), "DD/mm/yyyy HH:MM:SS") Then MsgBox "This Screen was already opened by " & vbLf & "User Name : " & Retrieve_Name("Select UserName from User1 Where UserId=" & .Fields("UserId")) & vbLf & "System Name : " & Retrieve_Name("Select SysName from ImpSystems Where SysId=" & .Fields("SysId")) & vbLf & "Date / Time : " & .Fields("DateT") & vbLf & "Ur Screen Log Date / Time : " & TmpDateT, vbCritical, mdiSSI.msgTxt Chk_More_Users_In_Screen = False End If .MoveNext Wend End If End With Call close_temp_rec Exit FunctionChk_More_Users_In_Screen_Error: MsgBox Err.DescriptionEnd FunctionPublic Function Fix_userVal_ReadOnly_if_screen_already_exist(ByVal ScrId As String, ByVal tmpUserVal As Long) As Long '==================================================================== ' USAGE: ' in Multi-user Session, if two users are having save/Modify/Delete ' rights, and if two users trying to use the same screen, the second ' user's user_value(refer the userRights value) will be set to One ' i.e Read-only '==================================================================== On Error GoTo Fix_userVal_ReadOnly_if_screen_already_exist_Err_Handler Fix_userVal_ReadOnly_if_screen_already_exist = tmpUserVal Call open_temp_rec("Select * from OnlineUsers Where UserVal>1 and SysId" & SYS_ID & " and ScreenId='" & Replace(ScrId, "'", "''") & "' Order By DateT") With tmp_Rec If Not .EOF Then MsgBox "This Screen was already opened by" & vbLf & "User Name : " & Retrieve_Name("Select UserName from User1 Where UserId=" &