تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] محتاج التعديل على الكود backgroundworker mysql progressbar
#1
السلام عليكم ورحمة الله

عندي كود يسحب الداتا من موقعي

طبعا في تاخير خفيف عند السحب وخصوصا اذا كانت المعلومات كبيره

شغلت االكود مع backgroundworker  والحمدالله شغال تمام

بس محتاج اضافه واحده وهيه

progressbar
على ان يعمل ال progressbar لغاية اكمال المعلومات

هذا الكود الاولي

كود :
   Public Sub Carga()
       Dim adapter As New MySqlDataAdapter("select * from cq_dxstation", connection)
       Dim table As New DataTable()
       adapter.Fill(table)
       ComboBox1.DataSource = table
       ComboBox1.ValueMember = "dxcallsign"
       ComboBox1.DisplayMember = "dxcallsign"
   End Sub


   Private Sub BackgroundWorker1_DoWork(sender As Object, e As DoWorkEventArgs) Handles BackgroundWorker1.DoWork
       Carga()
   End Sub

اسحب الداتا في ال ComboBox1


وهذا الكود الثاني


كود :
   Public Sub Gettodatag()
       Dim com As String = String.Format("SELECT id,dati ,time ,mode ,band FROM cq_qso Where dxcallsign like  '{0}' and  cals like  '{1}' order by dati DESC ", Opencontest, Label10.Text)
       Dim Adpt As New MySqlDataAdapter(com, connection)
       Dim ds As New DataSet()
       Adpt.Fill(ds, "cq_qso")

       DataGridView1.DataSource = ds
       DataGridView1.DataMember = "cq_qso"
       DataGridView1.Columns(0).Visible = False
       DataGridView1.Columns(1).HeaderCell.Value = "Date"
       DataGridView1.Columns(1).Width = "100"

       DataGridView1.Columns(2).HeaderCell.Value = "UTC"
       DataGridView1.Columns(2).Width = "100"

       DataGridView1.Columns(3).HeaderCell.Value = "Mode"
       DataGridView1.Columns(3).Width = "100"

       DataGridView1.Columns(4).HeaderCell.Value = "Band"
       DataGridView1.Columns(4).Width = "100"
       DataGridView1.Columns(5).HeaderCell = New CheckHeaderCell
       Label11.Text = DataGridView1.Rows.Count - 0

   End Sub
   Private Sub BackgroundWorker2_DoWork(sender As Object, e As DoWorkEventArgs) Handles BackgroundWorker2.DoWork
       Gettodatag()
   
   End Sub


بس حاولت اضبط اضافه ال progressbar  بس مع الاسف ما ضبط

جزاكم الله خير وشكرا
الرد
تم الشكر بواسطة:
#2
Vb.NET (Visual Basic 2008/2010) : How to use a BackgroundWorker
الرد
تم الشكر بواسطة: dubai.eig , حريف برمجة , حريف برمجة
#3
(21-03-19, 04:24 PM)asemshahen5 كتب : Vb.NET (Visual Basic 2008/2010) : How to use a BackgroundWorker

شكرا لك

من امس كنت ابحث ووصلت لهذه النتيجه

كود :
Private Sub BackgroundWorker1_DoWork(sender As Object, e As DoWorkEventArgs) Handles BackgroundWorker1.DoWork
       Dim adapter As New MySqlDataAdapter("select * from cq_dxstation", connection)
       Dim table As New DataTable()
       adapter.Fill(table)
       BackgroundWorker1.ReportProgress(100)
       Threading.Thread.Sleep(100)
       ComboBox1.DataSource = table
       BackgroundWorker1.ReportProgress(100)
       Threading.Thread.Sleep(100)
   End Sub

   Private Sub BackgroundWorker1_ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
       ProgressBar1.Value = e.ProgressPercentage
       Me.lblStatus.Text = e.ProgressPercentage & " Percent Completed!"
   End Sub

   Private Sub BackgroundWorker1_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
       Me.ProgressBar1.Visible = False

       ComboBox1.ValueMember = "dxcallsign"
       ComboBox1.DisplayMember = "dxcallsign"
       Me.lblStatus.Text = "DONE!"
       Me.Cursor = Cursors.Default
   End Sub


اذا هناك اي غلط او تعديل اتمنى تفيدوني 

