الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تعرف على قواعد بيانات FireBird

مغلقرائج
بدأه أبو محمـد في 6 أكتوبر 2004 · 44 رد · 20,381 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

Firebird قاعدة بياناتSQL وهي الجيل الجديد من interbase 6.0 التي تاتي مرفقة مع الدلفي ولكن ما يميزها :

- أنها مجانية ومفتوحة المصدر

- تأخذ ملف واحد فقط امتداه fdb وتستطيع تغيير الامتداد .

- ضخامة البيانات كـ MS-SQL Server

- تستخدم نمط معايير SQL-92 في التخاطب معها

- تدعم Transactions و Record Version و Stored Procedures و Triggers

- تستطيع صنع تعليمات Udf إضافية بنفسك بواسطة الدلفي .

- دعمها من قبل بورلاند بواسطة أدوات IBX المتوفرة مع الدلفي .

- تعمل على نظامي Linux, Windows .

ماذا تحتاج لكي تعمل على قواعد بيانات Firebird ؟

تحتاج في البداية فقط تنصيب هذا البرنامج :

Firebird-1.5.0.3744-RC4-Win32.exe وهو Firebird server for windows

وتستطيع الحصول عليه من هذا الموقع http://sourceforge.net/projects/firebird

بعد تنزيل البرنامج يمكن إجراء العمليات عليها ( مثل تغيير الرقم السري لقاعدة البيانت إضافة مستخدم الى قاعدة البيانات ، انشاء قاعدة بيانات ، أنشاء جدول ، إنشاء حقول ) من خلال الدوس أو من خلال برامج مثل IBExpert - EMS InterBase & FireBird Manager 3 - وتستطيع الحصول عليها من المواقع التالية :

www.ibexpert.com

http://ems-hitech.com

وتستطيع الحصول على المزيد من المعلومات عنها من خلال المواقع والمجموعات التالية :

http://www.firebirdsql.org/

http://groups.yahoo.com/group/Firebird-Architect/messages

http://groups.yahoo.com/group/Firebird-general/messages

http://groups.yahoo.com/group/firebird-support/messages

تم تعديل هذه المشاركة بواسطة أبو محمـد في 6 أكتوبر 2004 في 23:02

#2

العمليات الأساسية :

سنتعرف بهذا الجزء كيف نقوم بإجراء العمليات (مثل تغيير الرقم السري لقاعدة البيانت إضافة مستخدم الى قاعدة البيانات ، انشاء قاعدة بيانات ، أنشاء جدول ، إنشاء حقول ) على قواعد بيانات FireBird عن طريق موجة الدوس ثم نستعرض كيف نقوم بإجراء نفس العمليات ولكن عن طريق البرامج التي تتعامل مع قواعد البيانات FireBird مثل ‎ibexpert

إنشاء قاعدة بيانات جديدة

لإنشاء قاعدة بيانات عن طريق سطر الأوامر ( موجة الدوس ) نقوم بالتالي :

أولا : شغل الأمر

•	"C:\Program Files\Firebird\Firebird_1_5\bin\isql.exe"

• وذلك كالتالي : ابدأ ثم تشغيل ثم اكتب الأمر السابق . ومن الممكن كتابة الأمر السابق والتعامل معه عن طريقة شاشة الدوس .

ثانيا : أكتب الأوامر التالي :

•	SQL> CREATE DATABASE 'c:\Test.fdb' USER 'sysdba' PASSWORD 'masterkey';
•	// الأمر السابق سيقوم بإنشاء قاعدة بيانات اسمها Test.Fdb لها اسم مستخدم sysdba  وكلمة مرور masterkey  وسيتم انشاءها على قرص السي 
•   SQL> CREATE TABLE students (Id INT PRIMARY KEY, 
•          Name VARCHAR(30) NOT NULL);
•	// سيقوم هذا الأمر بإنشاء جدول students يحتوي على حقلين هما id من رقم  name  من نوع نص 
•   SQL> INSERT INTO Students (Id, Name) VALUES (1, 'Abu_Mohmmad');
•	// سيقوم هذا الأمر  بإضافة بيانات الى الحقول السابقة ولكن لن يتم تنفيذه الا بعد كتابة الامر التالي  
•   SQL> COMMIT;
•	
  SQL> EXIT;

