تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[C#.NET] حول بطئ عملية نقل البينات الكثيرة من أكسس إلى داتا غريد فيو
#1
Heart 
كود :
OleDbDataAdapter Cmd = new OleDbDataAdapter("select * from TableName", Con);
       DataTable dt = new DataTable();
       Cmd.Fill(dt);
       DataGridView_Name.DataSource = dt;
الأخوة الأعزاء السلام عليكم ورحمة الله وبركاته ...
لقد لاحظت بأن هناك بطء شديد بنقل البيانات من جدول أكسس إلى داتا غريد فيو وخاصة عندما أصبح عدد الصفوف قد تجاوز 3000
أنا أستخدم الكود التالي :

السؤال الأول : هل هذا طبيعي بسبب كثرة البيانات ؟
السؤال الثاني : هل الداتا غريد غير مهئ لذلك ؟ وما البديل ؟
السؤال الثالث : إذا كانت المشكلة بالكود ، هل يوجد كود ينقل البيانات بوقت أقل ؟

أشكر رحابة صدركم  Heart
الرد }}}
تم الشكر بواسطة: justforit , justforit , justforit
#2
(17-11-23, 02:05 PM)بلال بلال كتب :
كود :
OleDbDataAdapter Cmd = new OleDbDataAdapter("select * from TableName", Con);
       DataTable dt = new DataTable();
       Cmd.Fill(dt);
       DataGridView_Name.DataSource = dt;
الأخوة الأعزاء السلام عليكم ورحمة الله وبركاته ...
لقد لاحظت بأن هناك بطء شديد بنقل البيانات من جدول أكسس إلى داتا غريد فيو وخاصة عندما أصبح عدد الصفوف قد تجاوز 3000
أنا أستخدم الكود التالي :

السؤال الأول : هل هذا طبيعي بسبب كثرة البيانات ؟
السؤال الثاني : هل الداتا غريد غير مهئ لذلك ؟ وما البديل ؟
السؤال الثالث : إذا كانت المشكلة بالكود ، هل يوجد كود ينقل البيانات بوقت أقل ؟

أشكر رحابة صدركم  Heart

اهلا اخي حدثت معي المشكله هاذي من قبل السبب في DataGridView اضبط عرض الاعده الخاصه بالشبكه لاتجعلها fill
الرد }}}
تم الشكر بواسطة: justforit
#3
استخدم اكواد التصفح
http://vb4arb.com/vb/thread-45920.html
http://vb4arb.com/vb/thread-24607.html
الرد }}}
تم الشكر بواسطة:
#4
وعليكم السلام ورحمة الله وبركاته

البطء في نقل البيانات يمكن أن يكون نتيجة لعدة عوامل.

فهرسة الجداول:

تأكد من وجود فهارس على الحقول التي تقوم بالبحث عنها في جدول Access. فهرسة الحقول المستخدمة في العمليات البحث تساعد في تسريع استرجاع البيانات.
استخدام استعلام محدد:

في حال كان لديك فقط الحاجة إلى جزء صغير من البيانات، يمكنك استخدام استعلام SQL لتحديد الحقول التي تحتاجها بدلاً من استرجاع جميع البيانات.
تحسين استخدام الذاكرة:

قد تكون المشكلة في استخدام كبير للذاكرة. يمكنك تقليل استخدام الذاكرة باستخدام DataReader بدلاً من DataAdapter في حال كانت البيانات كبيرة.
تحسين الواجهة:

في حال كنت تعمل بالفعل على تحسين استخدام الذاكرة ولا تزال هناك بطء، يمكنك محاولة تحسين عرض البيانات في DataGridView. قد تكون هناك طرق لتحسين عمليات العرض، مثل استخدام تحميل تأجلي أو تخصيص عمليات العرض.
استخدام خيوط منفصلة:

في حال كنت تقوم بتنفيذ العملية في خيط رئيسي، يمكنك استخدام خيط منفصل لتنفيذ العمليات البطيئة لتجنب تعليق واجهة المستخدم.
استخدام البيانات المتزامنة:

في بعض الحالات، قد يكون من المفيد استخدام مكتبات متزامنة لتحسين أداء عمليات البيانات الكبيرة.
الرد }}}
تم الشكر بواسطة: justforit
#5
(17-11-23, 05:44 PM)anasalhashidi كتب :
(17-11-23, 02:05 PM)بلال بلال كتب :
كود :
OleDbDataAdapter Cmd = new OleDbDataAdapter("select * from TableName", Con);
       DataTable dt = new DataTable();
       Cmd.Fill(dt);
       DataGridView_Name.DataSource = dt;
الأخوة الأعزاء السلام عليكم ورحمة الله وبركاته ...
لقد لاحظت بأن هناك بطء شديد بنقل البيانات من جدول أكسس إلى داتا غريد فيو وخاصة عندما أصبح عدد الصفوف قد تجاوز 3000
أنا أستخدم الكود التالي :

السؤال الأول : هل هذا طبيعي بسبب كثرة البيانات ؟
السؤال الثاني : هل الداتا غريد غير مهئ لذلك ؟ وما البديل ؟
السؤال الثالث : إذا كانت المشكلة بالكود ، هل يوجد كود ينقل البيانات بوقت أقل ؟

أشكر رحابة صدركم  Heart

اهلا اخي حدثت معي المشكله هاذي من قبل السبب في DataGridView اضبط عرض الاعده الخاصه بالشبكه لاتجعلها fill
شكرا لك أخي على هذه الملاحظة القيمة وقد ألغيت ال Fill وقد تحسن الوضع قليلا .

(17-11-23, 06:07 PM)justforit كتب : استخدم اكواد التصفح
http://vb4arb.com/vb/thread-45920.html
http://vb4arb.com/vb/thread-24607.html

شكرا لك أخي على هذه الروابط المهمة وسأستفيد منها إن شاء الله
الرد }}}
تم الشكر بواسطة: justforit
#6
(18-11-23, 01:28 AM)sniper2030 كتب : وعليكم السلام ورحمة الله وبركاته

البطء في نقل البيانات يمكن أن يكون نتيجة لعدة عوامل.

فهرسة الجداول:

تأكد من وجود فهارس على الحقول التي تقوم بالبحث عنها في جدول Access. فهرسة الحقول المستخدمة في العمليات البحث تساعد في تسريع استرجاع البيانات.
استخدام استعلام محدد:

في حال كان لديك فقط الحاجة إلى جزء صغير من البيانات، يمكنك استخدام استعلام SQL لتحديد الحقول التي تحتاجها بدلاً من استرجاع جميع البيانات.
تحسين استخدام الذاكرة:

قد تكون المشكلة في استخدام كبير للذاكرة. يمكنك تقليل استخدام الذاكرة باستخدام DataReader بدلاً من DataAdapter في حال كانت البيانات كبيرة.
تحسين الواجهة:

في حال كنت تعمل بالفعل على تحسين استخدام الذاكرة ولا تزال هناك بطء، يمكنك محاولة تحسين عرض البيانات في DataGridView. قد تكون هناك طرق لتحسين عمليات العرض، مثل استخدام تحميل تأجلي أو تخصيص عمليات العرض.
استخدام خيوط منفصلة:

في حال كنت تقوم بتنفيذ العملية في خيط رئيسي، يمكنك استخدام خيط منفصل لتنفيذ العمليات البطيئة لتجنب تعليق واجهة المستخدم.
استخدام البيانات المتزامنة:

في بعض الحالات، قد يكون من المفيد استخدام مكتبات متزامنة لتحسين أداء عمليات البيانات الكبيرة.
أخي الكريم لقد فهمت أول نقطتين 
ولكن لم أفهم النقاط التالية :
1- تحميل تأجيلي و تخصيص عمليات العرض
2- إستخدام خيوط منفصلة
3- مكتبات متزامنة

هل من الممكن توضيحها لي لو سمحتم ؟ Heart
الرد }}}
تم الشكر بواسطة: justforit
#7
(18-11-23, 03:25 PM)بلال بلال كتب : أخي الكريم لقد فهمت أول نقطتين 
ولكن لم أفهم النقاط التالية :
1- تحميل تأجيلي و تخصيص عمليات العرض
2- إستخدام خيوط منفصلة
3- مكتبات متزامنة

هل من الممكن توضيحها لي لو سمحتم ؟ Heart

اسمح لي بالمشاركة و ليسمح لي الاخ صاحب المشاركة اللتي اقتبستها بمشاركتك.
ساكتب مااعرفه حول هذا الموضوع:
تحتاج:
كود تصفح البيانات.
استخدام المسارات المتعددة .

ان كنت مبتديء فانصحك بالدورات اللتي تشرح الاساسيات.
مثل قناة 
قواعد البيانات معها VB.NET and Access ربط فيجوال بيسك واكسس
الرد }}}
تم الشكر بواسطة: Taha Okla , Taha Okla
#8
(18-11-23, 05:06 PM)justforit كتب :
(18-11-23, 03:25 PM)بلال بلال كتب : أخي الكريم لقد فهمت أول نقطتين 
ولكن لم أفهم النقاط التالية :
1- تحميل تأجيلي و تخصيص عمليات العرض
2- إستخدام خيوط منفصلة
3- مكتبات متزامنة

هل من الممكن توضيحها لي لو سمحتم ؟ Heart

اسمح لي بالمشاركة و ليسمح لي الاخ صاحب المشاركة اللتي اقتبستها بمشاركتك.
ساكتب مااعرفه حول هذا الموضوع:
تحتاج:
كود تصفح البيانات.
استخدام المسارات المتعددة .

ان كنت مبتديء فانصحك بالدورات اللتي تشرح الاساسيات.
مثل قناة 
قواعد البيانات معها VB.NET and Access ربط فيجوال بيسك واكسس

شكرا لك على مرورك أخي وبارك الله بك ، أنا مبتدئ ولكن قطعت مراحل ممتازة وينقصني الكثير للتعلم ، ولكن كان قصدي أن يشرح لي الأخ أو يوضح لي ما تعني هذه العبارات ، كي أقوم بالعمل عليها ، لأن هناك الكثير من المصطلحات التي يفهمها المبرمجين المحترفين نحن المبتدئين لا نفهمها .
كنت أود أن يوضحها لي بإختصار كي أبحث عن الكودات الخاصة بها ، ولعلها معي وأنا أهملها .
الشكر موصول لكما  Heart
الرد }}}
تم الشكر بواسطة:
#9
(18-11-23, 08:42 PM)بلال بلال كتب : شكرا لك على مرورك أخي وبارك الله بك ، أنا مبتدئ ولكن قطعت مراحل ممتازة وينقصني الكثير للتعلم ، ولكن كان قصدي أن يشرح لي الأخ أو يوضح لي ما تعني هذه العبارات ، كي أقوم بالعمل عليها ، لأن هناك الكثير من المصطلحات التي يفهمها المبرمجين المحترفين نحن المبتدئين لا نفهمها .
كنت أود أن يوضحها لي بإختصار كي أبحث عن الكودات الخاصة بها ، ولعلها معي وأنا أهملها .
الشكر موصول لكما  Heart

اخي الكريم ذكرت المقصود في مشاركته  في مشاركتي .
لو ترفع مثال بسيط نعدل عليه وترى كيف يكون او تكون صياغة الاكواد بنحو يخفف الحمل على الكمبيوتر ويكون عرض البيانات اخف و بنقرات متتالية كل نقرة تعرض كمية بسيطة غير اللتي تم عرضها  الى ان تنتهي الكمية الكلية.
المسارات المتعددة اسمها بالانجليزي MultiThreads
الرد }}}
تم الشكر بواسطة:
#10
(18-11-23, 08:54 PM)justforit كتب :
(18-11-23, 08:42 PM)بلال بلال كتب : شكرا لك على مرورك أخي وبارك الله بك ، أنا مبتدئ ولكن قطعت مراحل ممتازة وينقصني الكثير للتعلم ، ولكن كان قصدي أن يشرح لي الأخ أو يوضح لي ما تعني هذه العبارات ، كي أقوم بالعمل عليها ، لأن هناك الكثير من المصطلحات التي يفهمها المبرمجين المحترفين نحن المبتدئين لا نفهمها .
كنت أود أن يوضحها لي بإختصار كي أبحث عن الكودات الخاصة بها ، ولعلها معي وأنا أهملها .
الشكر موصول لكما  Heart

اخي الكريم ذكرت المقصود في مشاركته  في مشاركتي .
لو ترفع مثال بسيط نعدل عليه وترى كيف يكون او تكون صياغة الاكواد بنحو يخفف الحمل على الكمبيوتر ويكون عرض البيانات اخف و بنقرات متتالية كل نقرة تعرض كمية بسيطة غير اللتي تم عرضها  الى ان تنتهي الكمية الكلية.
المسارات المتعددة اسمها بالانجليزي MultiThreads
أخي الكريم هذا هو الكود الذي أستخدمه وهوي بسيط للغاية ويعمل بشكل ممتاز في نقل البيانات من أكسس إلى داتا غريد فيو ، ولكن عندما تصبح البيانات كثيرة جدا يصبح إستدعاء البيانات أكثر بطأ ، إذا سألتني لماذا أريد أن أستدعي كل البيانات وإستعراضها يمكنني أن أجاوبك بأنني لو أريد أن أستدعي بيانات لشهر واحد فقط  من مبيع مني ماركت فتكون نتيجة المبيعات بالآلاف لذلك أضطر إلى إستدعاء هذه البيانات الضخمة ، مع العلم يمكنني أن أستعمل البحث عن أصناف محددة وتقليل البيانات ولكن هذا ليس المطلوب , الكود هو :
OleDbDataAdapter Cmd = new OleDbDataAdapter("select * from TableName", Con);
       DataTable dt = new DataTable();
       Cmd.Fill(dt);
       DataGridView_Name.DataSource = dt;

ملاحظة : لقد جربت أيضا ربط الداتا غريد فيو بالداتا سيت مباشرة وكانت النتيجة أفضل وأسرع :
this.basicsRequestsTableAdapter.FillBy(this.requestsDataDataSet.BasicsRequests);

ولكن بهذه الطريقة سيظهر لدي مشكلة أخرى وهي إنشاء FillBy لكل نوع بحث ولكل عامود ، ولست ضليعا فيها ، لذا أجد كتابة الكودات أكثر مرونة ولدي القدرة على التركيب متداخل بها .
الرد }}}
تم الشكر بواسطة:



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


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