سال بسيط
لدي جدول فيه التاريخ و العداد اريد حساب الاستهلاك لكل يوم
ارجو المساعد
السلام عليكم
الاخت زهرة لك مشاركة سابقة في هذا الموضوع وكان الكود المستعمل تقريبا يشبه هذا
PreviousReading: DLookUp("[compteur]";"depot";"[N°]=" & [N°]-1)والان استعملت تعبير ثاني لم افهمه وخصوصا الرمز R2 هل يعني سطر ام حقل ام ماذا بالضبط ارجو شرح الكود الاتي:
PreviousReading: (SELECT MAX(R2.compteur) FROM depot As R2 WHERE R2.Date < Depot.Date )
وفقك الله .
سلامنا لكم كتب:السلام عليكم
الاخت زهرة لك مشاركة سابقة في هذا الموضوع وكان الكود المستعمل تقريبا يشبه هذا
PreviousReading: DLookUp("[compteur]";"depot";"[N°]=" & [N°]-1)والان استعملت تعبير ثاني لم افهمه وخصوصا الرمز R2 هل يعني سطر ام حقل ام ماذا بالضبط ارجو شرح الكود الاتي:
PreviousReading: (SELECT MAX(R2.compteur) FROM depot As R2 WHERE R2.Date < Depot.Date )وفقك الله .
اخي الفاضل : سلامنا لكم
السلام عليكم ورحمة الله وبركاته
كلا التعبيرين يؤدون نفس الغرض ولا يوجد بينهما فرق من حيث النتائج لذا حاول ان تركز معي قليلا حتى تكتسب بعض الخبره
التعبير الأول :
جميع الحقول الموجوده به مأخوذه من نفس الجدول ولم نأتي بشيء خارجي ( اعتقد ان التعبير سهل للغاية فليس به اي شيء خارج عن المألوف )
التعبير الثاني :
هنا يجب ان تركز جيدا لأن هذا التعبير جديد عليك
هذا التعبير نسميه استعلام فرعي !!!!
ما هو المقصود من الإستعلام الفرعي ؟؟؟
المقصود به بارك الله بك عندما لا نستطيع استخراج القيم بطريقة مباشره من الإستعلام الرئيسي نلجأ الى الإستعلام الفرعي
كيف نبني الإستعلام الفرعي ؟؟؟
يتم بناء الإستعلام الفرعي بناء على معيار واحد فقط نحدده ( احفظ هذه المعلومة - معيار واحد فقط ) بحيث نقوم بعمل التالي
1. نقوم بإنشاء استعلام جديد مبني على الجدول الأساسي
2. نأخذ الحقل المطلوب مقارنته مع الحقل الموجود في الإستعلام الرئيسي ( هنا اخذنا حقل compteur ) واخدنا حقل المعيار وهو Date
3. الآن موجود لدينا فقط حقلين وهما compteur و Date في الإستعلام الجديد
4. في حقل compteur نريد استخراج اكبر قيمة وطبعا سيكون بواسطة دالة MAX ( سهلة ولا يوجد بها مشكله )
5. الآن لو استعرضنا الإستعلام سيقوم بإظهار قيمة واحده فقط وهي اكبر قيمة في حقل compteur مع حقل التاريخ الخاص بها
6. اذا كل عملنا هذا هو متمحور حول هذه القيمة مع تاريخها وطبعا لا نستطيع عمله في الإستعلام الأساسي لأننا لن تستفيد شيء ابدا ولهذا نقوم بهذا العمل في استعلام جديد ( استعلام فرعي )
7. الآن بقيت خطوة واحدة وهامة جدا وهي نقوم بتغيير اسم الجدول من خلال الضغط بالماوس الأيمن على الجدول الموجدول في الإستعلام الجديد ونختار خصائص ثم في خانة ( اسم مستعار ) نضع الإسم الذي نريد مثلا R2
8. بعد تغيير اسم الجدول سنلاحظ ان اسم الجدول تغير من اسمه القديم Depot الى الإسم الجديد R2 في الإستعلام نفسه اسفل الحقول المختاره
9. الآن نضع في معيار التاريخ R2.Date < Depot.Date ( لاحظ معي كان اسم الجدول السابق قبل التغيير هو Depot ثم غيرناه الى R2 لكي ينظر له الإستعلام الأساسي على ان الإستعلام الفرعي مختلف تماما وبجدول مختلف تماما عن الجدول الأساسي مع العلم بأنه هو نفسه ولكن غيرنا الإسم فقط لا غير )
9. الآن كل ما علينا هو عرض الإستعلام في عرض SQL ونسخ عبارة SQL الإستعلام ومن ثم اخذها ووضعها في الإستعلام الأساسي لتصبح مثلا
SELECT MAX(R2.compteur) FROM depot As R2 WHERE R2.Date < Depot.Date
10. الآن تتم المقارنة بين القيم في الإستعلام الأساسي و الإستعلام الفرعي لتظهر لنا الناتج ثم نأخذ الناتج ونعمل به مانريد كما في الحل الموجود في المثال
طبعا انت تتساءل لماذا كل هذه الغلبة في هذه الطريقة مع ان التعبير الأول اسهل وابسط ولا يوجد به كل هذه الخطوات !!!
وطبع الإجابه هي التنوع في الحلول من الأبسط الى الأصعب ليكتسب الأعضاء خبره بعدة طرق من الحلول ولا يقتصر الحل على طريقة واحده
اتمنى انني القيت بعض الضوء مع هذا الشرح المبسط مع ان كل هذه الخطوات لا تستغرق منك اقل من دقيقة واحده فقط
بالتوفيق
السلام عليكم
اختي واستاذتنا كم ترددت في الرد ولاحياء في العلم
تغلبت في تطبيق الخطوات وبما انها طريقة جديدة علينا
افضل لو تطبيقيها على فديو مصور وتصوير الفديو اقل وقتا من كتابة الخطوات
واكثر فهما واسرع
وفقك الله
zahrah كتب:
يعطيك الف صحة و عافية
بارك الله فيك أستاذتنا (النجيبة) زهرة .. زادك الله علماً وبركة.
اللهم لك الحمد كما ينبغى لجلال وجهك وعظيم سلطانك .. لا إله إلا أنت سبحانك أنى كنت من الظالمين
samy_tech كتب:سال بسيط
لدي جدول فيه التاريخ و العداد اريد حساب الاستهلاك لكل يوم
ارجو المساعد
لكن من الافضل التكون هاكذا كيف يمكن ان تصبح هاكذا و شكرا
samy_tech كتب:لكن من الافضل التكون هاكذا كيف يمكن ان تصبح هاكذا و شكرا
تفضل اخي الكريم
الملف بعد التعديل بناء على طلبك
بالتوفيق
تم تعديل هذه المشاركة بواسطة zahrah في 10 يونيو 2012 في 09:38
zahrah كتب:
شكرا لكن اريد الاعتماد على التاريخ و الاستغناء على N° لو ممكن الطريقة و الف شكر
السلام عليكم
اخواني المشرفين والاعضاء
هل ممكن احد يوضح كيف تمت الاستعلامات
الفرعية في هذا المثال للاخت زهرة
واذا ممكن الشرح بالصور او الفديو
وانا لم اعرف كيف اظهر دالة max كحقل جديد؟
وشكرا للجميع
سلامنا لكم كتب:السلام عليكم
اخواني المشرفين والاعضاء
هل ممكن احد يوضح كيف تمت الاستعلامات
الفرعية في هذا المثال للاخت زهرة
واذا ممكن الشرح بالصور او الفديو
وانا لم اعرف كيف اظهر دالة max كحقل جديد؟
وشكرا للجميع
اخي الفاضل : سلامنا لكم
هل تعتقد ان موضوع الإستعلام الفرعي صعب للغايه
لا يا أخي الكريم انه اسهل وابسط من كتابة اسمك ولكنك مأخذ الأمور بطريقة عكسية وتعتقد ان الموضوع صعب
حتى ابسط لك الموضوع الى اقل درجة ممكنه
هل تستطيع انشاء استعلام عادي ؟؟
بكل تأكيد تستطيع عمل ذلك ولا يوجد لديك اي مشكلة
بحيث انك تأخذ اي جدول في قاعدة البيانات وتقوم بإنشاء استعلام مبني على هذا الجدول ( الأمر سهل وبسيط للغاية )
اذن اين تكمن مشكلتك !!!!
ستأتي الآن وتقول مشكلتي في الإستعلام الفرعي !!!
وانا اقول لك ليس هناك مشكله .....
والسبب انك لم تفتح مخك معي في الشرح الذي شرحته لك سابقا
حسنا لا يوجد مشكله ...
دعنا نقول جدلا اننا انشأنا استعلام عادي وبسيط جدا مبني على جدول وقمنا بفتحه فأظهر لنا نتائج عادية كأننا فتحنا الجدول ولا يوجد بينهما اي اختلاف
الآن نريد عمل فلتره او استخراج بيانات من هذا الإستعلام فما هي الطريقة ؟؟؟
بالطبع لا يوجد لنا سوى طريقتين :
الطريقة الأولى بعمل المعايير في الإستعلام
والطريقة الثانية بإستخدام استعلام فرعي
طبعا الطريقة الأولى سهلة ولا تحتاج الى شرح
اما الطريقة الثانية فهي بكتابة عبارة جملة استعلام داخل الإستعلام الأساسي
هذه العبارة ( جملة الإستعلام ) والمحشوره في الإستعلام الرئيسي نسميها استعلام فرعي
اذا الإستعلام الفرعي ما هو إلا عبارة عن جملة استعلام تم اضافتها للإستعلام الرئيسي
كيف تتم اضافة هذه الجملة ؟
حسنا دعنا الآن من الإستعلام الرئيسي
وسوف نقوم بعمل استعلام اخر جديد كليا ولكنه مبني على الجدول الذي به الإستعلام الرئيسي وفي هذه الحالة سنأخذ فقط في الإستعلام الجديد حقل او حقلين فقط
بالطبع انت ستسأل ما هي هذه الحقول التي سنأخذها ..
والإجابة على هذا السؤال هو انت من يحدد هذه الحقول وما هي المعلومات التي تريد استخراجها من الحقول المضافه
على سبيل المثال لو كان لدينا في الجدول حقل تاريخ ونريد في الإستعلام الجديد ان نظهر اكبر تاريخ في الإستعلام فما هي الدالة التي تستعدنا في ذلك
بكل تأكيد هي دالة MAX اذا سوف نستخدمها مع حقل التاريخ في استعلامنا الجديد وسيكون شكل جملة SQL بهذه الطريقة
SELECT MAX([Date]) AS R1 FROM Table1
الآن لو اخذنا جملة الإستعلام ووضعناها في حقل جديد في استعلامنا الرئيسي بهذه الطريقة
MyNewFiled:(SELECT MAX([Date]) FROM Table1)
هنا نسمى هذه الجملة استعلام فرعي
ارجو ان الصورة اتضحت الآن
لمزيد من المعلومات انظر هنا
استعلامات SQL الفرعية
http://office.microsoft.com/ar-sa/access-help/HA001231513.aspx
تداخل استعلام ضمن استعلام آخر أو في تعبير باستخدام استعلام فرعي
http://office.microsoft.com/ar-sa/access-help/HA010341863.aspx
SubQueries
http://www.frontpagemagic.com/SQL/SubQueries/index.htm
بالتوفيق
تم تعديل هذه المشاركة بواسطة zahrah في 16 يونيو 2012 في 14:17