سنتابع في الايام القادمة ان شاءالله ،،،

تم تعديل هذه المشاركة بواسطة أبو محمـد في 7 أكتوبر 2004 في 02:13

#3

لك جزيل الشكر أخي الغالي أبو محمد .

على حسنك إنتقائك لهذا الموضوع الجميل والذي لايحظى بالإهتمام الكافي ربما من مبرمجي الدلفي ..

حسنا لدي بعض المعلومات سأنشر بعضها :

مقتطفات من كتاب Mastring Delphi :

(ترجمة موفق المقداد )

تقديم انتر بيس

تعتبر إنتربيس نظام إدارة قواعد بيانات علائقية قوي , وقد بنيت منذ البداية ببنية حديثة وقوية . كاتبها الأصلي يدعى Jim Starkey والذي أنشأ بنية لمعالجة التزامن والإجراءات دون فرض أقفال فيزيائية على أجزاء من الدوال . وهذا شيء بالكاد تستطيع ملقمات قواعد بيانات أخرى معروفة جيدا إنجازة حتى اليوم . تسمى بنية InterBase ب MGA (Multi_Generation Architecture ) وهي تعالج وصولات متزامنة إلى نفس الجدول لمستخدمين متعددين , ووالذين يمكنهم تغيير السجلات دون التأثير على مايراه المستخدمين المتزامنين الآخرين في قاعدة البيانات .

إضافة إلى بنية MGA في قلب InterBase يملك الملقم الكثير من الفوائد التقنية الأخرى :

- ذو أثر محدود : وهو الذي يجعل إنتربيس مثالي للتنفيذ على حواسيب عملية بشكل مباشر , بمافيها الحواسيب المحمولة . حيث يتطلب إنتربيس أقل من 10 ميغا , كما أن متطلبات الذاكرة له محدودة بشكل لا يصدق .

- أداء جيد على كميات كبيرة من البيانات .

-متاح على الكثير من منصات التشغبل المختلفة . (Windows Solaris Linux ) وبإصدارات متوافقة بشكل كامل . وهكذا يكون الملقم قابلا للتدرج من نظم صغيرة جدا إلى نظم ضخمة جدا , دون إختلافات ملحوظة

- ملاحقة جيدة للسجل , حيث أن إنتربيس مازالت في الإستخدام منذ 15 سنة , مع القليل من المشاكل .

- لغة معرفة بمعيار ANSI SQL .

- قدرات برمجية متقدمة , تتضمن قوادح موضعية , وإجرائيات مخزنة , ومشاهد قابلة للتعديل , وإستثناءات , وأحداث , ومولدات , وغيرها من التقنيات المعروفة في RDBMS المتقدمة "مثلا Oracl و Ms_SqlServer"

- تنصيب وإدارة بسيطين , مع مشاكل إدارية محدودة .

ملاحظات :

اختيرت إنتربيس من قبل Ericsson إلى مكتب الدفاع الإمريكي , ومن قبل تبادل السلع المخزنية إلى النظم الوطنية للبنوك الأمريكية . ومن قبل بعض المنظمات ذات العلاقة ..

(لكنها بشكل عام لا تملك حصة كبيرة من سوق الـ Rdbms)

تم تعديل هذه المشاركة بواسطة ORWA في 7 أكتوبر 2004 في 17:47

#4

تم التثبيت.

فكر بطريقة أخرى

#5

جزاك الله خيرا أخي عروة لقد أثريت الموضوع بمعلومات ثمينة ونمتنى أن نرى المزيد والمزيد ، وسأبد بإكمال الموضوع من غدا إن شاءالله .

#6

السلام عليكم

سنبدأ اليوم باستخدام برنامج IBExpert وهو عبارة عن الملف ibep_2.5.0.49_full.exe

وإذا لم يكن عندك يمكنك الحصول عليه من الموقع www.ibexpert.com