وشكرا من جديد للاخ asemshahen5  على الرد الكريم
الرد
تم الشكر بواسطة:
#4
لا شكر على واجب جرب هذا التعديل اما اذا كنت تريد تعبئة داتا غريد فهناك حل آخر حسب ما تريد تعبئته .

PHP كود :
   Private Sub BackgroundWorker1_DoWork(sender As ObjectAs DoWorkEventArgsHandles BackgroundWorker1.DoWork
        Dim adapter 
As New MySqlDataAdapter("select * from cq_dxstation"connection)
 
       Dim table As New DataTable()
 
       adapter.Fill(table)
 
       ProgressBar1.Maximum table.Rows.Count 1
        For i 
0 To table.Rows.Count 1
            ComboBox1
.Items.Add(table.Rows(i)("dxcallsign").ToString)
 
           BackgroundWorker1.ReportProgress(i)
 
       Next
    End Sub
    Private Sub BackgroundWorker1_ProgressChanged
(ByVal sender As ObjectByVal e As System.ComponentModel.ProgressChangedEventArgsHandles BackgroundWorker1.ProgressChanged
        ProgressBar1
.Value e.ProgressPercentage
        lblStatus
.Text e.ProgressPercentage " Percent Completed!"
 
   End Sub
    Private Sub BackgroundWorker1_RunWorkerCompleted
(ByVal sender As ObjectByVal e As System.ComponentModel.RunWorkerCompletedEventArgsHandles BackgroundWorker1.RunWorkerCompleted
        Me
.ProgressBar1.Visible False
        lblStatus
.Text "DONE!"
 
       Cursor Cursors.Default
 
   End Sub 

للداتا غريد استبدل كود تعبئة الكومبو بوكس بهذا الكود طبعا بعد إضافة الاعمدة للجدول :

PHP كود :
Dim ii As Integer 0
        ProgressBar1
.Maximum table.Rows.Count 1
        For Each row 
As DataRow In table.Rows
            DataGridView1
.Rows.Add(row.ItemArray)
 
           ii += 1
            BackgroundWorker1
.ReportProgress(ii)
 
       Next 

و هذا مع الداتاسيت :

PHP كود :
Dim ii As Integer 0
        ProgressBar1
.Maximum DS.Tables("cq_qso").Rows.Count 1
        For Each row 
As DataRow In DS.Tables("cq_qso").Rows
            DataGridView1
.Rows.Add(row.ItemArray)
 
           ii += 1
            BackgroundWorker1
.ReportProgress(ii)
 
       Next 
الرد
#5
(21-03-19, 09:03 PM)asemshahen5 كتب : لا شكر على واجب جرب هذا التعديل اما اذا كنت تريد تعبئة داتا غريد فهناك حل آخر حسب ما تريد تعبئته .

PHP كود :
   Private Sub BackgroundWorker1_DoWork(sender As ObjectAs DoWorkEventArgsHandles BackgroundWorker1.DoWork
        Dim adapter 
As New MySqlDataAdapter("select * from cq_dxstation"connection)
 
       Dim table As New DataTable()
 
       adapter.Fill(table)
 
       ProgressBar1.Maximum table.Rows.Count 1
        For i 
0 To table.Rows.Count 1
            ComboBox1
.Items.Add(table.Rows(i)("dxcallsign").ToString)
 
           BackgroundWorker1.ReportProgress(i)
 
       Next
    End Sub
    Private Sub BackgroundWorker1_ProgressChanged
(ByVal sender As ObjectByVal e As System.ComponentModel.ProgressChangedEventArgsHandles BackgroundWorker1.ProgressChanged
        ProgressBar1
.Value e.ProgressPercentage
        lblStatus
.Text e.ProgressPercentage " Percent Completed!"
 
   End Sub
    Private Sub BackgroundWorker1_RunWorkerCompleted
(ByVal sender As ObjectByVal e As System.ComponentModel.RunWorkerCompletedEventArgsHandles BackgroundWorker1.RunWorkerCompleted
        Me
.ProgressBar1.Visible False
        lblStatus
.Text "DONE!"
 
       Cursor Cursors.Default
 
   End Sub 

للداتا غريد استبدل كود تعبئة الكومبو بوكس بهذا الكود طبعا بعد إضافة الاعمدة للجدول :

PHP كود :
Dim ii As Integer 0
        ProgressBar1
.Maximum table.Rows.Count 1
        For Each row 
As DataRow In table.Rows
            DataGridView1
.Rows.Add(row.ItemArray)
 
           ii += 1
            BackgroundWorker1
.ReportProgress(ii)
 
       Next 

و هذا مع الداتاسيت :

PHP كود :
Dim ii As Integer 0
        ProgressBar1
.Maximum DS.Tables("cq_qso").Rows.Count 1
        For Each row 
As DataRow In DS.Tables("cq_qso").Rows
            DataGridView1
.Rows.Add(row.ItemArray)
 
           ii += 1
            BackgroundWorker1
.ReportProgress(ii)
 
       Next 

تسلم ايدك ضبط معاي وشغال تمام الحمدالله

بارك الله فيك شكرا من جديد

Rolleyes
الرد
تم الشكر بواسطة: asemshahen5
#6
السلام عليكم
dubai.eig
برجاء لو تضع الكود كامل او مثال
لنستفيد منه
الرد
تم الشكر بواسطة: dubai.eig
#7
(02-04-19, 10:11 AM)new_programer كتب : السلام عليكم
dubai.eig
برجاء لو تضع الكود كامل او مثال
لنستفيد منه

وعليكم السلام 

هذا الكود الاول 

كود :
   Private Sub BackgroundWorker1_DoWork(sender As Object, e As DoWorkEventArgs) Handles BackgroundWorker1.DoWork
   
       Dim adapter As New MySqlDataAdapter("select * from cq_dxstation", connection)
       Dim table As New DataTable()
       adapter.Fill(table)
       ProgressBar1.Maximum = table.Rows.Count - 1
       For i = 0 To table.Rows.Count - 1
           ComboBox1.Items.Add(table.Rows(i)("dxcallsign").ToString)
           BackgroundWorker1.ReportProgress(i)
       Next


   End Sub
   Private Sub BackgroundWorker1_ProgressChanged(ByVal sender As Object, ByVal e As ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
       ProgressBar1.Value = e.ProgressPercentage
       lblStatus.Text = e.ProgressPercentage & " Percent Completed!"
   End Sub
   Private Sub BackgroundWorker1_RunWorkerCompleted(ByVal sender As Object, ByVal e As RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
       Me.ProgressBar1.Visible = False
       lblStatus.Text = "DONE!"
       Cursor = Cursors.Default

   End Sub



وهذا الكود الثاني

كود :
  Private Sub BackgroundWorker2_DoWork(sender As Object, e As DoWorkEventArgs) Handles BackgroundWorker2.DoWork

       Using cmd As New MySqlCommand(String.Format("SELECT id,dati FROM cq_qso Where dxcallsign like '{0}' and cals like '{1}' order by dati DESC ", Opencontest, Label10.Text))
           cmd.Connection = connection
           cmd.CommandType = CommandType.Text
           Using sda As New MySqlDataAdapter(cmd)
               sda.Fill(table)
               ProgressBar2.Maximum = table.Rows.Count - 0
               BackgroundWorker2.ReportProgress(table.Rows.Count - 0)
           End Using
       End Using
   End Sub
   Private Sub BackgroundWorker2_ProgressChanged(sender As Object, e As ProgressChangedEventArgs) Handles BackgroundWorker2.ProgressChanged
       ProgressBar2.Value = e.ProgressPercentage
       Me.Label12.Text = e.ProgressPercentage & " Percent Completed!"
   End Sub

   Private Sub BackgroundWorker2_RunWorkerCompleted(sender As Object, e As RunWorkerCompletedEventArgs) Handles BackgroundWorker2.RunWorkerCompleted
       Me.ProgressBar2.Visible = False
       Label12.Text = "DONE!"
       Cursor = Cursors.Default
       For Each row As DataRow In table.Rows

           dgvSelectAll.Rows.Add(row.ItemArray)

           Label11.Text = dgvSelectAll.Rows.Count - 0
           Label11.Text = String.Format("Number of QSO : {0}  ", Label11.Text)
       Next

   End Sub


والحمدالله شغال تمام  Rolleyes
الرد
تم الشكر بواسطة: asemshahen5 , elgokr , new_programer



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


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