Friends I have the following code in vb.net :
Private Sub btnSetGrade_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSetGrade.Click
Dim CollIndex As Integer = 0, TempID As Integer = 0, SaveID As Integer = 0
Dim ColName As String = "", TempIDTotal As String = "", QryGetTot As String = ""
cmdExecute("delete from tbTestHeading")
cmdExecute("insert into tbTestHeading (tempID) values (1)")
Dim dsSession As DataSet = DirectCast(cmdGetData("SELECT DISTINCT [session],class_id FROM testmaster WHERE (Srno IN (SELECT srno FROM testdetail WHERE (stcode =" & txtStudentCode.Text & ") ORDER BY srno)) order by [session]"), DataSet)
Dim sessionID As String = "", classID As String = ""
For i = 0 To dsSession.Tables(0).Rows.Count - 1
sessionID = sessionID & "'" & dsSession.Tables(0).Rows(i)(0) & "',"
classID = classID & dsSession.Tables(0).Rows(i)(1) & ","
Next
sessionID = sessionID.Substring(0, sessionID.Length - 1)
classID = classID.Substring(0, classID.Length - 1)
Dim dsTestName As DataSet = DirectCast(cmdGetData("SELECT DISTINCT testmaster.test, testgrade.testOrder FROM (testmaster INNER JOIN testgrade ON testmaster.test = testgrade.testName) WHERE (testmaster.class_id IN (" & classID & ")) AND (testmaster.[session] IN (" & sessionID & ")) ORDER BY testgrade.testOrder"), DataSet)
If dsTestName.Tables(0).Rows.Count > 0 Then
For iTN = 0 To dsTestName.Tables(0).Rows.Count - 1
CollIndex = CollIndex + 1
cmdExecute("update tbTestHeading set R" & CollIndex & "='" & dsTestName.Tables(0).Rows(iTN)("test") & "' where tempID=1")
QryGetTot = QryGetTot & "R" & CollIndex & ","
Next
QryGetTot = "R" & CollIndex + 2 & "," & QryGetTot
End If
Dim MaxID As Integer = Convert.ToInt32(getMaxID("tempID", "tbTestHeading"))
For iSn = 0 To dsSession.Tables(0).Rows.Count - 1
MaxID = MaxID + 1
Dim dsYear As DataSet = DirectCast(cmdGetData("SELECT startdate,enddate FROM SessionMaster where srno=" & dsSession.Tables(0).Rows(iSn)("session")), DataSet)
Dim StartYear = Year(dsYear.Tables(0).Rows(0)("startdate"))
Dim EndYear = Year(dsYear.Tables(0).Rows(0)("enddate"))
Dim Session = StartYear & "-" & EndYear
cmdExecute("insert into tbTestHeading (tempID,sessionName) values (" & MaxID & ",'" & Session & "')")
SaveID = MaxID
TempIDTotal = TempIDTotal & MaxID & ","
Dim dsSubjectName As DataSet = DirectCast(cmdGetData("SELECT DISTINCT Subject_master.shortName FROM ((testdetail INNER JOIN testmaster ON testdetail.srno = testmaster.Srno) INNER JOIN Subject_master ON testmaster.sub_id = Subject_master.srno) WHERE (testdetail.stcode =" & txtStudentCode.Text & ") AND (testmaster.[session] = '" & dsSession.Tables(0).Rows(iSn)("session") & "') "), DataSet)
For iSubN = 0 To dsSubjectName.Tables(0).Rows.Count - 1
MaxID = MaxID + 1
cmdExecute("insert into tbTestHeading (tempID,subjectName) values (" & MaxID & ",'" & dsSubjectName.Tables(0).Rows(iSubN)("shortName") & "')")
Next
Dim dsMarks As DataSet = DirectCast(cmdGetData("SELECT testdetail.marks, testmaster.test, Subject_master.shortName, testmaster.class_id, testmaster.[section], testdetail.[max] FROM (((testdetail INNER JOIN testmaster ON testdetail.srno = testmaster.Srno) INNER JOIN Subject_master ON testmaster.sub_id = Subject_master.srno) INNER JOIN testgrade ON testmaster.test = testgrade.testName) WHERE (testdetail.stcode = " & txtStudentCode.Text & ") AND (testmaster.[session] = '" & dsSession.Tables(0).Rows(iSn)("session") & "') ORDER BY testgrade.testOrder, Subject_master.srno "), DataSet)
Dim MaxMarks As Integer = 0
Dim dsMax As DataSet = DirectCast(cmdGetData("SELECT DISTINCT testmaster.test, testmaster.[max] FROM (testmaster INNER JOIN testdetail ON testmaster.Srno = testdetail.srno) WHERE (testdetail.stcode =" & txtStudentCode.Text & ") AND (testmaster.[session] = '" & dsSession.Tables(0).Rows(iSn)("session") & "') AND (testmaster.[section] = '" & dsMarks.Tables(0).Rows(0)("section") & "') AND (testmaster.class_id =" & dsMarks.Tables(0).Rows(0)("class_id") & ")"), DataSet)
For iMax = 0 To dsMax.Tables(0).Rows.Count - 1
Try
MaxMarks = MaxMarks + dsMax.Tables(0).Rows(iMax)("max")
Catch ex As Exception
MaxMarks = 0
End Try
Next
For iM = 0 To dsMarks.Tables(0).Rows.Count - 1
Dim dsColumnName As DataSet = DirectCast(cmdGetData("select * from tbTestHeading where tempID=1"), DataSet)
For iCN = 0 To dsColumnName.Tables(0).Columns.Count - 1
If Convert.ToString(dsMarks.Tables(0).Rows(iM)("test")) = Convert.ToString(dsColumnName.Tables(0).Rows(0)(iCN)) Then
ColName = dsColumnName.Tables(0).Columns(iCN).ColumnName
Exit For
End If
Next
Dim Grade As String = ""
Dim gradeMarks As Decimal = 0
If Convert.ToInt32(dsMarks.Tables(0).Rows(iM)("marks")) <> 0 Then
gradeMarks = Convert.ToInt32(dsMarks.Tables(0).Rows(iM)("marks")) * 100 / Convert.ToInt32(Convert.ToInt32(dsMarks.Tables(0).Rows(iM)("max")))
Dim dsGrade As DataSet = DirectCast(cmdGetData("select * from SessionGrade"), DataSet)
For iG = 0 To dsGrade.Tables(0).Rows.Count - 1
If gradeMarks >= dsGrade.Tables(0).Rows(iG)("mf") And gradeMarks <= dsGrade.Tables(0).Rows(iG)("mt") Then
Grade = "\" & dsGrade.Tables(0).Rows(iG)("grade")
Exit For
End If
Next
Else
Grade = ""
End If
Dim qry As String = "update tbTestHeading set " & ColName & "='" & dsMarks.Tables(0).Rows(iM)("marks") & Grade & "' where subjectName='" & dsMarks.Tables(0).Rows(iM)("shortName") & "' and tempID>" & SaveID
cmdExecute(qry)
cmdExecute("update tbTestHeading set R" & CollIndex + 2 & "='" & MaxMarks & "' where subjectName='" & dsMarks.Tables(0).Rows(iM)("shortName") & "' and tempID>" & SaveID)
Next
Next
CollIndex = CollIndex + 1
cmdExecute("update tbTestHeading set R" & CollIndex & "='Total' where tempID=1")
cmdExecute("update tbTestHeading set R" & CollIndex + 1 & "='Percntage' where tempID=1")
TempIDTotal = TempIDTotal.Substring(0, TempIDTotal.Length - 1)
QryGetTot = QryGetTot.Substring(0, QryGetTot.Length - 1)
Dim qryTot As String = "select tempID," & QryGetTot & " FROM tbTestHeading WHERE (NOT (tempID IN (1," & TempIDTotal & ")))"
Dim dsTotal As DataSet = DirectCast(cmdGetData(qryTot), DataSet)
For iTR = 0 To dsTotal.Tables(0).Rows.Count - 1
Dim TotMarks As Decimal = 0
For iTC = 2 To dsTotal.Tables(0).Columns.Count - 1
Dim MarksR As String = Convert.ToString(dsTotal.Tables(0).Rows(iTR)(iTC))
If MarksR <> "" Then
Dim a = MarksR.IndexOf("\")
MarksR = MarksR.Substring(0, a)
Dim marks As Decimal = 0
Try
marks = Convert.ToDecimal(MarksR)
Catch ex As Exception
marks = 0
End Try
TotMarks = TotMarks + marks
End If
Next
cmdExecute("update tbTestHeading set R" & CollIndex & "='" & TotMarks & "' where tempID=" & dsTotal.Tables(0).Rows(iTR)(0))
Dim Avg As Decimal = TotMarks / Convert.ToInt32(dsTotal.Tables(0).Rows(iTR)(1)) * 100
Avg = Math.Round(Avg, 2)
cmdExecute("update tbTestHeading set R" & CollIndex + 1 & "='" & Avg & "' where tempID=" & dsTotal.Tables(0).Rows(iTR)(0))
Next
MsgBox("Success")
End Sub
The problem is that it is taking 21 seconds to run. Is anybody tell me how can I improve the performance of it