وهو يعتبر واجهة لإنشاء قاعدة بيانات فارغة وكذلك إنشاء الجداول وتنفيذ ال Queries وغيرها قبل البداية في ربطها مع الدلفي عن طريق Interbase Express أو dbExpress .

لإنشاء قاعدة بيانات فارغة :

p1.gif

نختار من القائمة Database ثم creatdatabase

p2.gif

بعد ظهور مربع حوار Create database

نحدد أولا استخدامنا لقاعدة البيانات : هل نريد استخدامها كقاعدة بيانات محلية أو كقاعدة بيانات سيرفر .

p3.gif

بعد ذلك نبدأ بإكمال انشاء القاعدة بتحديد اسم قاعدة البيانات والامتداد الذي نريده لها ومكان تخزينها وكذلك اسم المستخدم وكلمة المرور وترميز قاعدة البيانات .

p4.gif

اسم المستخدم : sysdba وكلمة المرور masterkey .

p5.gif

الشكل التالي يوضح البيانات التي قمت بتعبئتها .

p6.gif

بعد الضغط على OK تأتي شاشة التسجيل : حدد أولا إصدار السيرفر ثم اضغط على Ok

p7.gif

فتسجل ضمن البرنامج كما في الشكل التالي :

p8.gif

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

p9.gif

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

أتمنى للجميع التوفيق والنجاح .

#7

السلام عليكم

في هذا الجزء سنتعرف على طريقة إنشاء الجداول والحقول باستخدام برنامج IBExpert

 

ملاحظة  : اولا قم بالاتصال بقاعدة البيانات كما هوموضح في الجزء السابق

 

لإنشاء جدول  نضع الماوس على Tables   ثم نضغط الفارة يمين ثم نختار New Tabels

 

1_2.gif

سيظهر لنا مربع حوار     New Tabel كما في الشكل التالي :

 

2_2.gif

 

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

 

 رقمي   numerical  وتشمل

Numeric, Decimal, Integer

نصي textual  وتشمل

Char, Varchar, NChar, NVarchar

تاريخ ووقت DateTime   وتشمل

Date, Time, Timestamp

وأخيرا بيانات من  نوع  Blobs

 

والشكل التالي يوضح حقلين  هما Id  من نوع رقم  و name  من نوع نص تم انشائها في جدول يحمل اسم New Tabel

 

2_3.gif

الان  بعد انشاء الجدول وحقوله كيف يتم تنفيذه .

 

تقوم بالضغط على زر compile  أو الضغط على ( Ctrl + F9 )

 

2_4.gif

 

ستظهر شاشة التنفيذ التالية  :

2_5.gif

 

 

عند الضغط على Commit   سيتم تنفيذ السكريبت وتشاهد الجدول موجود ضمن الجدوال في قواعد البيانات كما في الشكل التالي .

 

بعد ذلك تستطيع  إضافة سجلات الى الجدول  مباشرة من تبويبData   والشكل التالي يوضح ذلك .

 

2_6.gif

مع تمنياتي للجميع بالتوفيق والنجاح ،،،

تم تعديل هذه المشاركة بواسطة أبو محمـد في 10 أكتوبر 2004 في 14:27

#8

بسم الله الرحمن الرحيم

بعد غياب طويل سببه الاساسي عدم استطاعتي المشاركة في المنتدى

سواء باسم قديم او بالجديد .

المهم اخيرا استطعت ان اكتب ويالتني استطيع الدخول بعد هده الرسالة لاني

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

اخي العزيز اشكرك على هده الدروس و الله يجازيك كل خير . ارجو ان تكمل والى الامام دائما

صديقكم الوفي .. اعد اني ساقدم دروس قادمة هدا ان استطعت المشاركة ..

شكرا

#9

السلام عليكم

أشكرك أخي زكيري عبدالعال وأتمنى أن نراك دائما في المنتدى

#10

الاخ أبو محمـد

الاخوة الاعزاء

تحية طيبة

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

ولكم منى كل الود والاحترام

MyM

.jpg

