إشترك

البحث في قواعد البيانات في الدلفي - الجزء الثاني -


بسم الله الرحمان الرحيم
السلام عليكم و رحمة الله تعالى و بركاته اليوم في درس اليوم سنتابع سلسلة دروس " البحث في قواعد البيانات " و اليوم سنتحدث  في الجزء الثاني أيضا عن أهم طرق البحث في قواعد البيانات و سنشرح الأكواد بالتفصيل و نبدأ على بركة الله  :
البحث باستخدام المنهج Lookup
 لا يقوم هذا المنهج بتغير مؤشر الفأرة عند إيجاد القيمة المطلوبة بل يحتفظ بها و يمكن استدعائها متى دعت الحاجة
مثال : قم بإضافة المكونات التالية adotable1 / datasource1 /adoconnection1 / dbgrid1/edit1 / button1   و بعدها قم بربط قاعدة البيانات كما شرحنا في درس سابق و الآن قم بكتابة الكود التالي في حدث onclic  للزر button1  
var LookupResult : Variant;
begin
lookupResult := adotable1.Lookup('N°',strtoint(edit1.Text ),'nom;prénom');
if Not VarIsnull( lookupResult) then
Showmessage(vartostr(lookupresult[0]) + '   ' + vartostr(lookupresult[1]));

شرح الكود :
  ·        أولا قمنا بالتصريح بالمتغير  LookupResult من النوع Variant
  ·        و بعدها قمنا بجعل قيمة المتغير تساوي قيمة البحث المطلوبة . 
  ·         و في هذا الكود يقوم المنهج Lookup بالبحث في adotable1 عن قيمة في حقل الرقم  N° " الرقم هو حقل من الجدول و هو الحقل "
  ·        و قيمة البحث هي النص الموجودة في edit1 
  ·         و قمنا بكتابة التابع strtoint لتحويل ما يوجد في الأداة من نص إلى رقم
  ·         أما الحقلان 'nom;prénom' فهما الحقلان اللذان سيظهر ما بداخلهما يعني إذا كان هناك خمسة أشخاص في الجدول و قمنا بالبحث عن صاحب الرقم 3 فلن يظهر لنا الرقم 3 بل سيظهر ما يقابله أي اسم و لقب الشخص في حالتنا هذه علمنا أنه يمكن تغير الحقلين 
  ·        و بعدها استخدمنا الجملة الشرطية if  not …then
  ·        و استخدمنا التابع VarIsnull لمعرفة هل المتحول يحتوي على قيمة أو لا
  ·        و إذا وجد القيمة ستظهر لنا في رسالة تحتوي على nom  و هو ذو القيمة 0  و prénom  ذو القيمة 1 
  ·        و استخدمنا أيضا التابع vartostr الذي يحول القيمة Variant إلى نص 
  ·        و أما ما يوجد بين هذين القيمتين  nom    و prénom  في الرسالة هو فراغ + '   ' +
·        الآن هذا هو البرنامج
 1-    صورة النموذج الأول  أثناء التصميم

 2-    صورة البرنامج أثناء التنفيذ

·        و لكن ماذا لو كنت تريد البحث عن الشخص عن طريق لقبه ...قم ببعض التغيرات على الكود السابق ليصبح هكذا
var LookupResult : Variant;
begin
lookupResult := adotable1.Lookup('nom',(edit1.Text ),'n°;prénom');
if Not VarIsnull( lookupResult) then
Showmessage(vartostr(lookupresult[0]) + '   ' + vartostr(lookupresult[1]));

قمنا بحذف التابع strtoint لأنه يحول القيمة من نص إلى رقم و نحن في هذه المرة نريد البحث عن نص لذلك استغنينا عنه و قمنا بتغير أسماء الحقول و في هذا المثال سنكتب لقب الشخص و سيظهر لنا رقمه و اسمه في الرسالة كما تبين الصورة

·        يمكن البحث في حقلين من نفس الجدول باستخدام الكود التالي :
var LookupResult : Variant;
begin
lookupResult := adotable1.Lookup('N°;prénom',VarArrayof
; ([strtoint(edit1.Text),Edit2.text]),'nom;prénom')
if Not VarIsnull( lookupResult) then
Showmessage(vartostr(lookupresult[0])+ '   ' + vartostr(lookupresult[1]));
و هذه هي صورة البرنامج بعد تطبيق الكود عليه و البحث فيه :

ألقاكم في الجزء الثالث من سلسلة " البحث في قواعد البيانات " في الدرس القادم بإذن الله
و السلام عليكم و رحمة الله تعالى و بركاته
  

البحث في قواعد البيانات في الدلفي -الجزء الأول -


