المشاركات : 22
المواضيع 3
:
: 9
الإنتساب : Jan 2013
بسم الله الرحمن الرحيم
السلام عليك ورحمة الله وبركاته ..
هل يمكن منع البرنامج من التجمد اثناء البحث (قاعدة البيانات تقريبا 800 ميغا)
والسلام عليكم
المشاركات : 183
المواضيع 7
:
: 1
الإنتساب : Sep 2011
اجل اجعل عملية بحث في ثريد منفصل
راقب مدة اشتغال ثريد ادا زادت عند وقت معين عشر ثواني - دقيقة timeout ولو تنتهي من بحث نبه مستخدم و اغلق ثريد لينتهي بحث
.:: مبرمج شوارع ::.
المشاركات : 22
المواضيع 3
:
: 9
الإنتساب : Jan 2013
شكرا لك أخي هوديني ممكن مثال
لأني لم أتعامل بالثريد من قبل
المشاركات : 183
المواضيع 7
:
: 1
الإنتساب : Sep 2011
يمكنك العثور على عدة امثله في نت ان استعمال ثريد فقط استثناء لو كنت تستعمل 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.
.:: مبرمج شوارع ::.
المشاركات : 3,703
المواضيع 101
:
: 579
الإنتساب : Feb 2008
وعليكم اسلام ورحمة الله
إقتباس :هل يمكن منع البرنامج من التجمد اثناء البحث (قاعدة البيانات تقريبا 800 ميغا)
أعد التفكير في تصميم قاعدة البيانات وكيفية استخدام البحث وما له علاقة
نوع قاعدة البيانات / كيفية الاتصال / كيفية البحث، جدول Table /استعلام SQL ، الادلة الفريدة Index
المشاركات : 975
المواضيع 50
:
: 218
الإنتساب : Feb 2008
السلام عليكم او باستخدام مكونات حفظ البيانات في الذاكرة مثل TClientDataSet او KBMTable
و لرب نازلة يضيق لها الفتى ذرعا و عند الله منها المخرج
ضاقت فلما استحكمت حلقاتها فرجت و كنت اضنها لا تفرج
المشاركات : 22
المواضيع 3
:
: 9
الإنتساب : Jan 2013
شكرا لك أخي هوديني على المثال ..
سأحاول العمل به علما أني لم أستحدم الثريد من قبل
شكرا لكم اخواني. عبد العزيز . فاتح .
أنا أستعمل قاعدة بيانات أكسس وحجمها كما قلت تقريبا 800 ميغا
تتكون من الاسم اللقب ورقم الهاتف ....
والمعلومات الناتجة بعد البحث تعرض في Dbgrid و Label
فما نصيحتكم
+
وهل يمكن البحث في القاعدة مثل محرر نصوص الوندوز
أي تبحث عن اسم يظهر الناتج و تظغط مرة أخرى ويظهر الاسم المشابه وهكذا
وشكرا لكم مرة أخرى
المشاركات : 3,703
المواضيع 101
:
: 579
الإنتساب : Feb 2008
إقتباس :هل يمكن البحث في القاعدة مثل محرر نصوص الوندوز
أي تبحث عن اسم يظهر الناتج و تظغط مرة أخرى ويظهر الاسم المشابه وهكذا
طبعا ممكن.
إقتباس :قاعدة بيانات أكسس وحجمها كما قلت تقريبا 800 ميغا
تتكون من الاسم اللقب ورقم الهاتف ....
كم من سجل ؟
المشاركات : 22
المواضيع 3
:
: 9
الإنتساب : Jan 2013
b.m.abdelaziz كتب :طبعا ممكن.
كم من سجل ؟
اذا أمكن كيف لأني لم أجد في النت أي شرح أو حتى تلميح
....
قاعدة البينات تحتوي على مايقارب 18000000
وجدت كتاب عربي يتكلم عن الثريد
و تمكنت بحل مشكل الثقل والحمد لله باستخدام الثريد
المشاركات : 842
المواضيع 49
:
: 65
الإنتساب : Jun 2010
السلام عليكم
إقتباس :قاعدة البينات تحتوي على مايقارب 18000000
* هل تقوم بجلب كل السجلات ؟
يمكنك تحديد عدد السجلات المجلوبة ( لا أظن أن المستخدم يحتاج 18 مليون سجل دفعة واحدة ، بالعكس تسبب له الصداع :eek: )
* ما مكونات الإتصال ؟ إذا كانت FireDac-AnyDac يمكن تحديد عدد السجلات المجلوبة RowsetSize ، أظن أن Unidac .. لها خاصية مشابهة
كما يمكن تحديدها 'عدد السجلات المجلوبة' يدويا ( برمجيا)
http://delphi4arab.net/forum/showthread.php?tid=8890
بالتوفيق