______________________________________________________________________________

[وسط]9ber.gif

ip2location.png

______________________________________________________________________________

(فَقُلْتُ اسْتَغْفِرُوا رَبَّكُمْ إِنَّهُ كَانَ غَفَّارًا (10) يُرْسِلِ السَّمَاء عَلَيْكُم مِّدْرَارًا (11) وَيُمْدِدْكُمْ بِأَمْوَالٍ وَبَنِينَ وَيَجْعَل لَّكُمْ جَنَّاتٍ وَيَجْعَل لَّكُمْ أَنْهَارًا (12)

مَّا لَكُمْ لَا تَرْجُونَ لِلَّهِ وَقَارًا (13) وَقَدْ خَلَقَكُمْ أَطْوَارًا (14))

* سورة نوح[/وسط]

من اجمل المواقع على الاطلاق

القرآن الكريم

#11

السلام علكيم

سأستمر بهذا الموضوع من غدا ان شاءالله ، ولن أتوقف عنه الا بعد ان نتناقش الموضوع من كل جوانبه ، لكن أتمنى أن يساعدونا الاخوة في بعض المواضيع الهامة به سأحددها مستقبلا ان شاءالله .

#12

السلام عليكم

ال Domain عبارة عن نوع من أنواع البيانات - Datatype - معرف من قبل المستخدم. ويستخدم إذا كانت هناك عدة حقول لها نفس الخصائص مثل ( طول الحقل ، نوعه ، Not Null ، المدى - مثلا عدة حقول لا تقبل قيمة أكبر من 3000 - ، الصيغة - مثلا حقول لا تقبل الا قيمتين False و True - )

مثال :

لإنشاء دومين نضع الماوس على Domains ثم نضغط الماوس الأيمن فنختار New Domain

3_1.gif

الدومين الذي سنقوم بإنشائه عبارة عن Boolean لايسمح إلا بإدخال قيمتين هما False و True

3_2.gif

نقوم بتسمية الدومين ثم نختار نوع بيانات Char وطول حقله يساوي 5

ثم نضغط على تبويب Default Source فيظهر لنا الشكل التالي فنكتب القيمة الافتراضية له ولتكن True

3_3.gif

ثم ننتقل الى تبويب Check فنكتب الجملة التالية : VALUE IN ('false', 'true')

كما في الشكل التالي

3_4.gif

ثم نضغط على زر التنفيذ Commit كما في الشكل .

بهذه الخطوة نكون قد أنشأنا دومين اسمه New Domain لا يقبل سوى قيمتين هما ('false', 'true') وهذا النوع من البيانات يسمى بقواعد البيانات الأخرى Boolean .

ملاحظة :

نفس الخطوات السابقة تستطيع تنفيذها بسهولة عن طريق الاسكريبت التالي

CREATE DOMAIN T_BOOLEAN_CHAR

  AS CHAR(5)

  DEFAULT 'true'

  NOT NULL

  CHECK (VALUE IN ('false', 'true'))

لكتابة الاسكريبت السابق نختار من القائمة Tools ثم Sql Editor

3_5.gif

فيظهر الشكل التالي

3_6.gif

فنقوم بكتابة الاسكريبت السابق ثم الضغط على Run ثم Commit

الآن سنقوم بإنشاء حقل جديد ونحدد نطاقه بالدومين السابق .

نقوم بفتح الجدول الذي قمنا بإنشائه في السابق :

3_7.gif

عند الضغط عليه مرتين يظهر لنا الحوار التالي

3_81.gif

نضغط على Add Field فيظهر لنا مربع الحوار التالي :

3_9.gif

فنقوم بتسميته واختيار الدومين له . وبهذ الخطوات نكون قد انشأنا حقلا اسمه New لايقبل سوى قيمتين هما True و False

مع تمنياتي للجميع بالتوفيق والنجاح

#13

الإجراءات المخزنة ( Stored Procedures ) :

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

1- إرسال معلومات قليلة جدا عبر الشبكة عندما تقوم باستدعاء الإجراءات المخزنة . ويتم تنفيذها جهة الخادم وبذلك تختصر الوقت .

