امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
اجرای سنگین برنامه
نویسنده پیام
HSN_Misaghian آفلاین
تازه وارد

ارسال‌ها: 23
موضوع‌ها: 10
تاریخ عضویت: آبان ۱۳۸۴

تشکرها : 0
( 1 تشکر در 0 ارسال )
ارسال: #1
اجرای سنگین برنامه
سلام خدمت اساتید محترم
آقا من یه برنامه حسابداری نوشتم که از بانک access و datagride استفاده کردم.
حجم اطلاعات بالاست اما یه برنامه حسابداری با همون حجم اطلاعات حتی بیشتر از اون چیزی که من دارم توی برنامه استفاده میکنم، خیلی سریعتر از برنامه من اجرا میشه.
کلا برنامه خیلی سنگینه و هنگام وارد کردن اطلاعات توی datagride و خوندن اطلاعات از بانک اطلاعاتی برنامه خیلی سنگین اجرا میشه.
dotnetframework 4 رو هم نصب کردم اما تاثیری نداشته.
اگه کسی از آقایون میدونه من چیکار باید کنم که برنامه سبک و روان اجرا بشه به من بگه.
یه سوال دیگه معادل دستور do events در vb 6 رو توی vb 2010 میخوام.
مرسی از همه
۰۸-شهریور-۱۳۸۹, ۱۸:۲۰:۰۱
ارسال‌ها
پاسخ
HSN_Misaghian آفلاین
تازه وارد

ارسال‌ها: 23
موضوع‌ها: 10
تاریخ عضویت: آبان ۱۳۸۴

تشکرها : 0
( 1 تشکر در 0 ارسال )
ارسال: #2
RE: اجرای سنگین برنامه
آقا یه نفر نیست به ما کمک کنه؟ConfusedConfusedWhistleWhistleAmazeSadAmazeAmazeAmaze
۱۳-شهریور-۱۳۸۹, ۱۰:۴۳:۲۹
ارسال‌ها
پاسخ
HSN_Misaghian آفلاین
تازه وارد

ارسال‌ها: 23
موضوع‌ها: 10
تاریخ عضویت: آبان ۱۳۸۴

تشکرها : 0
( 1 تشکر در 0 ارسال )
ارسال: #3
RE: اجرای سنگین برنامه
دست همگی درد نکنه
انتقاد من از سایتتون : من عضو قدیمی سایت ایران ویج هستم، قبلا از این سایت خیلی راضی بودم اما متاسفانه دو هفتست یه سوال پرسیدم اما هیچ کدوم از دوستان حتی مدیران انجمن هم هیچ گونه جوابی ندادن.
بهرحال مرسی
۱۴-شهریور-۱۳۸۹, ۱۹:۴۰:۱۷
ارسال‌ها
پاسخ
farhawd آفلاین
تازه وارد

ارسال‌ها: 11
موضوع‌ها: 3
تاریخ عضویت: تير ۱۳۸۹

تشکرها : 4
( 6 تشکر در 3 ارسال )
ارسال: #4
RE: اجرای سنگین برنامه
دليلي نداره همه ي اطلاعات توي يک گريد نمايش داده بشه ، مي توني از صفحه بندي استفاده کني يا مي توني قبل از نمايش اطلاعات ، فقط اطلاعات مورد نياز و فيلتر شده را نمايش بدي
۲۱-دى-۱۳۸۹, ۱۷:۵۷:۱۲
ارسال‌ها
پاسخ
ajlajlajl آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,192
موضوع‌ها: 70
تاریخ عضویت: مهر ۱۳۸۴

