Javascript Tree Menu by Deluxe-Tree.com الاستعلام المدمج
   
صفحة 1 من 2 12 الأخيرةالأخيرة
النتائج 1 إلى 15 من 20

الموضوع: الاستعلام المدمج

الكاتب: ناصر المصاروة
الردود: 19 | المشاهدات: 5924 | رقم الموضوع: 5375
  1. (رقم الرد: 30247) #1
    تاريخ التسجيل
    06-01-2009
    الإقامة
    Jordan
    إصدار أوفيس
    2007
    المشاركات
    3,699

    افتراضي الاستعلام المدمج

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

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

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

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

    كيف ذلك؟

    اولا: نقوم بانشاء جدول بيانات الفواتير الرئيسية BellsTbl والذي يحتوي على الحقول
    - رقم الفاتورة وهو المفتاح الرئيسي للجدول (BellId)
    - اسم العميل (Customer)
    - اسم الموظف(Emp)
    - تاريخ الفاتورة(Bdate)
    ثانيا : نقوم بانشاء جدول المحتويات(Contents) والذي يحتوي على
    - رقم متسلسل للمحتويات(ContId)
    - رقم الفاتورة(BellId)
    - الصنف (Item)
    - الكمية (mount)
    - سعر الوحدة (UPrice)

    الان سنقوم بتصميم استعلام للحصول على السعر الاجمالي للصنف
    مبني على جدول المحتويات (Contents)
    باضافة جميع الحقول وحقل جديد باسم TotalPrice وهو يساوي الكمية (Mount) مضروبة في سعر الوحدة (UPrice) كالتالي:
    TotalPrice:[Mount]*[Uprice]
    ثم سنحفظ الاستعلام باسم TotalContents
    وهكذا حصلنا على السعر الاجمالي لكل صنف
    فكيف سنحصل على قيمة الفاتورة

    سننشئ استعلاما جديداً مبني على الاستعلام السابق TotalContents باختيار حقل رقم الفاتورة BellId وحقل السعر الاجمالي للصنف TotalPrice وسنغير اسم حقل السعر الاجمالي الى (قيمة الفاتورة) BellPrice بكتابة العبارة التالية في مكان العبارة TotalPrice
    BellPrice:[TotalContents]![TotalPrice]
    ثم سنضيف خاصية التجميع وسنضع تحت حقل السعر الاجمالي خاصية التجميع حسب المجموع Sum

    سنحفظ الاستعلام باسم TotalBellPrice

    الان اصبح لدينا استعلامين

    ماذا لو اردنا الغاء الاستعلام الاول والاكتفاء بالاستعلام الثاني (اذا كان المطلوب فقط الحصول على قيم الفواتير الاجمالية)

    الاستعلام الثاني مبني على الاستعلام الاول
    لذلك علينا دمج الاستعلام الاول في الاستعلام الثاني قبل حذفه
    كالتالي
    افتح الاستعلام الثانيTotalBellPrice بطريقة عرض التصميم
    ثم حول طريقة العرض الى SQL
    ستجد العبارة مكتوبة كالتالي:
    SELECT TotalContents.BellId, Sum(TotalContents.TotalPrice) AS BellPrice
    FROM TotalContents
    GROUP BY TotalContents.BellId
    ORDER BY TotalContents.BellId;
    ركز على العبارة المعلمة بالاحمر FROM TotalContents
    سنعدل عليها بوضع قوسين ثم كلمة As بين كلمة From وكلمة TotalContents
    كالتالي
    From () As TotalContents
    الان سنبقي الاستعلام مفتوحاً
    وسنفتح الاستعلام الاول TotalContents بطريقة عرض التصميم ثم سنحول طريقة العرض الى جملة SQL
    سننسخ جملة الSQL وسنلصقها بين القوسين الذين اضفناهما في الاستعلام السابق
    وسنلاحظ في نهاية الجملة التي الصقناها الفاصلة المنقوطة ; سنقوم بالغائها فتصبح العبارة كاملة كالتالي
    SELECT TotalContents.BellId, Sum(TotalContents.TotalPrice) AS TotalBellPrice
    FROM (SELECT Contents.ItemId, Contents.BellId, Contents.Item, Contents.Mount, Contents.UnitPrice, [Mount]*[UnitPrice] AS TotalPrice
    FROM Contents
    )  AS TotalContents
    GROUP BY TotalContents.BellId
    ORDER BY TotalContents.BellId;
    الان اغلق الاستعلامين واحفظهما
    احذف الاستعلام الاول TotalContents
    افتح الاستعلام الثاني بطريقة عرض التصميم ستلاحظ وجود نافذة الاستعلام المحذوف TotalContents وكانه موجود
    افتح الاستعلام بطريقة العرض العادية ولاحظ البيانات لم تتغير


    تمرين

    نريد ان نعرض فقط اجمالي المبيعات حسب التاريخ وحذف الاستعلام TotalBellPrice
    حاول تنفيذ العملية


    نرجو ان يكون درسا مفيدا
    وبالتوفيق
    الملفات المرفقة الملفات المرفقة
    التعديل الأخير تم ناصر المصاروة ; 22-09-2010 الساعة 02:24

    تصميم برامج قواعد البيانات الاكسيس
    تصميم صفحات ومواقع ويب PHP و MySQL
    دروس في الاكسيس والPHP والMYSQL عبر الماسنجر

  2. (رقم الرد: 30258) #2
    تاريخ التسجيل
    28-07-2010
    الإقامة
    الكويت
    المشاركات
    364

    افتراضي

    بارك الله فيك يا استاذ ناصر .... شرح واف
    وفقك الله الى فعل الخيرات
    لا اله الا انت سبحانك انى كنت من الظالمين

  3. (رقم الرد: 31082) #3

    افتراضي

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

  4. (رقم الرد: 31208) #4

    افتراضي

    والله العظيم الكلام ده جامد
    بارك الله فيك وجزاك عنا كل خير

  5. (رقم الرد: 31217) #5
    تاريخ التسجيل
    06-01-2009
    الإقامة
    Jordan
    إصدار أوفيس
    2007
    المشاركات
    3,699

    افتراضي

    اشكركم جميعا على المجاملة اللطيفة

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

    سنفتح الاستعلام الاخير TotalBellPrice بطريقة عرض التصميم
    وسنضيف له الجدول BellsTbl ثم سنربط الجدول مع الاستعلام الداخلي الحقل BellID من الجدول BellsTbl مع الحقل المسمى بنفس الاسم من الاستعلام المدمج
    eم سنضيف الحقل BDate (تاريخ الفاتورة) من الجدول BellsTbl ونلغي الحقل BellId والذي مصدره الاستعلام المدمج. لتصبح جملة الاستعلام كالتالي:
    SELECT Sum(TotalContents.TotalPrice) AS TotalBellPrice, BellTbl.BDate
    FROM(SELECT Contents.ItemId, Contents.BellId, Contents.Item, 
    Contents.Mount, Contents.UnitPrice, [Mount]*[UnitPrice] AS TotalPrice 
    FROM Contents) AS TotalContents INNER JOIN BellTbl ON TotalContents.BellId = BellTbl.BellID
    GROUP BY BellTbl.BDate;
    اذا قمت بتشغيل الاستعلام ستلاحظ انه يعود باجمالي المبيعات اليومية
    احفظ الاستعلام.

    للحصول على المبيعات الشهرية
    خذ نسخة عن الاستعلام السابق والصقها باسم جديد وليكن MonthelySales
    افتح الاستعلام الجديد بطريقة التصميم واستبدل الحقل BDate بالعبارة
     Bmonth: Format([BDate];"mm/yyyy")
    الان شغل الاستعلام الجديد وانظر النتيجة...
    التعديل الأخير تم ناصر المصاروة ; 18-10-2010 الساعة 08:43

    تصميم برامج قواعد البيانات الاكسيس
    تصميم صفحات ومواقع ويب PHP و MySQL
    دروس في الاكسيس والPHP والMYSQL عبر الماسنجر

  6. (رقم الرد: 31384) #6

    افتراضي

    جزاك الله الف خير على شرحك الجميل
    في ميزان حسانتك وحفظك الله

  7. (رقم الرد: 31996) #7

    افتراضي

    جزاك الله خيراً
    مشكور على الشرح

  8. (رقم الرد: 32136) #8

    افتراضي

    الله الله عليك جزاك الله كل الخير عنا وجعله الله فى ميزان حسناتك
    محمد خليل

  9. (رقم الرد: 38902) #9
    تاريخ التسجيل
    17-12-2010
    الإقامة
    لبنان
    المشاركات
    562

    افتراضي

    مشكور على الشرح يا استاذ ناصر

  10. (رقم الرد: 39361) #10
    تاريخ التسجيل
    17-12-2010
    الإقامة
    لبنان
    المشاركات
    562

    افتراضي

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

  11. (رقم الرد: 39362) #11
    تاريخ التسجيل
    17-12-2010
    الإقامة
    لبنان
    المشاركات
    562

    افتراضي

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

  12. (رقم الرد: 40010) #12
    تاريخ التسجيل
    06-01-2009
    الإقامة
    Jordan
    إصدار أوفيس
    2007
    المشاركات
    3,699

    افتراضي

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

    تصميم برامج قواعد البيانات الاكسيس
    تصميم صفحات ومواقع ويب PHP و MySQL
    دروس في الاكسيس والPHP والMYSQL عبر الماسنجر

  13. (رقم الرد: 41370) #13

    افتراضي

    شـكـراً لـك

  14. (رقم الرد: 45450) #14
    تاريخ التسجيل
    20-06-2009
    الإقامة
    مصر
    إصدار أوفيس
    2003
    المشاركات
    146

    افتراضي

    بارك الله فيك أستاذ ناصر .. زادك الله من فضله

  15. (رقم الرد: 45493) #15

    افتراضي

    بارك الله فيك أخي العزيز ناصر موضوع جميل وشيق وفقك الله

صفحة 1 من 2 12 الأخيرةالأخيرة

المواضيع المتشابهه

  1. حفظ صورة في المجلد باسم الموظف
    ابوراكان AAA في المنتدى النماذج (الشاشات)
    ردود: 3
    آخر مشاركة: 18-12-2010, 08:25
  2. أريد برنامج يعطيني تقرير عند وصول الصنف للحد الأدنى
    عيد حسن في المنتدى إعلانات الطلبات التجارية
    ردود: 0
    آخر مشاركة: 28-12-2009, 09:55
  3. نموذج/ فتح مربع الحوار نفس المجلد المحفوظ به البرنامج
    الشرقي2008 في المنتدى آكسس العام
    ردود: 4
    آخر مشاركة: 17-10-2009, 04:57
  4. ردود: 0
    آخر مشاركة: 23-06-2008, 02:14

مواقع النشر (المفضلة)

مواقع النشر (المفضلة)

ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  
website security