تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
الاستعلام لا يعمل مع BackgroundWorker
#21
(10-10-19, 06:52 AM)asemshahen5 كتب : الغ اللوب الخاص بالجمع و المتغيير sum فقط ضع الكود التالي هو سيقوم بالمطلوب و به اسم الليبل سيعبئها تلقائيا :

PHP كود :
       Invoke(Sub() Label20.Text = (From row In DataGridView1.Rows Select CDbl(row.Cells("ActPercent").Value)).Sum().ToString("00,000.00")) 
مثال :
PHP كود :
   Private Sub BackgroundWorker2_DoWork(sender As ObjectAs System.ComponentModel.DoWorkEventArgsHandles BackgroundWorker2.DoWork
        Invoke
(Sub() Label20.Text = (From row In DataGridView1.Rows Select CDbl(row.Cells("ActPercent").Value)).Sum().ToString("00,000.00"))
 
   End Sub 

عفوا اخي لم ينجح معي
وضعت لحضرتك الكود الخاص بحدث ال  DoWork كاملا لعلي اخطات في شيئ



PHP كود :
Private Sub BackgroundWorker1_DoWork(sender As ObjectAs System.ComponentModel.DoWorkEventArgsHandles BackgroundWorker1.DoWork
        If dtPatients
.Tables("Patients").Rows.Count 0 Then
            Invoke
(Sub() ProgressBar1.Visible False)
 
           Exit Sub
        End 
If
 
       Dim ii As Integer 0
        Invoke
(Sub() ProgressBar1.Maximum dtPatients.Tables("Patients").Rows.Count)
 
       Invoke(Sub() ProgressBar1.Visible True)
 
       If dtPatients.Tables("Patients").Rows.Count 0 Then
            Invoke
(Sub() ProgressBar1.Visible False)
 
       End If
 
       Invoke(Sub() DataGridView1.Rows.Clear())
 
       ii 0
        For Each row 
As DataRow In dtPatients.Tables("Patients").Rows
            Invoke
(Sub() DataGridView1.Rows.Add(row.ItemArray))
 
           ii += 1
            BackgroundWorker1
.ReportProgress(ii)
 
           Invoke(Sub() Label10.Text ii)
 
           Application.DoEvents()
 
       Next
        Invoke
(Sub() Label20.Text = (From row In DataGridView1.Rows Select CDbl(row.Cells("ActPercent").Value)).Sum().ToString("00,000.00"))
 
   End Sub 
الرد
تم الشكر بواسطة:
#22
اخي الكريم الكود لايوجد به خطا الخطأ هو في اسم عامود الداتا غريد فيو و ليس العامود الموجود في جدول قاعدة البيانات :

PHP كود :
   Private Sub BackgroundWorker1_DoWork(sender As ObjectAs System.ComponentModel.DoWorkEventArgsHandles BackgroundWorker1.DoWork
        If dtPatients
.Tables("Patients").Rows.Count 0 Then
            Invoke
(Sub() ProgressBar1.Visible False)
 
           Exit Sub
        End 
If
 
       Dim ii As Integer 0
        Invoke
(Sub() ProgressBar1.Maximum dtPatients.Tables("Patients").Rows.Count)
 
       Invoke(Sub() ProgressBar1.Visible True)
 
       Invoke(Sub() DataGridView1.Rows.Clear())
 
       ii 0
        For Each row 
As DataRow In dtPatients.Tables("Patients").Rows
            Invoke
(Sub() DataGridView1.Rows.Add(row.ItemArray))
 
           ii += 1
            BackgroundWorker1
.ReportProgress(ii)
 
           Invoke(Sub() Label10.Text ii)
 
           Application.DoEvents()
 
       Next
        Invoke
(Sub() Label20.Text = (From row In DataGridView1.Rows Select CDbl(row.Cells(0).Value)).Sum().ToString("00,000.00"))
 
   End Sub 

يكفي فقط وضع ترتيبه في الداتا غريد فيو حسب ظهوره العد يبدء من الصفر الى العامود المطلوب مع مراعاة الاعمدة المخفية اي .

   
الرد
تم الشكر بواسطة: Emam emam
#23
(10-10-19, 02:16 PM)asemshahen5 كتب : اخي الكريم الكود لايوجد به خطا الخطأ هو في اسم عامود الداتا غريد فيو و ليس العامود الموجود في جدول قاعدة البيانات :

PHP كود :
   Private Sub BackgroundWorker1_DoWork(sender As ObjectAs System.ComponentModel.DoWorkEventArgsHandles BackgroundWorker1.DoWork
        If dtPatients
.Tables("Patients").Rows.Count 0 Then
            Invoke
(Sub() ProgressBar1.Visible False)
 
           Exit Sub
        End 
If
 
       Dim ii As Integer 0
        Invoke
(Sub() ProgressBar1.Maximum dtPatients.Tables("Patients").Rows.Count)
 
       Invoke(Sub() ProgressBar1.Visible True)
 
       Invoke(Sub() DataGridView1.Rows.Clear())
 
       ii 0
        For Each row 
As DataRow In dtPatients.Tables("Patients").Rows
            Invoke
(Sub() DataGridView1.Rows.Add(row.ItemArray))
 
           ii += 1
            BackgroundWorker1
.ReportProgress(ii)
 
           Invoke(Sub() Label10.Text ii)
 
           Application.DoEvents()
 
       Next
        Invoke
(Sub() Label20.Text = (From row In DataGridView1.Rows Select CDbl(row.Cells(0).Value)).Sum().ToString("00,000.00"))
 
   End Sub 

يكفي فقط وضع ترتيبه في الداتا غريد فيو حسب ظهوره العد يبدء من الصفر الى العامود المطلوب مع مراعاة الاعمدة المخفية اي .

الله يرضيك ويعافيك ويرزقك الخير يارب 
جزاك الله كل خير
فعلا انا كنت بكتب اسم العمود حسب قاعدة البيانات وليس الداتا جريد فيو
الان الحمد لله يعمل بشكل ممتاز 
انا بشكرك جدا علي مجهودك الرائع معي ومع كل اللي في الجروب
الرد
تم الشكر بواسطة: asemshahen5
#24
الحمد الله و الشكر الله و موفقين انشاء الله .
الرد
تم الشكر بواسطة:



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


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم