تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
سبب تكرار رسالة التنبيه
#1
هذا الكود شيبني؛ لا أدري هل أنا لم ألحظ الخطأ الذي وقعت فيه
أم أن الكود يحتاج إلى إعادة صياغة
المشكلة تكمن في تكرار رسالة التنبيـه في حالة عدم وجـود مواد دور ثان
الكود التالي نجح في عدم تكرار الرسالة؛ لكن ليس منطقياً أن تظهر الرسالة مرة واحدة فقط
أنا أريده أن تظهر كلما اخترت مادة الكومبوكس في حالـة ولا يوجد طلبـة لهم دور ثان
الكود يحتاج إلى تعديل
كود :
' استدعاء درجـات مواد الدور التكميلي
    Dim messageShown As Boolean = False
    Private Sub Student_Courses()
        DataGridView1.DataSource = Nothing
        DataGridView1.Rows.Clear()
        DataGridView1.Refresh()
        ' استدع الدرجـات حسب الفصل والقسم الدراسي التابع له وحسب رقم الامتحـان
        Try
            Dim arrListQuery As New ArrayList
            For i As Integer = 0 To Form_main.ListBoxClas.Items.Count - 1
                If Form_main.ListBoxClas.GetSelected(i) Then
                    arrListQuery.Add( _
                        "SELECT TBL_Students.StudentID, TBL_Students.StudentName, TBL_Students.ClassID,TBL_Students.ClassroomID " & _
                        ", TBL_Final1.SemesterID as [رقم الامتحــان]" & _
                        ", TBL_Final1.on" & CombCourses.SelectedIndex + 1 & " as [أعمـال] " & _
                        ", TBL_Final1.to" & CombCourses.SelectedIndex + 1 & " as [امتحـان] " & _
                        ", TBL_Final1.tr" & CombCourses.SelectedIndex + 1 & " as [دور ثان] " & _
                        "FROM TBL_Final1 RIGHT JOIN TBL_Students ON TBL_Final1.StudentID=TBL_Students.StudentID " & _
                        "Where TBL_Final1.ClassID=" & CInt(i + 1).ToString() & " and TBL_Final1.ClassroomID=" & Combroom.SelectedIndex + 1 & " and TBL_Final1.SemesterID=2" & " and TBL_Final1.tr" & CombCourses.SelectedIndex + 1 & " < 50" & " and TBL_Final1.result LIKE 'دور ثان" & "' ")
                End If
            Next
            Dim da As OleDb.OleDbDataAdapter = New OleDbDataAdapter(Nothing, Con)
            Dim ds As New DataSet
            For i As Integer = 0 To arrListQuery.Count - 1
                If Not IsNothing(arrListQuery(i)) Then
                    da.SelectCommand.CommandText = arrListQuery(i).ToString
                    da.Fill(ds, "Student")
                End If
            Next

            If ds.Tables("Student").Rows.Count > 0 Then
                DataGridView1.DataSource = ds.Tables("Student")
                FillDataGrid()
                ' بعد تحميل البيانات، نمر على الصفوف لتحديث الأعمدة5 و 6 و7 و8
                For Each row As DataGridViewRow In DataGridView1.Rows
                    If Not row.IsNewRow Then
                        ' العمود 5
                        If row.Cells(5).Value Is Nothing OrElse IsNullOrWhiteSpace(row.Cells(5).Value.ToString()) OrElse row.Cells(5).Value.ToString() = "0" Then
                            row.Cells(5).Value = 0
                        End If
                        ' العمود 6
                        If row.Cells(6).Value Is Nothing OrElse IsNullOrWhiteSpace(row.Cells(6).Value.ToString()) OrElse row.Cells(6).Value.ToString() = "0" Then
                            row.Cells(6).Value = 0
                        End If
                        ' العمود 7
                        If row.Cells(7).Value Is Nothing OrElse IsNullOrWhiteSpace(row.Cells(7).Value.ToString()) OrElse row.Cells(7).Value.ToString() = "0" Then
                            row.Cells(7).Value = 0
                        End If
                    End If
                Next
                Me.Texttotal.Text = " درجات مـادة" & " " & Me.CombCourses.Text & " - لـ " & Form_main.ListBoxClas.Text & " " & ""
                messageShown = False

            Else
                'If Not messageShown Then
                MessageBox.Show("عفـــواً ... لا يوجــد طلبــة لهم دور ثان   ", "تنبيــه", MessageBoxButtons.OK, MessageBoxIcon.Information)
                messageShown = True
            End If
            End If

        Catch ex As Exception
            ' MessageBox.Show("حدث خطأ أثناء تحميل البيانات: " & ex.Message, "خطأ", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try

    End Sub
