اشياء لم يتم التطرق لها في قواعد بيانات فايربيرد
#16
لقد جربت طريقة لحفظ البيانات في حقل مشابه للمصفوفة واردت مشاركتها معكم
حيث بدل من انشاء جدول لحفظ بيانات فرعية يمكن حفظها في حقل واحد بنفس الجدول

حيث لدي مجموعة من المكاتب
----------------------------------------
رقم التعريف | اسم المكتب
01- مكتب الاول
03 - المكتب الثاني
155- المكتب الثالث

لدي سجل فيه اسم الوثيقة ونسخة منها ، وفي الحقل السابق أخزن أرقام جميع المكاتب التي لها حق الوصول إلى الوثيقة، وقيمتها مثلا هي كما يلي:
1,3,155
وبالطبع يمكنني الاستفسار عن رقم أي مكتب ومعرفة ما إذا كان لديه صلاحية الاطلاع على هذه الوثيقة

Select inbox.id
from inbox
where inbox.to_office containing '01'

كانت المشكلة أن عبارة الاستعلام السابقة لم تفرق بين الرقم 1 والرقم 10 لأن الرقم 10 يحتوي على الرقم 1. لقد قمت بحل هذه المشكلة بوضع 0 قبل الرقم 1، فأصبح 01.
لكن المشكلة ستبقى إذا كان عدد المكاتب أكثر من 100، لأن الاستعلام لن يفرق مثلا بين 15 والرقم 115.
ولحل المشكلة يمكن تحويل رقم التعريف إلى ثلاثة أرقام مثل 001، 002، 003 وغيرها

او اللجؤ الى وضع الارقام بين علامتي تنصيص مثل '1','12','100'
ويتغير الاستعلام ليبحث عن رقم بين علامتي تنصيص وبذلك لا مشكلة في استخدام اي تنسيق للارقام

ارى ان هذه الطريقة اسهل من استخدام المصفوفات او بمثل سهولتها وتؤدي الغرض وتقلل كثرة الاستعلامات من الجداول الفرعية .
ويمكن استخدامها مع قواعد البيانات التي لا تدعم المصفوفات
قل: اللهم فاطِرَ السماوات والأرض عالم الغيبِ والشهادة، ربَّ كُلِّ شَيءٍ ومَلِيكَه، أَشْهد أن لا إله إلا أنت، أعوذ بك من شرِّ نفسي وشرِّ الشيطان وشِرْكِهِ وأن أقترف على نفسي سوءًا أو أجرُّه إلى مسلم
[-] كل من 1 user says قال شكرا ل Delphi4Us على المشاركة المفيدة
  • ALG2009
الرد


الردود في هذا الموضوع
RE: اشياء لم يتم التطرق لها في قواعد بيانات فايربيرد - بواسطة Delphi4Us - 31-05-2024, 08:24 PM

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


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