لغة البرمجة دالفي /20درس

laoubi_adel

  • Sr. Member
  • ****
    • مشاركة: 333
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
في: أيار 11, 2010, 08:43:05 صباحاً


 المادة : SGBD
الموضوع: SQL
SQL(S :stricture L :language Q :query)   لغة الاستعلامات البنيوية
وهي عبارة عن مجموعة من الاستعلامات المطبقة من اجل البحث عن معطيات في قواعد البيانات
LMD(L: language M: manipulation  D: données)   لغة استغلال البيانات
الصيغة العامة :
Select  attr1,attr2,,,attrn      أسماء الخصائص
From   nom de table     اسم قاعدة البيانات          
Where condition   الشرط                            













مثال1 : إليك قاعدة البيانات التالية : Travailleur (code,nom , prénom ,daten , age , adrs,salaire ,sex)
Code
Nom
Prénom
Daten
Age
Adresse
Salaire
sex
001
Bel hadi
bachir
02/11/1975
35
Rue 48
147000
H
002
Fadli
djamel
12/03/1975
35
Rue12
120000
H
003
ghadbane
doaa
10/07/1980
30
Rue h11
115000
F
004
Zaidi
Kamel
03/06/1976
34
Rue 48
175000
H
005
Laoubi
Adel
07/03/1983
27
Rue somam
175000
H
006
Kouidri
Nourdine
06/07/1981
29
Rue 14
230000
H
007
Sadaoui
doaa
12/12/1975
35
Sidi aiche
70000
F
008
Khebal
Khemissi
10/11/1970
40
Rue ch-ben yattou
195000
H
009
Fadli
Mohamed
02/11/1975
35
Rue ch-ben yattou
230000
H
010
Nekbil
Kamel
10/10/1978
32
Rue 12
275000
H

Nom
Prénom
Bel hadi
bachir
Fadli
djamel
ghadbane
doaa
Zaidi
Kamel
Laoubi
Adel
Kouidri
Nourdine
Sadaoui
doaa
Khebal
Khemissi
Fadli
Mohamed
Nekbil
Kamel













-ما هي أسماء و ألقاب جميع العمال  ؟
 Select  nom ,prénom
 From travailleur

                                                                                                             











ما هي قائمة العمال الذين أجرهم القاعدي اكبر من 195000
Select *
From travailleur
006
Kouidri
Nourdine
06/07/1981
29
Rue 14
230000
H
009
Fadli
Mohamed
02/11/1975
35
Rue ch-ben yattou
230000
H
010
Nekbil
Kamel
10/10/1978
32
Rue 12
275000
H

Where  salaire >195000









أعط أسماء العمال الذين أجرهم القاعدي =7000
Select  prénom
From   travailleur
where  salaire =70000

doaa

أعط القائمة الكاملة لجميع العاملات
Select *
From travailleur
003
ghadbane
doaa
10/07/1980
30
Rue h11
115000
F
007
Sadaoui
doaa
12/12/1975
35
Sidi aiche
70000
F

Where  sex=’f’



ما هو اسم .لقب و عنوان العامل الذي رقمه = 005؟
Select adresse
From. travailleur
Where code =’005’

Code
Nom
Prénom
Adresse
005
Laoubi
Adel
Rue somam

أعط القائمة الاسمية للعمال الذين المولودين قبل بعد تاريخ  :10/07/1980
Select *
From travailleur
Code
Nom
Prénom
Daten
Age
Adresse
Salaire
sex
005
Laoubi
Adel
07/03/1983
27
Rue somam
175000
H
006
Kouidri
Nourdine
06/07/1981
29
Rue 14
230000
H

Where daten >10/07/1980











التعامل   مع      SQL  في دلفي  :

-1 بواسطة برنامج :module de base de données

يسمح لك دلفي بالتعامل مع SQL  وذلك بواسطة احد برامجه الفرعية module de base de données : الذي سبق وان تطرقنا إليه

كيف السبيل إلى ذلك ؟
1-      لتسهيل مهمة التعامل مع SQL لابد من توفر بعض الشروط المهمة ز
1-      وجود ALIAS  
2-      هندسة للقواعد البيانات  تكون منطقية
3-      ......
4-      ......



آلية التنفيذ :
   1- نفذ برنامج                              module de base données
2-      قم بفتح القائمة fichier
3-      اختر الأمر   nouveau/ fiche SQL
تلاحظ ظهور محرر  الأوامر الخاص ب SQL


6

5

4

3

2

1

x









 
x  : شريط المركبات الخاص بمحرر SQL
1- تحديد alias مكان تواجد  قواعد البيانات
2- البحث عن عبارة ة ما في محرر SQL
3-تنفيذ المساءلة SQL
4-  عملية الصق   coller
5-عملية النسخ  copier  
6- عملية القص  couper  




ملاحظة :  لقد سبق وان شرحت آلية إنشاء alias   في module base de données
لتكن   alias     التالية laoubi_adel  و التي تحوي  قاعدة البيانات السابقة –(travailleur)

لابد من تحديد  الـalias   قبل بداية العمل
   




آلية تحديد  alias

1-      انقر على القائمة SQL
2-      اختر الآمر sélectionne un alias
3-      قم بتحديد الــ  alias     التي أنشأتها مسبقا لاحتواء قواعد البيانات فعلى سبيل المثال :laoubi_adel
4-      انقر على ok

أو انقر على المركبة ذات الدلالة (1)  في  الشكل (x)
   لاحظ الرسومات التالية :
بعد تحديد alias  العمل نبدأ في  تحرير المساءلات السابقة














ما هي قائمة جميع العمال ؟


























-ما هي أسماء و ألقاب جميع العمال  ؟

























ما هي قائمة العمال الذين أجرهم القاعدي اكبر من195000؟
 













أعط أسماء العمال الذين أجرهم القاعدي =7000  ؟

أعط القائمة الكاملة لجميع العاملات


ما هو الاسم الكامل و عنوان العامل الذي رقمه  =005 ؟



أعط القائمة الاسمية للعمال الذين المولودين قبل بعد تاريخ  :10/07/1980 ؟


بعض أوامر SQL

الأمر AND
يسمح  لك الأمر السابق بدمج شرطين أو أكثر في علية البحث

مثال :  أعط القائمة الاسمية للعمال الذين سنهم =35 وأجرهم القاعدي يفوق 20000
select *
from travailleur
where age=35  and  salaire >20000























   أعط القائمة الاسمية للعمال الذكور  الذين سنهم =35 و أجرهم القاعدي  اقل من 23000





















الأمر BETWEEN    يسمح لك هذا الأمر بالبحث عن مجموعة من البيانات وفق حصر شرط البحث بين قيمتين
إليك  مثال :
1-      أعط قائمة العمال الذين سنهم يتراوح بين 27و30 سنة
2-      أعط قائمة العاملات اللائي أجرهم القاعدي  محصور بين 175000 و 195000








































الأمر  NOT BETWEEN      يعمل هذا الأمر عكس عمل الأمر السابق حيث يعطيك مجموعة قيم خارج مجال معين سنطبق هذا الاخير على المساءلتين السابقتين

3-      أعط قائمة العمال الذين سنهم يتراوح خارج المجال ( 27...30) سنة
4-      أعط قائمة العاملات اللائي أجرهم القاعدي الغير   محصور بين 175000 و 195000




























 الأمر  LIKE   تسمح التعليمة السابقة بالبحث عن جزء من معلومة  إن صح التعبير.
إليك المثالين التاليين :
1-      ما هي قائمة العمال الذين اسمهم  يبدأ بــ: d؟
2-      ما هي قائمة العمال الذين يبدأ لقبهم بــ:f؟




























3-      ما هي قائمة العمال الذين يبدأ اسمهم بــ:a  وطوله 4؟














ملاحظات : يستعمل الرمز   % )  ( لا يهم عدد الأحرف
              يستعمل   _    (alt.+92)   لتحديد عدد الأحرف

الأمر  COUNT
  لتحديد عدد السجلات الموجود وفق الشرط المطروح
إليك المثال التالي
 ما هو عدد العمال الذين سنهم < 30 سنة؟
  النتيجة تكون 6 أي عدد العمال الذين هم اكبر من سن 30 سنة هم ستة عمال













الدالة   MAX  تسمح لك الدالة السابقة بإعطاء اكبر قيمة في قواعد البيانات وفق شرط معين
أمثلة:
1-      ما هو اكبر اجر قاعدي للعمال؟
2-      ما هو اكبر سن للعمال؟  

















الدالة  MIN  تسمح لك الدالة السابقة بإعطاء اصغر قيمة في قواعد البيانات وفق شرط معين

أمثلة:
1-   ما هو  اصغر اجر قاعدي للعمال؟
2-      ما هو  اصغر سن للعمال؟  













الدالة AVG    تسمح لك هذه الدالة بإعطاء متوسط معدل قيم  -  تقوم الدالة بتقريب القيمة إلى اقرب قيمة صحيحة لكون نوع المتغير age من نوح صحيح  integer
 مثال : ما هو معدل أعمار العمال ؟
     تقوم الدالة بالعملية التاليةage/nbr travailleur                 ∑








الدالة  SUM   تقوم الدالة السابقة بإعطاء مجموع قيم حقل ما
مثال : ما هي قيمة الأجور الموجه للعاملات ؟








الدالة Ordre by  تسمح لك الدالة السابقة بترتيب قيم جدول حسب حقل محدد
مثال : نريد عرض قائمة العمال الذين سنهم أكبر من 30 بحيث يظهر ترتيب الأسماء تصاعديًا














وإذا أردنا عرض قائمة العمال الذين سنهم أكبر من 30 بحيث يظهر ترتيب الأسماء تنازليا ..نستعمل الأمر desc
نريد عرض قائمة العمال الذين سنهم أكبر من 30 بحيث يظهر ترتيب الأسماء ثم الألقاب تصاعديًا



























-2إنشاء وتصميم قواعد البيانات بواسطة أوامر SQL

 يمكن تصميم قواعد البيانات بلمسات برمجية دينامكية  وأكثر سهولة ومرونة من تصميمها باستعمال برنامج متخصص
مفاهيم :
Prymary key : تسمح لك ها ته التعليمة بتحديد المفتاح الأساسي لقاعدة البيانات فبعوض استعمال الرمز (*) لتعين فهرسة البيانات حسب الحقل المحدد في module de base de donnée نستعمل التعليمة السابقة لتحديد الحقول التي يمكن البحث بواسطتها  
الصيغة العامة :
CREATE TABLE "nom de table. extension " nom de champ1 paramètres , nom de champ2 paramètres… nom de champs paramètres
,primary key(noms des champs)


 بعض أنواع المتغيرات :
1-                      CHAR متغير حرفي
2-                      NUMERIC متغير رقمي
3-                      DATE متغير من نوع تاريخ
4-                      TIME  :متغير من نوع وقت

سنحاول تصميم قاعدة البيانات التالية :chauffeur  (N- permis,nom,prénom,daten , adrss ,age ,type_p ,sex.)  

Nom de champ
Type de champ
Taille
index
Num_permis
A :alphabétique      char
6
*
Nom
A :alphabétique      char
20
Prenom
A :alphabétique      char
20
daten
D:date

adress
A :alphabétique      char
30
age
I: numerique → numeric
10:deux hombre
sex
A :alphabétique      char
1
Type_p
A :alphabétique      char
15














CREATE TABLE "chauffeur"
( Num_permis CHAR(6),nom CHAR(15), prénom CHAR (20),daten DATE , adress CHAR (40),  age NUMERIC(10), sex CHAR (1),type_p CHAR (15), PRIMARY KEY (Num_permis))


إذا أردت تحديد مكان قاعدة البيانات السابقة ستجدها في alias تحت اسم travail
أو قم بتتبع صيغة البلوغ التالية : C:\Program Files\Fichiers communs\Borland Shared\Data
ملاحظة :الفهرس الأب(C:/D:/E:/F:…) يختلف باختلاف مكان تنصيب برنامج :module de base de donnée

في هذه الحالة لقد قمنا بتصميم قاعدة البيانات chauffeur بواسطة استعمال أوامر SQL المتاحة
حاول فتح قاعدة البيانات السابقة chauffeur ولاحظ بنية حقولها :
لاحــظ الشكل التالي :





قم بحجز البيانات حسب الشكل التالي :







تصميم برنامج في دلفي لتنفيذ أوامر SQL ذاتيا

خطوات البرمجة :
1.     فتح مشروعا جديدا
2.     احضر المركبتين query  و tableمن شريط المكبات       Access BD
3.     إضافة المركبتين data source1 ,data source2
4.     إضافة المركبتين dbgride1 ,dbgrid2
5.     إضافة المركبة bouton
6.     إضافة المركبة      memo1

 ملاحظات :سبق وان قمنا بإنشاء قاعدة البيانات chauffeur.db  بواسطة module base de données وتم حفظها في الــ:alias    التالية :laoubi_adel   الآن سنقوم بعملية الربط الفيزيائية للمركبات الخاصة بالبيانات
1-ربط المركبة table1 بقاعدة البيانات الفيزيائية
   آلية التنفيذ :
1-   تحديد المركبة table1
2-   تغيير الخاصية data base name  بــ:alias  --laoubi_adel
3-   تحديد اسم قاعدة البيانات بواسطة الخاصية table name وذلك باختيار travailleur.db
4-   تفعيل وفتح قاعدة البيانات بواسطة الخيار active :=true ;

2- ربط المركبة data source1  بـ  table1
  آلية التنفيذ:
1-   تحديد المركبة data source1
2-   تغيير الخاصية data set بــ table1
3-ربط المركبة dbgrid1  بالمركبة data source1
 آلية التنفيذ
1-   تحديد المركبة dbgrid1  
2-   تغيير الخاصية data source    بــ :data source1
 ملاحظة : ربط المركبة query1 بـنفس laoubi_adel   …………alias
-         ربط المركبة query1 مع المركبة data source2  بنفس الطريقة السابقة وكذلك بالنسبة لعملية الربط بين
Dbgrid2    و data source2
قم بمحو  المحتوى memo1  الموجود في المركبة memo1  وذلك بواسطة  الخاصية string

ربط المركبات برمجيا :
يمكنك ربط  المركبات السابقة برمجيا وذلك بتحرير الأوامر التالية في المركبة botton1
Begin
Table1.databasename :=’laoubi_adel’;
Data source1.data set :=table1;
Dbgrid1.datasource:=datasource1;
Table1.active:=true;

Query1. databasename :=’laoubi_adel’;
Data source2.data set :=query1;
Dbgrid2.datasource:=datasource2;
End:
dbgrid1

Dbgrid2

Data base
name









-         بعد عملية الربط الفيزيائية سنقوم الآن بعملية  البرمجة
- قم بتسمية ماهية الزر bouton1   بــ :exécuté SQL  وذلك بواسطة الخاصية :caption
       انقر نقرا مزدوجا على المركبة bouton1   وحرر الأمر التالي :
Query1.sql :=memo1.lines ;
Query1.open ;
















ملاحظات: البرنامج السابق ليس مكيف للعمل مع قاعدة البيانات chauffeur فقط. يمكن تطوير البرنامج وذلك بإضافة خيارات تحديد اسم  قاعدة البيانات والــ: alias المتواجدة  بها ..

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

تعريف المركبة : QuickRep1  تسمح لك هذه المركبة   بطباعة البيانات  مع إضافة خيرات متعددة
 يمكنك تحديد إيجاد المركبة السابقة في شريط المركبات Qreport
1

2

3

4

5

شرح بعض مركبات  الشريط Qreport

1-   المركبة
2-   المركبة Qelabel
3-   المركبة Qrdbtext

المركبة
التعيين
QuickRep1
صفحة العمل والعرض والطباعة
Qlabel
لتحديد العناوين والكتابة  مثال   رقم الهاتف .الاسم....[/RIGHT]
Qrdbtext
لعرض قيم الحقول [/RIGHT]
QRSysData1
لعرض أدوات النظام مثل الساعة التاريخ...رقم الصفحة ...[/RIGHT]
QRExpr1
لعرض تعليق أو عبارة [/RIGHT]






[FONT=Simplified Arabi


zorto23

  • Newbie
  • *
    • مشاركة: 3
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #1 في: تـمـوز 11, 2010, 06:24:08 مسائاً
والله  موضوع قيم وتستحق كل تقدير
دمت وفيا لنا ولمنتدانا
لا تبخل علينا ...بمواضيعك