04-10-19, 12:05 AM
أقوم بعمل برنامج مدرسي ومن ضمن شاشاته شاشة حضور وانصراف الطلاب كالتالى:
حيت أن المشكلة تكمن في أني عندما أقارن التاريخ واليوم من قاعدة البيانات كما هو موضح اعلاه
1- التاريخ صندوق التاريخ (DayDate)
2- اليوم صندوق اليوم (DayName)
المشكلة عندما أقارنهم لايعمل الكود الخاص بالمقارنة فانا استعمل الـ datareader في المقارنة
والكود كالتالي:
كود :
Try
'-------------------------الاستعلام عن الحالة او نوع العملية اذا كان خارج الدوام يخرج ولايسجل شئ
If OperType.Text = "خارج الدوام" Or condition.Text = "خارج الدوام" Then
'MessageBox.Show("Time cannot be recorded as time is off...!" & vbCr & "لا يمكن تسجيل الدوام فالوقت خارج الدوام", "منظومة الدمرداش المدرسية", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1)
StudentBracode.Clear()
Exit Sub
Else
'------------------هنا نستعلم على ان الطالب هذا مسجل ام لا
Dim dr As SqlDataReader
SQL = "SELECT * FROM AbsenceRC WHERE MUMTALEEB LIKE '" & StudentBracode.Text & "'"
con = New SqlConnection(cs)
con.Open()
cmd = New SqlCommand(SQL, con)
dr = cmd.ExecuteReader(CommandBehavior.CloseConnection)
If dr.Read = True Then
dat = DayDate.Value.Date.ToString("yyyy-MMM-dd")
dan = DayName.Text
If dat = dr(8) And dan = dr(9) Then
MessageBox.Show("Time Has be recorded for this Student...!" & vbCr & "هذا الطالب مسجل من قبل", "منظومة الدمرداش المدرسية", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1)
StudentBracode.Clear()
ButNew_Click(sender, e)
Exit Sub
End If
Else
'-------------------------------------هنا نعبئ الحقول بالبيانات من جدول الطلاب
con = New SqlConnection(cs)
Dim DT_ As New DataTable
Dim DA_ As New SqlClient.SqlDataAdapter("SELECT * FROM student WHERE MUMTALEEB LIKE '" & StudentBracode.Text & "'", con)
DA_.Fill(DT_)
If DT_.Rows.Count > 0 Then
Dim DR_ = DT_.Rows(0)
SBarcode.Text = DR_!MUMTALEEB
SName.Text = DR_!StudentName
SIDN.Text = DR_!Sgl
EdLevel.Text = DR_!Educationallevel
SClass.Text = DR_!section
End If
'----------------------------------------------
If condition.Text = "جاري الحضور" Then
SState.Text = "حضور"
ElseIf condition.Text = "غياب" Then
SState.Text = "غياب"
ElseIf condition.Text = "إنصراف" Then
SState.Text = "إنصراف"
End If
'----------------------------------------------------هنا يستعلم عن وجود بيانات في صناديق النصوص ام لا
If SBarcode.Text = "" Or SName.Text = "" Or SIDN.Text = "" Or EdLevel.Text = "" Then
'MessageBox.Show("Attendees cannot be registered...NO Data!" & vbCr & "لا يمكن تسجيل الدوام لا يوجد بيانات", "منظومة الدمرداش المدرسية", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1)
StudentBracode.Clear()
Exit Sub
Else
con = New SqlConnection(cs)
con.Open()
Dim cb As String = "insert into AbsenceRC (MUMTALEEB,StudentName,Sgl,Educationallevel,section,Delay,hala,DayName,OpType,Period,condition,DayDate) VALUES (@d1,@d2,@d3,@d4,@d5,@d6,@d7,@d8,@d9,@d10,@d11,@d12)"
cmd = New SqlCommand(cb)
cmd.Connection = con
cmd.Parameters.AddWithValue("@d1", SBarcode.Text)
cmd.Parameters.AddWithValue("@d2", SName.Text)
cmd.Parameters.AddWithValue("@d3", SIDN.Text)
cmd.Parameters.AddWithValue("@d4", EdLevel.Text)
cmd.Parameters.AddWithValue("@d5", SClass.Text)
cmd.Parameters.AddWithValue("@d6", "0")
cmd.Parameters.AddWithValue("@d7", condition.Text)
cmd.Parameters.AddWithValue("@d8", DayName.Text)
cmd.Parameters.AddWithValue("@d9", OperType.Text)
cmd.Parameters.AddWithValue("@d10", txtPeriod.Text)
cmd.Parameters.AddWithValue("@d11", condition.Text)
cmd.Parameters.AddWithValue("@d12", DayDate.Value)
cmd.ExecuteNonQuery()
StudentBracode.Clear()
ButNew_Click(sender, e)
Getdata()
End If
End If
End If
Catch ex As Exception
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
أفيدوني لان الكود غيرتة حوالي 30 مره بالدتا تايبل والدتا ريدر