2- الإجراءات المخزنة هي كائنات قاعدة بيانات وتتواجد في ملف قاعدة البيانات .

لإنشاء إجراء مخزن جديد نضع الماوس على Procedures فنضغط على زر الماوس الايمن فنختار new Procedure

4_1.gif

فتفح لنا الشاشة التالية :

4_2.gif

تبويب Input Parameters لإضافة المتغيرات الداخلة إلى الإجراء ويتم إرسالها من البرنامج .

تبويب Output Parameters لإضافة المتغيرات الخارجة من الإجراء ويتم استقبالها في البرنامج .

تبويب Variables لإضافة المتغيرات المحلية التي يتم استخدامها داخل الإجراء .

مثــــــال :

إذا كان لدينا جدول اسمه Cash يحتوي على الحقول التالية :

Id , name , Money

سنقوم بإنشاء هذا الجدول داخل القاعدة البيانات كالتالي :

من القائمة Tools نختار SQL Editor ثم نلصق الكود التالي :

     CREATE TABLE CASH (
   ID INTEGER, /* the record identifier in the table  */
   NAME VARCHAR(30), /* expenses/income */
   MONEY INTEGER, /* the sum in dollars: with "plus" income (for example, wages),
   with "minus" expenses (for example, purchase)*/
   RDATE TIMESTAMP /* the date of record listing */ );

بعد ذلك سنقوم بإضافة سجلات الى الحقول السابقة

كما في الشكل التالي :

4_3.gif

سنقوم الآن بإنشاء إجراء يقوم بإعطاء تقرير عن الايرادات والمصاريف خلال فترة معينة . إذن ستكون المدخلات تاريخين وهما (NGOD و EGOD ) أما المخرجات ستكون الاسم والمبلغ الوارد والمبلغ المصروف وهي ( name , income , expenses )

سنستخدم المتغيرات التالية داخل الاجراء (SINCOME و SEXPENSES و TMONEY )

أولا نقوم بتعريف المتغيرات الداخلة للإجراء كما في الشكل التالي :

4_4.gif

ثانيا : سنقوم بتعريف المتغيرات الخارجة من الإجراء :

4_5.gif

ثالثا : سنقوم بتعريف المتغيرات التي سنستخدمها داخل الإجراء :

4_6.gif

ثم نقوم بكتابة الكود التالي في Procedure Text

SINCOME=0;
   SEXPENSES=0;
   /* Selection */
   FOR SELECT NAME, MONEY FROM CASH WHERE RDATE BETWEEN :NGOD AND :EGOD
   INTO :NAME, :TMONEY
  DO BEGIN
  /* سيقوم هذا الجزء من الكود بتقسيم المبلغ المالي الى حقلين وارد ومصروف*/
  IF (TMONEY>=0) THEN BEGIN
 	 INCOME=TMONEY;
 	 EXPENSES=0;
 	 /* جمع المبلغ الوارد مع السابق */
 	 SINCOME=SINCOME+TMONEY;
  END
  ELSE BEGIN
 	 EXPENSES=TMONEY;
 	 INCOME=0;
 	 /* جمع المبلغ المصروف مع السابق  */
 	 SEXPENSES=SEXPENSES+TMONEY;
  END
  SUSPEND;
   END
   /* مشاهدة المبلغ المصروف والوراد والمجموع  */
   NAME='TOTAL';
   INCOME=SINCOME;
   EXPENSES=SEXPENSES;
   SUSPEND;

ثم نضغط على زر Compile Procedure لتنفيذ وحفظ الاجراء

بعد ذلك نستطيع تنفيذ الإجراء المخزن مباشرة من IB Expert

نقوم بالضغط على زر تنفيذ الإجراء المخزن كما في الشكل التالي

4_7.gif

يظهر لنا الشكل التالي

4_8.gif

نحدد تاريخ NGOD وتاريخ EGOD

ثم نضغط على زر تنفيذ فيظهر الناتج الموضح بالشكل التالي .

4_9.gif

مع تمنياتي للجميع بالتوفيق والنجاح .

#14

الله عليك أبو محمد ..

يعني للصراحة موضوعك رائع .

شكرا لك

#15

تشبه كثيرا sql server في طريقتها . الله يخليك والله يوفق جميل جدا اخي العزيز

#16

Triggers القادح أو الزناد

شبيه بالإجراءات المخزنة ولكن الفرق أنه يتم تنفيذه عند حدوث حدث معين داخل قاعدة البيانات مثل الإضافة والتعديل والحذف .

لإنشاء قادح جديد نضع الماوس على Triggers ثم نختار New Trigger كما في الشكل التالي :

5_1.gif

فيظهر لنا الشكل التالي

5_2.gif

نقوم بتحديد الجدول وسنختار نفس الجدول السابق وهو CASH ثم نضع علامة صح أمام الحدث INSERT ونختار النوع Before

ثم نكتب الكود التالي في Trigger text

As Declare variable num integer;
begin 
  num=0;   
  select max(id) from new_table into num;
  if (num>0) then   
  new.id=num+1;
   else 
 new.id=1;
end

ليصبح كما في الشكل التالي :

5_3.gif

هذا القادح عبارة عن ترقيم تلقائي للحقل id أي أنه سيقوم بإضافة 1 إلى أكبر قيمة في حقل id

جرب بأن تضيف بيانات إلى الجدول cash عن طريق تبويب data الموجود في Tables ، أضيف بيانات فقط للاسم والمبلغ والتاريخ ثم اضغط على إشارة صح ستجد أنه تلقائيا وضع رقم للحقل id .

مع تمنياتي للجميع بالتوفيق والنجاح ،،،

تم تعديل هذه المشاركة بواسطة HGB في 29 أكتوبر 2004 في 00:41

#17

الاستعلامات البسيطة Views

الاستعلامات البسيطة : عبارة عن مجموعة من أوامر sql يتم تنفيذها جهة الخادم تقوم بإسترجاع البيانات من الجداول وتتميز بأنها تخفف العبء على الخادم . والفرق بينها وبين الإجراءات المخزنة أنها لا تستقبل متغيرات وبالتالي فهي تسترجع البيانات بنفس الطريقة .

لإنشاء استعلام بسيط جديد : نضع الماوس على Views ثم نختار new view كما في الشكل التالي :

6_1.gif

فيظهر لنا المحرر التالي :

6_2.gif

أكتب الاستعلام التالي :

CREATE VIEW NEW_VIEW(
    ID,
    NAME)
AS
select id,name from cash
where id = 1
;

فيكون الاستعلام مثل الشكل التالي :

6_3.gif

هذا الاستعلام سيقوم بعرض الاسم والرقم من الجدول cash إذا كان الرقم يساوي 1 .

عند تنفيذه يظهر لنا الناتج التالي :

6_4.gif

متى نحتاج الاستعلامات البسيطة :

مثلا إذا كانت لدينا مكتبة على الويب ووضعنا زرا يقوم بتنفيذ استعلام ناتجه يقوم بعرض الكتب التي تغير سعرها هذا اليوم . فهذا الاستعلام سيقوم بطلبه الآلاف من الزبائن . وبالتالي لو وضع بشكل عادي فإن السيرفر سيقوم بتنفيذه في كل مرة يطلب هذا الاستعلام وهذا يسبب عبئا كبير على السيرفر . لذلك نضع له استعلام بسيط View ، فيقوم السيرفر بتنفيذه ووضع الناتج في الذاكرة المؤقته له ، وعند طلبه مرة أخرى سيقوم بعرض الناتج مباشرة . ويبقى بالذاكرة ما لم يحدث أي تغيير في الحقول التي يتم الاستعلام عنها . أي إذا حدث أي تغيير في السعر فإن السيرفر سيعيد تنفيذه مرة أخرى .

تمتاز كل من الاستعلامات البسيطة Views والإجراءات المخزنة Stored Procedures بتنفيذها من قبل الخادم فهي بالتالي تخفف العبء عليه لأنه عند تنفيذها أول مرة ستبقى محفوظة في ذاكرة الخادم لذلك عند طلبها مرة أخرى فإنها ستنفذ بسرعة عالية جدا .

تم تعديل هذه المشاركة بواسطة HGB في 29 أكتوبر 2004 في 00:42

#18

السلام عليكم

الإستثناء EXCEPTIONS

الإستثناءات معرّفة من قبل المستخدم وتسمى رسائلِ الخطأِ، ويتم كتابتها لقاعدة البيانات وتخزن داخل قاعدةِ البيانات وتستخدم في الإجراءاتِ المخزنة Stored Procedures والزناد Triggers .

لإنشاء استثناء ( رسالة خطأ ) جديد نضع الماوس EXCEPTIONS ثم نختار NEW_EXCEPTION فيظهر لنا محرر إنشاء الاستثناء . نقوم بكتابة اسم الاستثناء ، ورسالة الخطأ التي نريدها أن تظهر .

7_1.gif

Generators أو مولدات الأرقام

المولدات عبارة عن عدد متسلسل يغطي كامل قاعدة البيانات .

أي مولد أرقام عبارة عن كائن قاعدة بيانات وجزء من database\'s metadata , وهو عبارة عن عدد متسلسل ويستخدم في الغالب لضمان قيمة فريدة لمفتاح أساسي داخلي .

لإنشاء مولد أرقام نضع الماوس على Generators ثم نختار new_ Generator فيظهر لنا محرر إنشاء المولد ، نقوم بكتابة المولد والرقم الذي نرغب أن يبدأ به .

7_2.gif

تم تعديل هذه المشاركة بواسطة أبو محمـد في 4 نوفمبر 2004 في 21:00

#19

السلام عليكم

أولا سأذكر نبذة بسيطة عن استخدام الاجراءات المخزنة لم أبينها في السابق :

تستخدم لإجراءات المخزنة لما يلي :

1- لإضافة سجل أو تعديله أو حذفه . لقد ضربت مثال على الإضافة في إحدى المشاركات السابقة .

2- للاستعلام عن السجلات وهذه نوعين هما :

أ‌- استعلام يكون ناتجه سجل ( سطر ) واحد فقط ونستخدم الكود التالي للاستعلام عنه :

SELECT column FROM table
WHERE column operator value into output_parameters;
suspend;

مثال :

select name from cash where id =1 into :O_NAME;
  suspend;

هذا الاستعلام يقوم باستخراج الاسم ذو الرقم واحد الى المتغير O_name ولكن في حالة وجود أكثر من اسم للرقم 1 سيعطي رسالة خطأ .

ب‌- استعلام يكون ناتجه أكثر من سجل ( سطر ) في هذه الحالة سنستخدم الكود التالي للاستعلام عنه

For SELECT column FROM table
WHERE column operator value into output_parameters 
do
suspend;

مثال :

  for select name from cash  into :O_NAME
  do
  suspend;

مثـــال على الدروس السابقة :

أولا : نقوم بإنشاء جدول اسمه cash له الحقول التالية id,name,money,date .

ثانيا : نقوم بإنشاء استثناء اسمه err_date يعطي رسالة الخطأ التالية :

لا يمكن أن يحتوي حقل التاريخ على قيمة خالية .

CREATE EXCEPTION ERR_DATE ' لا يمكن أن يحتوي حقل التاريخ على قيمة خالية  '

ثالثا : نقوم بإنشاء مولد أرقام اسمه cash_id يبدأ من الرقم 100 .

SET GENERATOR CASH_ID TO 100

رابعا : نقوم بإنشاء قادح اسمه auto_id للحقل id وظيفته إضافة رقم 1 الى آخر رقم وصل إليه ويتم تنفيذه قبل الاضافة

CREATE TRIGGER  FOR CASH
ACTIVE BEFORE INSERT POSITION 0
As
begin 
new.id = gen_id(gen_cash_id, 1); /* استخدمنا مولد الارقام cash_id       لعمل المسلسل  */
end

