PDA

View Full Version : حذف اطلاعات ذخیره شده در همه ی جداول بانک همزمان با Progressbar



farhad85
پنج شنبه 23 بهمن 1393, 22:29 عصر
با عرض سلام خدمت همه ی دوستان عزیز


من داخل بانکم 10 تا جدول دارم که 9تای آنها توسط فیلد کدملی زیر مجموعه جدول مشخصات شده اند بطوریکه اگر یک رکورد مثلا با کد ملی1234567890 در جدول مشخصات را حذف نمایم در مابقی جداول چنانچه رکوردی با این کدملی وجود داشته باشد نبز خذف خواهند شد.حال اگر این اطلاعات زیاد باشند طبیعتا در مدت زمان خاصی کلیه اطلاعات حذف خواهتد شد و ممکن است که کمی بطول بیاتجامد
حالا من میخوام با استفاده از یک Progressbar این مدت زمان را کنترل کنم که با اتمام خذفیات Progressbar کامل پر شده و یک پیغام مبتنی بر اتمام کار نمایش دهد.
ارهمه ی شما ممنونم

farhad85
جمعه 24 بهمن 1393, 11:50 صبح
دوستان اگه میشه در این مورد راهنمایی بفرمایید.

wolf_majid
جمعه 24 بهمن 1393, 12:31 عصر
اصلاح : آخ ببخشید من فکر کردم این توی بخش C#‎ پرسیده شده (مثال رو با C#‎ نوشتم :D)

از Backgoround worker کمک بگیرید
زمانیکه یکی از عملیات حذفتون انجام شد Progress Bar رو به پیش ببرید
مثال :
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
for (int i = 0; i < 100; i++)
{
//انجام عملیات مورد نظر
System.Threading.Thread.Sleep(50);
backgroundWorker1.ReportProgress(i+1);
}
}

private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
progressBar1.Text = e.ProgressPercentage.ToString();
}

private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
MessageBox.Show("تمام شد");
}
private void button1_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
}

wolf_majid
جمعه 24 بهمن 1393, 15:44 عصر
یه Background Worker روی فرم قرار بدید و خاصیت WorkerReportsProgress را روی true قرار دهید

Public Class Form1

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'در این قسمت اعلام میکنم بکگراند ورکر شروع به کار کند
BackgroundWorker1.RunWorkerAsync()
End Sub

Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
'فرض رو در این میگیریم که شما 100 رکورد را میخواهید ویرایش کنید
Const count As Integer = 100
For i = 0 To count
'در اینجا عملیات مربوط به حذف رو انجام دهید
'این خط مربوط به تست است و نیاز نیست در کد شما باشد
Threading.Thread.Sleep(50)
'اینجا گزارش پیشرفت رو به بکگراند ورکر اعلام کنید
BackgroundWorker1.ReportProgress(i)
Next
End Sub

Private Sub BackgroundWorker1_ProgressChanged(sender As Object, e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
'این قسمت مشخص میکنید با هر مقدار پیشرفت در عملیات چه اتفاقی بیفتد
'من اعلام کرده ام پروگرس بار رو یک واحد جلو ببرد
Dim percent As Int32 = e.ProgressPercentage
ProgressBar1.Value = percent
End Sub

Private Sub BackgroundWorker1_RunWorkerCompleted(sender As Object, e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
'عملیات مربوط به پایان کار رو انجا اعلام کنید
MessageBox.Show("Done")
End Sub
End Class

farhad85
یک شنبه 26 بهمن 1393, 03:03 صبح
سلام این پیغام رو میده

Current thread must be set to single thread apartment (STA) mode before OLE calls can be made. Ensure that your Main function has STAThreadAttribute marked on it.

محمد آشتیانی
دوشنبه 27 بهمن 1393, 14:59 عصر
سلام
بجای استفاده از ProgressBar ، چیزی شبیه به نمونه برنامه زیردرست کن (پست شماره 2 لینک زیر)
http://barnamenevis.org/showthread.php?484878-%D8%AA%D8%A8%D8%AF%D9%8A%D9%84-%D9%83%D8%AF-%D8%B3%D9%8A-%D8%B4%D8%A7%D8%B1%D9%BE-%D8%A8%D9%87-vb-net-%D8%AF%D8%B1-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-%D9%84%D8%B7%D9%81%D8%A7-%D8%B5%D8%A8%D8%B1-%D9%83%D9%86%D9%8A%D8%AF%D8%9F



موفق باشید