إذا طُعِنتَ من الخلفِ فاعلمْ أنك في المقدمةِ
الرد }}}
تم الشكر بواسطة:
#2
أنبته للمتغير . messageShown 
شو الوضع الافتراضي له، 
لما تنتهي من الاجراء عليك أن تعيده للوضع الافتراضي..  يعني في آخر سطر للكود عليك أن تعيده للوضع الافتراضي
عشان في المرة القادة لما تطلب تنفيذ الكود من جديد يرجع يجرب كل الحالات التي قمت بنقاشها ضمن كودك..
عندها ستحل المشكلة..
قال صلى الله عليه وسلم: 
«كلمتان خفيفتان على اللسان 
ثقيلتان في الميزان،حبيبتان إلى الرحمن: 
سبحان الله وبحمده، سبحان الله العظيم».
الرد }}}
#3
بصرحــة قمتُ بجميع الحلول؛ ولكن كلها باءت بالفشل !!! حتى أنني أدخلت المتغير داخل الإجــراء
لا ادري ما هــو الخطأ في جعل الرسالـة تظهر مرتين

السؤال:
لا أعتقد أن الكود يقوم بتشغيل الإجـــــــراء Student_Courses  مرتين عند اختيار المادة.

ولمحاولـة إصـلاح هذه المشكلة، قمتُ بإضافــة متغير لمعرفـة إذا كان الإجراء قيد التشغيل أم لا.
وفي حالة كان الإجــراء قيد التشغيل، فلن يتم تشغيله مرة أخرى حتى ينتهي من المرة الأولى.

Private isRunning As Boolean = False

Private Sub Student_Courses()
   If isRunning Then Exit Sub
   isRunning = True

لكن دون جـدوى !!!
الأساتذة الكرام هل  من حل لها المشكلـة الصغيـرة ؟
ربما أسوي مثالاً لمعرفة السبب
إذا طُعِنتَ من الخلفِ فاعلمْ أنك في المقدمةِ
الرد }}}
تم الشكر بواسطة:
#4
جرب تستخدم الحدث SelectionChangeCommitted للكمبوبكس
الرد }}}
#5
(03-05-25, 09:57 AM)Zuhare كتب : جرب تستخدم الحدث SelectionChangeCommitted للكمبوبكس

فعلاً نجـح الأمــر تمامـاً
لقد حللت لي مشكلة كبيرة أرقتني مدة أسبوع
جربتُ فيها جميـع الأكواد والحلول واللف والدوران؛ ولكن بفضل الله تعالى ثم بمساعدتك القيمـة تم حلَّ الإشكال

فباركــــــــــ الله فيكــــــــ وجزاكـــــــ كلّ خير وفتح عليكـــــــــ فتح العارفين
إذا طُعِنتَ من الخلفِ فاعلمْ أنك في المقدمةِ
الرد }}}
تم الشكر بواسطة: princelovelorn , princelovelorn , princelovelorn


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  لماذا البرنامج يتوقف بدل عرض رسالة الخطأ justforit 0 98 07-12-25, 10:22 AM
آخر رد: justforit
  ارسال رسالة الى تطبيق واتساب nabil.1710 6 3,676 26-04-25, 11:21 AM
آخر رد: hamedi2727
  [سؤال] كارثة بكل المقاييس: رسالة Out Of Memory dr.programming 5 410 26-04-25, 01:37 AM
آخر رد: princelovelorn
  مساعدة في كود عدم تكرار استدعاء نفس السؤال من المصفوفة fireswored1 5 541 10-02-25, 05:11 PM
آخر رد: fireswored1
  عند الضغط على زر Cancel يظهر لي رسالة خطأ F.H.M 11 1,070 25-10-24, 06:39 AM
آخر رد: F.H.M
  هل يوجد كود لعدم تكرار نفس البيانات ببعض الحقول F.H.M 19 877 15-09-24, 06:14 AM
آخر رد: F.H.M
  رسالة تنبيه بوصول الموظف إلى 7 ساعات فأكثر saud1004 0 280 08-09-24, 07:10 PM
آخر رد: saud1004
  تكرار الصفوف في الكريستل ريبورت makky 2 2,458 26-08-24, 01:20 PM
آخر رد: تركي الحلواني
  مشكلة تكرار الصفوف أثناء عرض التقرير Adel27213 1 258 26-08-24, 01:08 PM
آخر رد: تركي الحلواني
  مشكلة تكرار الصفوف أثناء عرض التقرير Adel27213 0 282 26-08-24, 05:18 AM
آخر رد: Adel27213

التنقل السريع :


يقوم بقرائة الموضوع: