الاستعلام لا يعمل مع BackgroundWorker - Emam emam - 27-09-19
السلام عليكم اخوتي
عندي استعلام يعمل بشكل جيد عند وضعه في زر
ولكن عند وضعه في ال BackgroundWorker لايعمل
اين الخطأ اخوتي
ارجو ان اجد الحل
وهدا هو الكود المستخدم
PHP كود :
Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork dtEmployee_Table.Clear() daEmployee_Table = New SqlDataAdapter("select * from Employee_Table order by Employee_ID ", connSQL) daEmployee_Table.Fill(dtEmployee_Table) DataGridView1.DataSource = (dtEmployee_Table) With DataGridView1 .RowsDefaultCellStyle.SelectionBackColor = Color.BlueViolet .RowsDefaultCellStyle.SelectionForeColor = Color.White .ColumnHeadersDefaultCellStyle.BackColor = Color.SkyBlue .Columns(0).DefaultCellStyle.BackColor = Color.Azure .DefaultCellStyle.WrapMode = DataGridViewTriState.True .AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells .Columns(0).Visible = False
.Columns(1).Width = 354 .Columns(1).HeaderText = "إسم الموظف"
.Columns(2).Width = 354 .Columns(2).HeaderText = "الوظـيـفـه" .DefaultCellStyle.Font = New Font("Times New Roman", 12, FontStyle.Bold) .ColumnHeadersDefaultCellStyle.Font = New Font("Times New Roman", 12, FontStyle.Bold) .Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter .Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter .Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter .ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter End With
Dim daEM As New SqlDataAdapter Dim dtEM As New DataTable daEM = New SqlDataAdapter("select * from Employee_Table order by Employee_Name ", connSQL) daEM.Fill(dtEM) ComboBox1.DataSource = dtEM ComboBox1.DisplayMember = "Employee_Name"
ComboBox1.Text = ""
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Control.CheckForIllegalCrossThreadCalls = False If Not BackgroundWorker1.IsBusy Then BackgroundWorker1.RunWorkerAsync() End If
End Sub
RE: الاستعلام لا يعمل مع BackgroundWorker - asemshahen5 - 28-09-19
محتاج التعديل على الكود backgroundworker mysql progressbar
[مشروع] مثال للعمل مع الـBackgroundWorker
RE: الاستعلام لا يعمل مع BackgroundWorker - Emam emam - 01-10-19
(28-09-19, 08:48 PM)asemshahen5 كتب : محتاج التعديل على الكود backgroundworker mysql progressbar
[مشروع] مثال للعمل مع الـBackgroundWorker
اشكرك اخي asemshahen5
ولكن اخي بحثت كثيرا علي النت وكل الفيديوهات بتتكلم عن ال Backgroundworker وطريقة عملها مع عداد بيعد من 1 الي 1000 او اكثر
ولكن لا يوجد اي فيديو بيتكلم عن ال Backgroundworker مع الاستعلام
وجربت اكثر من طريقه ولا تكتمل
ارجو من حضرتك او الاخوه الاطلاع والتعديل علي الكود
اكون شاكر جدا وجزاكم الله خيرا
RE: الاستعلام لا يعمل مع BackgroundWorker - asemshahen5 - 01-10-19
PHP كود :
Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork For Each row As DataRow In dtEmployee_Table.Tables(0).Rows DataGridView1.Rows.Add(row.ItemArray) Next End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Control.CheckForIllegalCrossThreadCalls = False dtEmployee_Table.Clear() Dim connSQL = "Data Source=(Local);Initial Catalog=ImportFromExcel;Integrated Security=True" Dim da As New SqlDataAdapter("select * from Full_Tree_Account order by AccountID ", connSQL) da.Fill(dtEmployee_Table) DataGridView1.ColumnCount = dtEmployee_Table.Tables(0).Columns.Count Dim daEM As New SqlDataAdapter("select * from Empty_Tree_Account order by AccountID ", connSQL) Dim dtEM As New DataTable daEM.Fill(dtEM) ComboBox1.DataSource = dtEM ComboBox1.DisplayMember = "AccountNameAR" With DataGridView1 .RowsDefaultCellStyle.SelectionBackColor = Color.BlueViolet .RowsDefaultCellStyle.SelectionForeColor = Color.White .ColumnHeadersDefaultCellStyle.BackColor = Color.SkyBlue .DefaultCellStyle.WrapMode = DataGridViewTriState.True .AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells .DefaultCellStyle.Font = New Font("Times New Roman", 12, FontStyle.Bold) .ColumnHeadersDefaultCellStyle.Font = New Font("Times New Roman", 12, FontStyle.Bold) .ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter .Columns(0).DefaultCellStyle.BackColor = Color.Azure .Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter .Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter .Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter .Columns(1).Width = 354 .Columns(1).HeaderText = "إسم الموظف"
.Columns(2).Width = 354 .Columns(2).HeaderText = "الوظـيـفـه" End With
ComboBox1.Text = "" If Not BackgroundWorker1.IsBusy Then BackgroundWorker1.RunWorkerAsync() End If End Sub
فقط غيير الاستعلام لاسماء جدولك و اعمدتك .
RE: الاستعلام لا يعمل مع BackgroundWorker - Emam emam - 01-10-19
(01-10-19, 05:21 AM)asemshahen5 كتب : PHP كود :
Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork For Each row As DataRow In dtEmployee_Table.Tables(0).Rows DataGridView1.Rows.Add(row.ItemArray) Next End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Control.CheckForIllegalCrossThreadCalls = False dtEmployee_Table.Clear() Dim connSQL = "Data Source=(Local);Initial Catalog=ImportFromExcel;Integrated Security=True" Dim da As New SqlDataAdapter("select * from Full_Tree_Account order by AccountID ", connSQL) da.Fill(dtEmployee_Table) DataGridView1.ColumnCount = dtEmployee_Table.Tables(0).Columns.Count Dim daEM As New SqlDataAdapter("select * from Empty_Tree_Account order by AccountID ", connSQL) Dim dtEM As New DataTable daEM.Fill(dtEM) ComboBox1.DataSource = dtEM ComboBox1.DisplayMember = "AccountNameAR" With DataGridView1 .RowsDefaultCellStyle.SelectionBackColor = Color.BlueViolet .RowsDefaultCellStyle.SelectionForeColor = Color.White .ColumnHeadersDefaultCellStyle.BackColor = Color.SkyBlue .DefaultCellStyle.WrapMode = DataGridViewTriState.True .AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells .DefaultCellStyle.Font = New Font("Times New Roman", 12, FontStyle.Bold) .ColumnHeadersDefaultCellStyle.Font = New Font("Times New Roman", 12, FontStyle.Bold) .ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter .Columns(0).DefaultCellStyle.BackColor = Color.Azure .Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter .Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter .Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter .Columns(1).Width = 354 .Columns(1).HeaderText = "إسم الموظف"
.Columns(2).Width = 354 .Columns(2).HeaderText = "الوظـيـفـه" End With
ComboBox1.Text = "" If Not BackgroundWorker1.IsBusy Then BackgroundWorker1.RunWorkerAsync() End If End Sub
فقط غيير الاستعلام لاسماء جدولك و اعمدتك .
جزاك الله خير الجزاء اخي علي اهتمامك ومساعدتك
الكود يعمل تمام الحمد لله بفضل الله ثم مساعدتك اخي
ولكن هناك مشكله بسيطه وهي
عندما اضغط علي الزر لاول مره يقوم بتحميل البيانات ولكن عند الضغط عليه مره اخري يقوم بتحمسل البيانات مره اخري بدون تفريغ البيانات القديمه
والبرنامج يقف للحظات بسيطه قبل التحميل
فما الحل؟
وهدا هو الكود
PHP كود :
Dim dtEmployee_Table As New DataSet Dim daEmployee_Table As New SqlDataAdapter
Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork For Each row As DataRow In dtEmployee_Table.Tables(0).Rows DataGridView1.Rows.Add(row.ItemArray) Next End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Control.CheckForIllegalCrossThreadCalls = False dtEmployee_Table.Clear() daEmployee_Table = New SqlDataAdapter("select * from Employee_Table order by Employee_ID ", connSQL) daEmployee_Table.Fill(dtEmployee_Table) DataGridView1.ColumnCount = dtEmployee_Table.Tables(0).Columns.Count With DataGridView1 .RowsDefaultCellStyle.SelectionBackColor = Color.BlueViolet .RowsDefaultCellStyle.SelectionForeColor = Color.White .ColumnHeadersDefaultCellStyle.BackColor = Color.SkyBlue .DefaultCellStyle.WrapMode = DataGridViewTriState.True .AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells .DefaultCellStyle.Font = New Font("Times New Roman", 12, FontStyle.Bold) .ColumnHeadersDefaultCellStyle.Font = New Font("Times New Roman", 12, FontStyle.Bold) .ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter .Columns(0).DefaultCellStyle.BackColor = Color.Azure .Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter .Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter .Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter .Columns(1).Width = 354 .Columns(1).HeaderText = "إسم الموظف"
.Columns(2).Width = 354 .Columns(2).HeaderText = "الوظـيـفـه" End With
Dim dtEM As New DataTable Dim daEM As New SqlDataAdapter("select * from Employee_Table order by Employee_Name ", connSQL) daEM.Fill(dtEM) ComboBox1.DataSource = dtEM ComboBox1.DisplayMember = "Employee_Name"
ComboBox1.Text = "" If Not BackgroundWorker1.IsBusy Then BackgroundWorker1.RunWorkerAsync() End If
End Sub
RE: الاستعلام لا يعمل مع BackgroundWorker - asemshahen5 - 01-10-19
استبدل هذا :
PHP كود :
Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork For Each row As DataRow In dtEmployee_Table.Tables(0).Rows DataGridView1.Rows.Add(row.ItemArray) Next End Sub
بهذا :
PHP كود :
Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork DataGridView1.Rows.Clear() For Each row As DataRow In dtEmployee_Table.Tables(0).Rows DataGridView1.Rows.Add(row.ItemArray) Next End Sub
يعني أضف هذا السطر قبل تعبئة الجدول :
PHP كود :
DataGridView1.Rows.Clear()
RE: الاستعلام لا يعمل مع BackgroundWorker - Emam emam - 01-10-19
(01-10-19, 09:23 PM)asemshahen5 كتب : استبدل هذا :
PHP كود :
Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork For Each row As DataRow In dtEmployee_Table.Tables(0).Rows DataGridView1.Rows.Add(row.ItemArray) Next End Sub
بهذا :
PHP كود :
Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork DataGridView1.Rows.Clear() For Each row As DataRow In dtEmployee_Table.Tables(0).Rows DataGridView1.Rows.Add(row.ItemArray) Next End Sub
يعني أضف هذا السطر قبل تعبئة الجدول :
PHP كود :
DataGridView1.Rows.Clear()
نعم اخي الكود يعمل الان بشكل جيد جدا
جزاك الله الف خير واسعدك الله في الدارين ورزقك الجنه
ولكن لي طلب اخر وهو اني اريد ان اشغل ال Progress bar .
وسؤال اخير : هل لو عندي اكثر من استعلام يعني 5 استعلامات يتم عرضهم في كومبوبوكس مع 3 استعلامات يتم عرضهم في داتا جريد فيو فهل استخدم
background و Progress bar واحد ليهم كلهم ام استخدم واحد لكل استعلام؟
مع اني محرج منك لاني اتعبتك معي
وجزاكم الله خيرا
RE: الاستعلام لا يعمل مع BackgroundWorker - asemshahen5 - 01-10-19
راجع هذا المقال بخصوص البروغراس بار
بخصوص السؤال الاخير الافضل وضع BackgroundWorker لكل عملية .
لكنك تستطيع استخدامها لاكثر من عملية و إعادة تخصيص البروغراس بار في كل عملية حيث الماكس الخاص به يكون عدد السجلات الموجودة في الداتا تابيل او الداتا سيت كما في المقال الذي في الاعلى .
RE: الاستعلام لا يعمل مع BackgroundWorker - Emam emam - 02-10-19
(01-10-19, 10:32 PM)asemshahen5 كتب : راجع هذا المقال بخصوص البروغراس بار
بخصوص السؤال الاخير الافضل وضع BackgroundWorker لكل عملية .
لكنك تستطيع استخدامها لاكثر من عملية و إعادة تخصيص البروغراس بار في كل عملية حيث الماكس الخاص به يكون عدد السجلات الموجودة في الداتا تابيل او الداتا سيت كما في المقال الذي في الاعلى .
شكرا اخي
طبقت ما هو موجود في المقال ولكن ظهرة عندي مشكله اعتقد في هدا السطر
PHP كود :
ProgressBar1.Maximum = dtEmployee_Table.Tables(0).Rows.Count - 1
المشكله كما في الصوره
[attachment=23077]
RE: الاستعلام لا يعمل مع BackgroundWorker - asemshahen5 - 02-10-19
الغ -1
|