منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
من فضلكم أريد أن أعرف الخطأ الموجود في هذا الكود لانه تعبني جدا ؟!! - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة السي شارب C#.NET (http://vb4arb.com/vb/forumdisplay.php?fid=175)
+--- قسم : قسم اسئلة C#.NET (http://vb4arb.com/vb/forumdisplay.php?fid=176)
+--- الموضوع : من فضلكم أريد أن أعرف الخطأ الموجود في هذا الكود لانه تعبني جدا ؟!! (/showthread.php?tid=31637)



من فضلكم أريد أن أعرف الخطأ الموجود في هذا الكود لانه تعبني جدا ؟!! - alessam4pro - 04-10-19

أقوم بعمل برنامج مدرسي ومن ضمن شاشاته شاشة حضور وانصراف الطلاب كالتالى:


حيت أن المشكلة تكمن في أني عندما أقارن التاريخ واليوم من قاعدة البيانات كما هو موضح اعلاه
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 مره بالدتا تايبل والدتا ريدر



RE: من فضلكم أريد أن أعرف الخطأ الموجود في هذا الكود لانه تعبني جدا ؟!! - Rabeea Qbaha - 04-10-19

تاكد من الصيغة الخاصة بالتارخ عند ارجاعها من قاعدة البيانات ان تكون بنفس الصيغة "yyyy-MMM-dd"

او قم باستحدام المثود الخاصه للمقارنة بين التواريخ :

PHP كود :
// creating object of DateTime 
 
       DateTime date1 = new DateTime(20101 
                                 1
4015); 
 
 
        
// creating object of DateTime 
 
       DateTime date2 = new DateTime(20101
 
                                14014); 
 
 
        
// comparing date1 and date2 
 
       // using Compare() method; 
 
       int value DateTime.Compare(date1date2); 
 
 
        
// checking 
 
       if (value 0
 
           Console.Write("date1 is later than date2. "); 
 
       else if (value 0
 
           Console.Write("date1 is earlier than date2. "); 
 
       else
            Console
.Write("date1 is the same as date2. ");