تشکرها : 932
( 2618 تشکر در 1020 ارسال )
ارسال: #5
RE: اجرای سنگین برنامه
سلام
شرمنده من این پستو ندیده بودم. با توجه به تاریخش هم فکر نکنم بدرد نویسندش بخوره دیگه.
من تقریبا تا 500000 رکورد رو هم یه جا لود کردم و مشکل خاصی نداشت. فقط یه کم تاخیر داشت برای رکورد های آخر.
ولی بازم برای روون کردنش و اینا
برای لود حجم زیاد اطلاعات توی DataGridView میشه از خصوصیت VirtualMode اون استفاده کرد. وقتی این خصوصیت رو true کنید این حالت فعال میشه. در این حالت نباید اطلاعات رو به DataSource داد. بلکه باید دستی و با درخواست DataGridView اطلاعات رو به اون بدید. DataGridView یه سری رویداد داره که با Needed تموم میشه اسمشون، اینا برای این حالتن. هر وقت که چیزی نیاز بود درخواست میدن و شما باید کارشو بکنید. مثلا CellValueNeeded برای گرفتن اطلاعات و نمایش اونه.
برای نمونه. دنبال عنوان "How to: Implement Virtual Mode in the Windows Forms DataGridView Control" توی MSDN بگردید.
خب در این حالت دیگه لود اطلاعات دست خودتونه و میتونید یه جوری لود کنید که سرعت بره بالا. مثلا من یه برنامه کوچیک نوشتم که اطلاعات رو در صورت نیاز 1000 تا 1000 تا لود میکنه. که سرعتش هم تست کردم بهتر از خودش بود.
کد:
Public Class Form1
Dim cnn As New SQLite.SQLiteConnection("data source=""C:\Documents and Settings\ajlajlajl\My Documents\atest.db""")
Dim dt As New DataTable, tsize As Integer

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim da As New SQLite.SQLiteDataAdapter("select count(id) from test1", cnn)
da.Fill(dt)
tsize = dt(0)(0)
dt = New DataTable
DataGridView1.Columns.Add("id", "ID")
DataGridView1.Columns.Add("name", "Name")
DataGridView1.Columns.Add("mark", "Mark")
Me.DataGridView1.RowCount = tsize
da = New SQLite.SQLiteDataAdapter("select * from test1 limit 0,1000", cnn)
da.Fill(dt)
pos = 0
End Sub
Dim pos As Integer
Private Sub dataGridView1_CellValueNeeded(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellValueEventArgs) Handles DataGridView1.CellValueNeeded
If e.RowIndex < pos Or e.RowIndex >= pos + 1000 Then
pos = e.RowIndex - 500
If pos < 0 Then pos = 0
If pos >= tsize - 1000 Then pos = tsize - 1000
Dim da As New SQLite.SQLiteDataAdapter("select * from test1 limit " + pos.ToString + ",1000", cnn)
dt = New DataTable
da.Fill(dt)
End If

e.Value = dt(e.RowIndex - pos)(e.ColumnIndex)
End Sub
End Class

میزان رای دشمن است!
[تصویر:  cff100.png]
۲۳-دى-۱۳۸۹, ۱۷:۴۰:۱۹
وب سایت ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  [سوال] اجرای دستورات cmd در Textbox و نمایش خروجی آن در Textbox دیگر Rain_Saeid 1 3,126 ۰۳-آبان-۱۳۹۲, ۲۰:۱۸:۴۷
آخرین ارسال: Rain_Saeid
  اجرای برنامه استفاده شده با sql server x7337x 4 5,593 ۱۱-فروردین-۱۳۹۰, ۱۳:۲۰:۲۲
آخرین ارسال: x7337x
  اجرای برنامه همزمان با ورود به ویندوز x7337x 3 4,060 ۱۲-مرداد-۱۳۸۹, ۱۴:۴۶:۱۱
آخرین ارسال: far_222000
at اجرای مجدد برنامه x7337x 2 2,539 ۳۱-مرداد-۱۳۸۸, ۲۰:۰۹:۴۲
آخرین ارسال: x7337x
  مشکل در اجرای برنامه koorosh2004 0 2,296 ۱۸-فروردین-۱۳۸۸, ۱۷:۳۳:۳۳
آخرین ارسال: koorosh2004
  ایجاد وقفه بین اجرای دو خط کد SayyedAli 2 6,369 ۰۴-فروردین-۱۳۸۸, ۱۱:۴۰:۴۱
آخرین ارسال: SayyedAli

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS