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

نسخة كاملة : الاستعلام لا يعمل مع BackgroundWorker
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2 3
(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 
اخي الكريم الكود لايوجد به خطا الخطأ هو في اسم عامود الداتا غريد فيو و ليس العامود الموجود في جدول قاعدة البيانات :

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 

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

[attachment=23159]
(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 

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

الله يرضيك ويعافيك ويرزقك الخير يارب 
جزاك الله كل خير
فعلا انا كنت بكتب اسم العمود حسب قاعدة البيانات وليس الداتا جريد فيو
الان الحمد لله يعمل بشكل ممتاز 
انا بشكرك جدا علي مجهودك الرائع معي ومع كل اللي في الجروب
الحمد لله و الشكر لله و موفقين انشاء الله .
الصفحات : 1 2 3