what wrong in this code it gives me eror="An unhandled exception of type 'System.StackOverflowException' occurred in mscorlib.dll"
Public Function GetFinalTable(ByVal empid As String, ByVal dateStart As DateTime, ByVal dateEnd As DateTime) As DataTable
Dim sqlCon As New SqlConnection(GetConnectionString())
Try
Dim dtAtd As New DataTable()
' attandance record
Dim dtWknd As New DataTable()
' weakend
Dim dtLeave As New DataTable()
' leave record
Dim adp As SqlDataAdapter
adp = New SqlDataAdapter("select distinct at.EmplID ,EmplName,RecDate from HrEmployee hr,AtdRecord at where hr.EmplID = at.EmplID", sqlCon)
adp.Fill(dtAtd)
adp = New SqlDataAdapter("select EmplID,EmplName, WeekendName , RestStr from AtdWeekend ,HrEmployee where AtdWeekend.WeekendID=HrEmployee.WeekendID", sqlCon)
adp.Fill(dtWknd)
adp = New SqlDataAdapter("select distinct atl.EmplID ,EmplName ,ResultType,StDate,EndDate from HrEmployee hr , AtdRecLeave atl where hr.EmplID = atl.EmplID", sqlCon)
adp.Fill(dtLeave)
Dim strWname As String = dtWknd.Rows(0)(3).ToString()
Dim strDay As String = strWname.Substring(0, 1)
Dim strDayTime As String = strWname.Substring(1)
Dim newDay As String = ""
Dim day As Integer = Convert.ToInt32(strDay)
Select Case day
Case 1
strDay = "Monday"
Case 2
strDay = "Tuesday"
Case 3
strDay = "Wednesday"
Case 4
strDay = "Thursday"
Case 5
strDay = "Friday"
Case 6
strDay = "saturday"
Case 7
strDay = "sunday"
Case Else
strDay = ""
End Select
Select Case strDayTime
Case "a"
newDay = strDay & " First Half"
Case "p"
newDay = strDay & " Second Half"
Case Else
newDay = strDay & "Full Day"
End Select
'Final table
Dim dtfinal As New DataTable()
Dim clmId As New DataColumn("Emp Id")
Dim clmName As New DataColumn("Emp Name")
Dim clmDate As New DataColumn("Date")
Dim clmStatus As New DataColumn("Status")
Dim clmReason As New DataColumn("Reason")
dtfinal.Columns.Add(clmId)
dtfinal.Columns.Add(clmName)
dtfinal.Columns.Add(clmDate)
dtfinal.Columns.Add(clmStatus)
dtfinal.Columns.Add(clmReason)
Dim [date] As DateTime = dateStart
While [date] < dateEnd
Dim drAtd As DataRow() = dtAtd.[Select]("RecDate = '& [date].ToString'")
Dim drLeave As DataRow() = dtLeave.[Select]("StDate = '& [date].ToString'")
If [date].DayOfWeek.ToString() = strDay Then
Dim dr As DataRow
dr = dtfinal.NewRow()
dr(0) = dtAtd.Rows(0)(0)
dr(1) = dtAtd.Rows(0)(1)
dr(2) = [date]
dr(3) = "W"
dr(4) = newDay
dtfinal.Rows.Add(dr)
ElseIf drAtd IsNot Nothing AndAlso drAtd.Length > 0 Then
Dim dr As DataRow
dr = dtfinal.NewRow()
dr(0) = dtAtd.Rows(0)(0)
dr(1) = dtAtd.Rows(0)(1)
dr(2) = [date]
dr(3) = "P"
dr(4) = "-"
dtfinal.Rows.Add(dr)
ElseIf drLeave IsNot Nothing AndAlso drLeave.Length > 0 Then
Dim dr As DataRow
dr = dtfinal.NewRow()
dr(0) = dtAtd.Rows(0)(0)
dr(1) = dtAtd.Rows(0)(1)
dr(2) = [date]
dr(3) = "L"
dr(4) = drLeave(0)(2)
dtfinal.Rows.Add(dr)
Else
Dim dr As DataRow
dr = dtfinal.NewRow()
dr(0) = dtAtd.Rows(0)(0)
dr(1) = dtAtd.Rows(0)(1)
dr(2) = [date]
dr(3) = "A"
dr(4) = "No Information"
dtfinal.Rows.Add(dr)
End If
[date].AddDays(1)
End While