PDA

View Full Version : لود کردن بانک های Access سنگین در چند مرحله



kitcat_m18
شنبه 13 شهریور 1389, 00:11 صبح
با سلام
من در حال نوشتن یه برنامه هستم که قسمتی از کارم بانک access هست.
بانک Access ای که من دارم حدود 5 میلیون رکورد توش ثبت شده، وقتی می خوام این بانک رو تو VB لود کنم ارور Out Of Memory رو به من میده که حقم داره :لبخند: :قهقهه:

برای اینکه اوراکل رو راحت بتونم لود کنم از این کد استفاده کردم:
Adodc1.MaxRecords = 1 و به راحتی هم به اوراکل وصل میشم (1ثانیه) اما تو ACCESS این کد جواب نمیده و میره کل دیتا بیس رو تو DataGrid بارگزاری می کنه که اولا وقت زیادی می گیره

الان دنبال روشی هستم که بتونم توش Access رو تیکه تیکه بارگزاری کنم مثلا بگم اول از رکورد 1 تا 100000 بعد 100001 تا 200000 و الی آخر بانک رو بارگزاری کنم (یعنی صد هزار تا صد هزار تا)
خودم به این نتیجه رسیدم که یه فیلد Auto Number بزارم و بعد با دستور SQL برم توش select بزنم

اما می خواستم ببینم بدون ساخت فیلد Auto Number میشه کاری کرد که بدون Sort کردن بیایم صد هزار تا صد هزار تا از اول بانک الی آخر تو Data Grid لود نیم یا نه؟؟؟

با تشکر و عرض خسته نباشید خدمت همه دوستان:بوس:

butterfly8528
یک شنبه 02 آبان 1389, 03:39 صبح
سلام دوست عزیز .

شما ابتدا تعداد رکورد های جدول رو بدست بیار ( Adodc.Recordset.RecordCount) و بعد 100 هزار 100 هزار رکورد هارو بخون و در یک Grid که وابستگی اجباری به DataSource نداشته باشه ( مانند Component1 VsFlxGrid ) بریز .

موفق باشید .

kitcat_m18
یک شنبه 02 آبان 1389, 18:55 عصر
butterfly8528 گرامی سلام :لبخندساده:

ضمن تشکر از راهنماییتون اگه ممکنه با یه Sample بنده رو بیشتر راهنمایی بفرمایید.
متوجه ی منظور شما زا وابستگی اجباری نشدم.

butterfly8528
دوشنبه 03 آبان 1389, 00:44 صبح
سلام دوست عزیز .


متوجه ی منظور شما زا وابستگی اجباری نشدم.

شما برای نمایش دادن رکورد ها در MicroSoft Data Grid Control حتما باید خاصیت DataSource را مقدار دهی کنید، حالا با هر روشی (Adodc - Adodb و ...)

اما Grid های بهتری مانند Component1 VsFlxGrid قابلیت کار کردن بدون DataSource و کلا DataBase رو نیز دارا هستند .


ضمن تشکر از راهنماییتون اگه ممکنه با یه Sample بنده رو بیشتر راهنمایی بفرمایید.

حالا شما با کجای قضیه مشکل دارید ؟

شما از این Grid استفاده کن و رکورد ها رو دونه به دونه بخون و داخل Grid نمایش بده . بعد با توجه به تعداد رکورد ها از وقفه های کوچک و Doevents استفاده کن.

با این روش شما دیگه به هیچ مشکلی بر نمی خورید .

موفق باشید .

kitcat_m18
دوشنبه 03 آبان 1389, 22:32 عصر
ضمن تشکر از شما از پاسخ خوبتون ممنونم :لبخندساده: