تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
مثال على استخدام المكون Query في دلفي
#1
السلام عليكم ورحمة الله

انا انوع الدروس هنا وهناك حتى اذا توقفت لعدة ايام نتيجة ظروفي الخاصة تجدون ما تبحثون فيه حتى اعود
ولديكم قسم الاسئلة اسالوا مالا تفهمونه وانا اجيب 

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

ولهذا سوف نستخدم الاداة ADOQuery والتي يمكنك منها استدعاء البيانات حسب جمل الاستعلام الاعتيادية

في المثال المرفق ستجدون مثال لقراءة مجموعة من البيانات والاستعلام عنها بالبحث عن اسم معين كما بالشكل التالي :

   

طبعا يمكنك اسناد جملة الاستعلام اما مرئيا الى المكون او برمجيا 
بالنسبة الى الطريقة المرئية انظر للصورة


   

من الخاصية SQL تكتب جملة الاستعلام المطلوبة فقط وطريقة الربط بالداتا جريد ومكون الاتصال والداتا سورس لعرض البيانات نفس الطريقة التي بالمكون الخاص بالجداول
راجع الدرس الخاص بالجداول من اضافة وتعديل هنا

قبل ان نتطرق الى الطريقة البرمجية ماذا لو كان الاستعلام معقد قليلا وفيه شرط انظر للتالي:

   

جملة شرطية وبنهايتها وضعنا بارامتر والعلامة الدالة عليه هيا نقطتين انها توازي العلامة @ في الدوت نت

اذا اردت ان تضع قيمة البارمتر مرئيا او ان تضبط نوعه وما الى ذلك من نافذة الخصائص نفسها  وكما بالصورة السابقة انظر فوق الخاصية SQL ستجد الخاصية Parameters
انقر عليها لتظهر لك النافذة التالية

   

وهاهو البارمتر يظهر هنا ومن هنا يمكنك تحديد نوعه هل هو نصي ام رقمي وقيمته وما الى ذلك 
يمكنك ترك كل شئ كما هو سيفهم المترجم بحال اسناد او طلب القيمة بنفسه ما هو .

الان الطريقة البرمجية

في حدث تحميل النموذج كتبنا جملة الاتصال بقاعدة البيانات وجملة الاستعلام لمكون الاستعلام وفتحنا الاتصال

كود :
procedure TForm1.FormCreate(Sender: TObject);
var
str:string;
begin

str:=ExtractFileDir(Application.ExeName) + '\db.mdb'  ;
ADOConnection1.Close;
ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=' + str;
ADOConnection1.Connected:=true;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('Select * from Test1') ;
ADOQuery1.Open;

end;



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

كود :
if Edit1.Text ='' then
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('Select * from Test1') ;
ADOQuery1.Open;
end
else
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('Select * from Test1 Where mname=:mname') ;
ADOQuery1.Parameters.ParamByName('mname').Value:=edit1.Text;
ADOQuery1.Open;
end;

او يمكن اختصار الكود قليلا ليصبح كما بالشكل التالي :

كود :
ADOQuery1.Close;
ADOQuery1.SQL.Clear;

if Edit1.Text ='' then
ADOQuery1.SQL.Add('Select * from Test1')
else
begin
ADOQuery1.SQL.Add('Select * from Test1 Where mname=:mname') ;
ADOQuery1.Parameters.ParamByName('mname').Value:=edit1.Text;
end;

ADOQuery1.Open;




لاحظ العبارة التالية

كود :
ADOQuery1.SQL.Clear


هنا نقول له امسح جملة الاستعلام السابفة بحال كانت موجودة واما الخاصية ADD فهي لاظافة جملة الاستعلام

الامر بالغ البساطة .

يمكننا تنفيذ اي نوع من الاستعلامات مثلا هنا نجلب مجموع كامل الاسعار

كود :
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('Select Sum(price) from Test1');
ADOQuery2.Open;
edit2.Text:=ADOQuery2.Fields[0].Value;
ADOQuery2.Close;



او عدد الحقول

كود :
 ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('Select Count(price) from Test1');
ADOQuery2.Open;
Edit3.Text:=ADOQuery2.Fields[0].Value;
ADOQuery2.Close;



لتحميل المثال واي سؤال انا حاضر طبعا لازال الدرس يتبع سوف نكمل كيف نضيف ونحذف ونعدل بواسطة هذا المكون وبالطريقة التقليدية لجمل SQL
بالتوفيق للجميع



.rar   New folder (2).rar (الحجم : 80.39 ك ب / التحميلات : 85)
الرد }}}
تم الشكر بواسطة: asemshahen5
#2
منور صحيت بارك الله فيك.

بالله نبوا دروس على كيفية إنشاء قواعد البيانات وجداولها برمجياً.. فايربيرد وانتربيز على سبيل المثال لا الحصر.
الرد }}}
تم الشكر بواسطة: asemshahen5
#3
إقتباس :منور صحيت بارك الله فيك.

بالله نبوا دروس على كيفية إنشاء قواعد البيانات وجداولها برمجياً.. فايربيرد وانتربيز على سبيل المثال لا الحصر.

طبعا انت لا تقصد سطر الاوامر بالتأكيد مثل

كود :
SQL> CREATE DATABASE 'c:\Test.fdb' USER 'sysdba' PASSWORD 'masterkey';

وانما من داخل البرنامج في الدلفي ، ومكونات الاتصال مثل IBDac التي تتعامل مع قواعد بيانات فايربيرد بها يمكن فعل كل ذلك وغيرها من المكونات وهي كثيرة
وكنت فيما سبق اعددت برنامح لانشاء قواعدبيانات فايربيرد وبرمجته على Lazrus وبمكونات نسيتها الان اعتقد FireDac 
سوف ننشئ لها درس ان شاء الله
الرد }}}
تم الشكر بواسطة: asemshahen5



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


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