بسم الله الرحمان الرحيم
السلام عليكم و رحمة الله تعالى و بركاته في درس اليوم سنتحدث عن كيفية البحث في قواعد البيانات في جزئه الأول  و هذا الموضوع يعتبر من أهم المواضيع لكل من يريد أن يكون مبرمجا فلا يوجد برنامج يعمل على قاعدة بيانات و لا يمكن البحث فيها لذلك فإن الموضوع مهم جدا و انا أعتبه أهم شيء  في البرامج المبنية على قواعد البيانات و لكن لم أجد أي موضوع عربي يتحدث عن الموضوع المهم  و بعد بحث طويل هذه هي النتائج التي توصلت إليها

البحث باستخدام المنهج locate  
إبداء مشروع جديد و قم بربط قاعدة البيانات أكسس مع الدلفي و بعدها أضف  مكون edit1  للنموذج لكتابة الاسم الذي نريد البحث عنه و بعدها قم بكتابة الأمر التالي في حدث التغير الخاص ب :
adoTable1.Locate('prénom',Edit1.Text , [])
شرح الكود :
Adotable1  : هو الجدول الذي نريد البحث فيه ' اطلع على الموضوعالسابق لمعرفة المزيد'
Locate :  هذا هو المنهج الذي استعملناه في البحث داخل قاعدة البيانات و الذي سنشرحه الآن
Prénom  : هو اسم الحقل الذي سنبحث فيه في قاعدة البيانات و يمكن تغيره إلى اسم حقلكم
Edit1.text : هذا هو النص الذي سنبحث عنه وهو النص الموجودة في الأداة و يمكن استبداله
[]  : هنا سنضع خيارات البحث في قاعدة البيانات  و التي سنتطرق إليها بعد لحظات   
الآن قم بتجربة البرنامج و أكتب اسم ما أو قيمة ما موجودة في الحقل الذي سنبحث فيه و هو في حالتنا prénom  و يمكن تغيره إلى الحقل الموجود في قاعدة البيانات الخاصة بك و لن يتحرك مؤشر الفأرة من مكانه إلى إذا كانت القيمة الموجودة في الأداة هي نفسها الموجودة في قاعدة البيانات و إذا كنت تريد أن يتغير مكان مؤشر الفأرة عندما تكون الأحرف الأولى فقط متشابه فتابع معي :
خيار loPartialKey : يسمح لك هذا الخيار بالبحث عن جزء من الكلمة يعني إذا أردت البحث عن احمد تكتب " اح" و سيذهب مؤشر الفأرة نحوه لكن إذا كان هناك أحد إسمه يبدأ ب " اح " و هو قبل احمد فلن يتوجه المؤشر نحو احمد و لتجربة الخير عليك بإضافته إلى مابين  []  في الكود السابق هكذا :
adoTable1.Locate('prénom',Edit1.Text , [loPartialKey])
خيار loCaseInsensitive : هذا الخيار لعدم التميز بين الأحرف الكبيرة و الصغيرة " بالغة الأجنبية فقط " مثلا أضف إلى قاعدة البيانات اسمين باللغة الفرنسية mohammed  و Mohammed  و إذا كان Mohammed  هو الأقل في الترتيب فسيكون هو من يشير إليه المؤشر و لكن إذا كنت تريد البحث في حقلين من نفس قاعدة البيانات " نفس الجدول " تابع معي :
البحث باستخدام منهج  locate  في حقلين أو أكثر : يعتبر هذا الأمر مهما جدا حيث أن هناك جداول تحتوي على عدد كبير "مثلا "من المرضى الذين يحملون نفس الاسم و ربما أيضا نفس اللقب لذلك يصعب التفرقة بين المرضى و لكن لكل مريض ما يميزه  "مثلا" رقم هاتف’مدينة جاء منها ’’ لذلك فإن خاصية البحث في حقلين تكون مهمة جدا و للقيام بالبحث في حقلين ما عليك بتغير الكود السابق إلى :
adotable1.Locate('pname;Nationalty',vararrayof([ edit1.Text,Edit2.text]),[])
 ملاحظة : استعملنا التابع VarArrayOf للفصل بين القيم فقط
نلقاكم في التدوينة التالية و في الجزء التالي باستخدام أساليب جديدة و سنتعلم في الجزء الثالث أفضل أنواع البحث و هو البحث بالتصفية ' الفلترة '

السلام عليكم و رحمة الله تعالى و بركاته



تحميل العدد الأول من مجلة مكونات دلفي


بسم الله الرحمان الرحيم
السلام عليكم و رحمة الله تعالى و بركاته اليوم تم انتهاء من أول عدد من مجلة مكونات دلفي و كنت قد قررت قبل أن أبدء في الكتابة فيها أنها لن تكون مجانية لكن مع مرور الوقت جعلتها مجانية و جميع الأعداد ستكون مثلها لذلك أتمنى أن لا تبخلوا علينا بالرد لكي لا  يضيع المجهود سدى كلمة شكر واحدة تكفي و الآن أترككم مع بعض المعلومات عن العدد الأول :
المؤلف
رحيش رؤوف
عدد الصفحات
40
الخط
خط فلات
مدة الانجاز
5 أيام
عدد الصور في هذا العدد
60 صورة
محتويات المجلة :
تحتوي المجلة في عددها الأول على : شرح كامل عن المكون بالإضافة إلى مثال أو مثالين تطبيقيين و في هذا العدد تم شرح أغلب الخصائص بالشرح الكافي
التحميل
إعلان : لكل الراغبين في الكتابة في هذه المجلة يمكنكم هذا عن طريق الطريقة التي تجدونها في نهاية العدد الأول


و السلام عليكم و رحمة الله تعالى و بركاته 

التعامل مع الملفات النصية بالدلفي




بسم الله الرحمان الرحيم
السلام عليكم و رحمة الله تعالى و بركاته في درس (حصريا )اليوم سنتعلم معا التعامل مع الملفات و لكن في هذا الدرس سنتعامل مع الملفات النصية مثل : *.txt  أو *.ini  ..... و بدون إطالة هذه هي أجزاء درس اليوم :
كيفية إنشاء ملف برمجيا بالدلفي
أكتب الكود التالي في حدث الضغط على button  
var
newFile : TextFile;
begin
System.AssignFile(newFile, 'd:\newfile.txt');
System.Rewrite(newFile);
end;
سنشرح الأمر قليلا : نقوم في البداية بتعريف متغير من نوع نص textfile  و بعدها يبدأ الكود في البداية كتبنا الأمر الذي يحدد لنا مكان الملف الذي سننشئه و السطر الثاني هو تتمة له و هو الذي ينشأ الملف أما إذا كنت تريد أن يتم تحديد اسم الملف و مكان تواجده أثناء تنفيذ البرنامج فما عليك إلا إضافة أداة edit1  ثم تغير الكود السابق إلى :
var
newFile : TextFile;
begin
System.AssignFile(newFile, edit1.text);
System.Rewrite(newFile);
end;
و لكن لتفادي إزعاج المستخدم الذي لا يريد كتابة d:\newfile.txt  يجب أن تقوم بكتابة الكود التالي في حدث onclic  المتعلق ب : button1  
Edit1.text:='d:\'+edit1.text;
و إذا كان يريد الاختيار ما بين الأقراص يمكنك إضافة مكون combobox1  و ووضع أسماء الأقراص على شكل أصناف و تغير الكود إلى :
Edit1.text:=combobx1.text+edit1.text+'.txt';
أما عن الإضافة '*.txt'  فهي لجعل المستخدم يكتب اسم الملف فقط دون الحاجة إلى كتاب اسم الملف + صيغة الملف
كيفية الكتابة داخل الملف الذي تم إنشائه
ما عليك إلا إضافة الكود التالي للأمر السابق :
WriteLn(newFile, 'my text');
System.CloseFile(newFile);
حيث أن هذا الكود يقوم بكتابة  my text داخل الملف و يمكن جعلها النص الموجود في edit1  و هو كما فعلنا في المثال السابق . و الكود الذي يليه هو لغلق الملف بعد الكتابة
كيفية حذف ملف
قم بكتابة الأمر التالي في حدث الضغط على الزر button2
DeleteFile(edit1.text);
حيث نص أداة edit1  هو مسار الملف الذي نريد حذفه علما أنه يجب كتاب صيغة الملف أيضا بالإضافة إلى المسار
كيفية تحديد مسار ملف
قم بكتابة الأمر التالي في حدث الضغط على button1  :
showmessage(ExtractFilePath ('d:\newfile.txt'));
حيث سيظهر لنا مسار الملف في رسالة تظهر عند الضغط على button  و إذا كنت تريد أن تجعل مسار الملف يظهر في مكان آخر مثلا عنوان النموذج أكتب الأمر التالي :
form1.Caption:=(ExtractFilePath(edit1.text));
حيث edit1.text  هو مسار الملف
معرفة اسم الملف / صيغته
أكتب الكود التالي في حدث الضغط على الزر لمعرفة اسم الملف
Form1.caption:=ExtractFileName(edit1.text);
و الكود التالي لمعرفة صيغة الملف
showmessage(ExtractFileExt('d:\t.txt'));
سأكتب دروس جديدة و كثيرة عن التعامل مع الملفات و أتمنى أن يكون هذا الدرس قد نال إعجابكم و أفادكم
السلام عليكم و رحمة الله تعالى و بركاته 
جميع الحقوق محفوظة لــ تعلم دلفي بالعربية 2015 ©