هذه الطريقة مشابهه لطريقة التي استخدمناها في السابق لعمل الترقيم التلقائي للحقل id .

خامسا : إنشاء الإجراءات المخزنة :

- الإجراء التالي: عبارة عن إجراء إضافة سجلات الى الجدول :

CREATE PROCEDURE NEW_PROCEDURE (  /*إعلان عن المتغيرات الداخلة الى الإجراء */
    IN_NAME VARCHAR(40),
    IN_MONEY INTEGER,
    IN_DATE DATE)
AS
begin
  /* Procedure Text */
insert into cash (name,money,rdate) values( :IN_NAME, :IN_MONEY, :IN_DATE);  
if (in_date is null ) then exception err_date; /*  في حالة كون التاريخ فارغا سيظهر الرسالة المكتوبة بالاستثناء err_date  */ بعد عرض الرسالة سيخرج من الاجراء تلقائيا  
else
  suspend; /* تنفيذ إضافة الحقول */
end

لاحظ لم نقم بإضافة قيمة الى الحقل id لأنا وضعنا له قادح سيقوم تلقائيا بإضافة قيمة الى الحقل وستبدأ هذه القيمة من العدد 100 ،،

تمنياتي للجميع بالتوفيق والنجاح ،،،

الان انتهينا من التعرف على قواعد بيانات firebird في الاجزاء القادمة سأتعرض الى طريقة ربطها بالدلفي وطريقة تنفيذ الاجراءات المخزنة من الدلفي .

تم تعديل هذه المشاركة بواسطة أبو محمـد في 4 نوفمبر 2004 في 23:23

#20

حياك الله على موضوعك المميز

#21

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

جزاك الله مليون خير يا اخ ابو محمد موضوعك مهم جدا وانا استفدت منه كثيرا والف شكر لك

وانت ايضا يا اخ عروه عيسى قرات لك الكثير والف شكر على مجهوداتك الطيبه

وايضا بقيه الاخوان في المنتدي والله يكثر من امثالكم

--اخوكم محمد المنقطع فتره طويله عن المنتديات من كثر المشاغل --

#23

شكرا للوصله الحلوة khh ..

#24

السلام عليكم

حياك الله أخي محمدMr وأتمنى أن أراك دائما في المنتدى

شكرا جزيلا أخي khh على الوصلة الرائعة .

#25

ربط قواعد بيانات firebird بالدلفي :

هناك عدة طرق تستخدم لربط قواعد بيانات firebird بالدلفي منها :

1- الربط باستخدام محرك BDE

2- الربط باستخدام محرك interbase

3- الربط باستخدام مكتبات dbexpress

لمعلومات أكثر عنها راجع مقال مقدمة عن قواعد بيانات دلفي للأستاذ عروة . تجدها على الرابط http://www.arabdevelopers.com/vbb/showthre...%E3%DE%CF%E3%C9

سأتعرض فقط للاثنين الأخيرة .

أولا : الربط باستخدام محرك interbase :

8_1.gif

أولا نسقط IBDatabase1 على الفورم ثم ننقر عليه مرتان فيظهر لنا المحرر الخاص به ثم ندخل البيانات كالتالي :

8_2.gif

- ندخل اسم ومسار ال database أو نضغط على browse ثم نختار قاعدة البيانات من القرص الصلب .

- ندخل الـ user name والافتراضي هو sysdba

- ندخل ال password والافتراضي هو masterkey

أخيرا نضغط على test لتجربة الاتصال بقاعدة البيانات ثم نضغط على ok إذا أعطانا رسالة أن الاتصال صحيح بقاعدة البيانات .

ثانيا : نسقط IBTransaction1 على الفورم ونقوم بربطه بقاعدة البيانات السابقة .

ثالثا : تسقط ما تريد من جداول واستفسارات وإجراءات مخزنة وغيرها ،،،،

مع تمنياتي للجميع بالتوفيق والنجاح ،،،،

تم تعديل هذه المشاركة بواسطة أبو محمـد في 10 نوفمبر 2004 في 09:29

هذا الموضوع مغلق.

مواضيع مشابهة