delphi4arab منتديات دلفي للعرب
كيف منع البرنامج من التجمد اثناء البحث (قاعدة البيانات تقريبا 800 ميغا) - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : كيف منع البرنامج من التجمد اثناء البحث (قاعدة البيانات تقريبا 800 ميغا) (/showthread.php?tid=6206)

الصفحات: 1 2


كيف منع البرنامج من التجمد اثناء البحث (قاعدة البيانات تقريبا 800 ميغا) - zouzou05 - 22-05-2014

بسم الله الرحمن الرحيم
السلام عليك ورحمة الله وبركاته ..
هل يمكن منع البرنامج من التجمد اثناء البحث (قاعدة البيانات تقريبا 800 ميغا)
والسلام عليكم


كيف منع البرنامج من التجمد اثناء البحث (قاعدة البيانات تقريبا 800 ميغا) - Houdini - 24-05-2014

اجل اجعل عملية بحث في ثريد منفصل
راقب مدة اشتغال ثريد ادا زادت عند وقت معين عشر ثواني - دقيقة timeout ولو تنتهي من بحث نبه مستخدم و اغلق ثريد لينتهي بحث


كيف منع البرنامج من التجمد اثناء البحث (قاعدة البيانات تقريبا 800 ميغا) - zouzou05 - 24-05-2014

شكرا لك أخي هوديني ممكن مثال
لأني لم أتعامل بالثريد من قبل


كيف منع البرنامج من التجمد اثناء البحث (قاعدة البيانات تقريبا 800 ميغا) - Houdini - 24-05-2014

يمكنك العثور على عدة امثله في نت ان استعمال ثريد فقط استثناء لو كنت تستعمل ado connection لقواعد بيانات فلا يمكن ان تشارك مجموعة من ثريد نفس اتصال
يجب لكا اتصال ثريد منفصل
كود :
TADOSQLThread = class(TThread) private FADOQ: TADOQuery; // Internal query FSQL: string; // SQL To execute FID: integer; // Internal ID public constructor Create(CreateSuspended:Boolean; AConnString:String; ASQL:string; IDThread:integer); destructor Destroy; override; procedure Execute(); override; property ID:integer read FID write FID; property SQL:string read FSQL write FSQL; property ADOQ:TADOQuery read FADOQ write FADOQ; end;
الباني معدل ليناسبنا و يبدوا هكداا
كود :
constructor TADOSQLThread.Create(CreateSuspended:Boolean; AConnString:String; ASQL:string; IDThread:integer); begin inherited Create(CreateSuspended); // ini Self.FreeOnTerminate := False; // Create the Query FADOQ := TAdoquery.Create(nil); // assign connections FADOQ.ConnectionString := AConnString; FADOQ.SQL.Add(ASQL); Self.FID := IDThread; Self.FSQL:= ASQL; end;

تنفيد ثريد بسيط في دالة excu
كود :
procedure TADOSQLThread.Execute(); begin inherited; try // Ejecutar la consulta Self.FADOQ.Open; except // Error al ejecutar ...Error treattement end; end;

لبدء ثريد هكداا
كود :
//crear el Thread th := TADOSQLThread.Create(True, mmConnection.Lines.Text, ASQL, AId); // internal for me (for controled the number of active threads and limete it) inc(numThreads); // evento finalizacion th.OnTerminate := TerminateThread; // Ejecutarlo th.Resume;
قمنا بربط ثريد مع دالة انتهاء TerminateThread لتنبهنا عند انتهاء ثريد
هدا كل ما فس الامر

مثال من stackoverflow.


كيف منع البرنامج من التجمد اثناء البحث (قاعدة البيانات تقريبا 800 ميغا) - محمد عبد العزيز - 25-05-2014

وعليكم اسلام ورحمة الله
إقتباس :هل يمكن منع البرنامج من التجمد اثناء البحث (قاعدة البيانات تقريبا 800 ميغا)
أعد التفكير في تصميم قاعدة البيانات وكيفية استخدام البحث وما له علاقة
نوع قاعدة البيانات / كيفية الاتصال / كيفية البحث، جدول Table /استعلام SQL ، الادلة الفريدة Index



كيف منع البرنامج من التجمد اثناء البحث (قاعدة البيانات تقريبا 800 ميغا) - S.FATEH - 25-05-2014

السلام عليكم او باستخدام مكونات حفظ البيانات في الذاكرة مثل TClientDataSet او KBMTable


كيف منع البرنامج من التجمد اثناء البحث (قاعدة البيانات تقريبا 800 ميغا) - zouzou05 - 25-05-2014

شكرا لك أخي هوديني على المثال ..
سأحاول العمل به علما أني لم أستحدم الثريد من قبل
شكرا لكم اخواني. عبد العزيز . فاتح .
أنا أستعمل قاعدة بيانات أكسس وحجمها كما قلت تقريبا 800 ميغا
تتكون من الاسم اللقب ورقم الهاتف ....
والمعلومات الناتجة بعد البحث تعرض في Dbgrid و Label
فما نصيحتكم
+
وهل يمكن البحث في القاعدة مثل محرر نصوص الوندوز
أي تبحث عن اسم يظهر الناتج و تظغط مرة أخرى ويظهر الاسم المشابه وهكذا
وشكرا لكم مرة أخرى


كيف منع البرنامج من التجمد اثناء البحث (قاعدة البيانات تقريبا 800 ميغا) - محمد عبد العزيز - 27-05-2014

إقتباس :هل يمكن البحث في القاعدة مثل محرر نصوص الوندوز
أي تبحث عن اسم يظهر الناتج و تظغط مرة أخرى ويظهر الاسم المشابه وهكذا
طبعا ممكن.
إقتباس :قاعدة بيانات أكسس وحجمها كما قلت تقريبا 800 ميغا
تتكون من الاسم اللقب ورقم الهاتف ....
كم من سجل ؟


كيف منع البرنامج من التجمد اثناء البحث (قاعدة البيانات تقريبا 800 ميغا) - zouzou05 - 29-05-2014

b.m.abdelaziz كتب :طبعا ممكن.


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


كيف منع البرنامج من التجمد اثناء البحث (قاعدة البيانات تقريبا 800 ميغا) - Lam.Abdeldjalil - 30-05-2014

السلام عليكم

إقتباس :قاعدة البينات تحتوي على مايقارب 18000000
* هل تقوم بجلب كل السجلات ؟
يمكنك تحديد عدد السجلات المجلوبة ( لا أظن أن المستخدم يحتاج 18 مليون سجل دفعة واحدة ، بالعكس تسبب له الصداع :eek: )
* ما مكونات الإتصال ؟ إذا كانت FireDac-AnyDac يمكن تحديد عدد السجلات المجلوبة RowsetSize ، أظن أن Unidac .. لها خاصية مشابهة
كما يمكن تحديدها 'عدد السجلات المجلوبة' يدويا ( برمجيا)
http://delphi4arab.net/forum/showthread.php?tid=8890

بالتوفيق