منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

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


حيت أن المشكلة تكمن في أني عندما أقارن التاريخ واليوم من قاعدة البيانات كما هو موضح اعلاه
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 مره بالدتا تايبل والدتا ريدر
تاكد من الصيغة الخاصة بالتارخ عند ارجاعها من قاعدة البيانات ان تكون بنفس الصيغة "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. ");