المشاركات : 684
المواضيع 248
الإنتساب : Dec 2013
السمعة :
18
الشكر: 381
تم شكره 381 مرات في 232 مشاركات
السلام عليكم
كل عام وانتم بخير جميعا بمناسبة شهر رمضان المبارك
لي طلب بخصوص استعلام متقدم
الاستعلام خاص بتجميع الارصدة عن اشهر السنة
دة الجدول بقاعدة البيانات
ما اريدة ناتج الاستعلام كالاتي :-
1- العمود الاول يشمل الشهر والسنة 4/2019 , 5/2019 وفقا للشهور والايام بقاعدة البيانات
2- العمود الثاني يشمل إجمالي الايام التي تم بها عمليات بالشهر
3- العمود الثالث يشمل باقي مجموع ايام الشهر التي لم يتم اي عملية بها
4- العمود الرابع يشمل اجمالي الارباح بأيام الشهر
5- العمود الخامس يشمل اجمالي الخسائر التي تمت بالايام بالشهر
6- العمود السادس يشمل اجمالي الرصيد بفرق اجمالي الارباح واجمالي الخسائر عن الخسائر
7 - ان تتم العمليات وفقا لنتيجة البحث من تاريخ يتم من 2 DateTimePicker لتحديد الفترة فاذاكان تاريخ البحث من شهر لشهر اخر يتم تجميع العمليات ويظهر الشهر
4/2019 بالعمود الاول واذا كان البحث عن عمليات لايام شهر فقط يظهر بالعمود الاول بدل من الا شهر والسنة الايام واسم الشهر 1/4/2019 واجمالي العمليات لكل يوم من ايام الشهر
النتيجةالنهائية بعد البحث
المشاركات : 3,815
المواضيع 36
الإنتساب : Mar 2014
السمعة :
724
الشكر: 7238
تم شكره 6709 مرات في 3265 مشاركات
وعليكم السلام ورحمة الله وبركاته
فقط قم باستخدام الاستعلام التالى
كود :
SELECT
Format([treasur_date],"mm\,yyyy") AS `عن شهر`,
Count(Format([treasur_date],"dd")) AS `أيام العمل`,
(Max(Format(DateSerial(Year([treasur_date]),Month([treasur_date])+1,1)-1, "dd")) - Count(Format([treasur_date],"dd"))) AS `أيام بدون`,
Sum(treasur_profit) AS `آجمالي الربح`,
Sum(treasur_loss) AS `آجمالي الخسائر`,
(Sum(treasur_profit) - Sum(treasur_loss)) AS `الرصيد`
FROM treasur_tb
GROUP BY Format([treasur_date],"mm\,yyyy")
بهذا الاستعلام انت لا تحتاج الى تعديل المسميات فى عمود الداتا جريد
او تعديل اى شى فى ادوات الفورم
فقط استخدم الاتسعلام وسيتم عرض النتائج طبقاً للصورة التى لديك
كود الاستعلام لا يحتاج الى اى تغيرات فى المسميات او ما شبه
تم استخدام المسميات طبقاً لما هو موضح لديك بصورة الجدول بقاعدة البيانات
تحياتى لك
وتمنياتى لك التوفيق
المشاركات : 684
المواضيع 248
الإنتساب : Dec 2013
السمعة :
18
الشكر: 381
تم شكره 381 مرات في 232 مشاركات
11-05-19, 07:05 PM
(آخر تعديل لهذه المشاركة : 11-05-19, 07:09 PM {2} بواسطة محمد اسماعيل.)
(11-05-19, 03:46 PM)elgokr كتب : وعليكم السلام ورحمة الله وبركاته
فقط قم باستخدام الاستعلام التالى
كود :
SELECT
Format([treasur_date],"mm\,yyyy") AS `عن شهر`,
Count(Format([treasur_date],"dd")) AS `أيام العمل`,
(Max(Format(DateSerial(Year([treasur_date]),Month([treasur_date])+1,1)-1, "dd")) - Count(Format([treasur_date],"dd"))) AS `أيام بدون`,
Sum(treasur_profit) AS `آجمالي الربح`,
Sum(treasur_loss) AS `آجمالي الخسائر`,
(Sum(treasur_profit) - Sum(treasur_loss)) AS `الرصيد`
FROM treasur_tb
GROUP BY Format([treasur_date],"mm\,yyyy")
بهذا الاستعلام انت لا تحتاج الى تعديل المسميات فى عمود الداتا جريد
او تعديل اى شى فى ادوات الفورم
فقط استخدم الاتسعلام وسيتم عرض النتائج طبقاً للصورة التى لديك
كود الاستعلام لا يحتاج الى اى تغيرات فى المسميات او ما شبه
تم استخدام المسميات طبقاً لما هو موضح لديك بصورة الجدول بقاعدة البيانات
تحياتى لك
وتمنياتى لك التوفيك
في مشكلة بسيطة بالجزء دة كدة هيعد الخلايا او عدد العمليات يعني لو ايام العمل حصل عمليتين ربح ليوم واحد يبقي اليوم مكرر انا عايز اليوم الواحد لو حصل فية اكتر من عملية واحدة يصبح ايام العمل 1 يعني تجمع عمليات اليوم ولكن يظهر ايام العمل بدون تكرار
كود :
Count(Format([treasur_date],"dd")) AS `أيام العمل`,
[url=https://www.w3schools.com/sql/sql_distinct.asp][/url]
المشاركات : 3,815
المواضيع 36
الإنتساب : Mar 2014
السمعة :
724
الشكر: 7238
تم شكره 6709 مرات في 3265 مشاركات
11-05-19, 09:19 PM
(آخر تعديل لهذه المشاركة : 11-05-19, 09:20 PM {2} بواسطة elgokr.)
ولا يهمك اليك الكود لتجنب تلك المشكلة
وتذكر لا تعدل كذلك على كود الاستعلام الا اذا كنت
على دراية كيفية التعامل معه والتعديل عليه
كود :
SELECT
Format(Tre.MyDate,"mm\,yyyy") AS `عن شهر`,
Count(Format(Tre.MyDay,"dd")) AS `أيام العمل`,
(Max(Format(DateSerial(Year(Tre.MyDate),Month(Tre.MyDate)+1,1)-1, "dd")) - Count(Format(Tre.MyDay,"dd"))) AS `أيام بدون`,
Sum(Tre.Profit) AS `آجمالي الربح`,
Sum(Tre.Loss) AS `آجمالي الخسائر`,
(Sum(Tre.Profit) - Sum(Tre.Loss)) AS `الرصيد`
FROM (SELECT
max(treasur_date) As MyDate,
Format([treasur_date],"dd\,mm") As MyDay,
Sum(treasur_profit) As Profit,
Sum(treasur_loss) As Loss
FROM treasur_tb
GROUP BY Format([treasur_date],"dd\,mm")) As Tre
GROUP BY Format(Tre.MyDate,"mm\,yyyy")
صورة تاكيد صحة عمل كود الاستعلام
فكما تشاهد الجدول يحتوى على يوم مكرر فى شهر 4 و 5
وبدل ما يجمع الايام المكررة تم جمع المبالغ فقط
ليعرض 2 يوم فى شهر 4 بدلاً من 3
وكذلك 3 يوم فى شهر 5 بدلاً من 4
ولاحظ الاجمالى لجميع الربح والخسارة تعمل بدون ادني مشكلة
تحياتى لك
وتمنياتى لك التوفيق
المشاركات : 684
المواضيع 248
الإنتساب : Dec 2013
السمعة :
18
الشكر: 381
تم شكره 381 مرات في 232 مشاركات
12-05-19, 07:14 PM
(آخر تعديل لهذه المشاركة : 12-05-19, 07:15 PM {2} بواسطة محمد اسماعيل.)
(11-05-19, 09:19 PM)elgokr كتب : ولا يهمك اليك الكود لتجنب تلك المشكلة
وتذكر لا تعدل كذلك على كود الاستعلام الا اذا كنت
على دراية كيفية التعامل معه والتعديل عليه
كود :
SELECT
Format(Tre.MyDate,"mm\,yyyy") AS `عن شهر`,
Count(Format(Tre.MyDay,"dd")) AS `أيام العمل`,
(Max(Format(DateSerial(Year(Tre.MyDate),Month(Tre.MyDate)+1,1)-1, "dd")) - Count(Format(Tre.MyDay,"dd"))) AS `أيام بدون`,
Sum(Tre.Profit) AS `آجمالي الربح`,
Sum(Tre.Loss) AS `آجمالي الخسائر`,
(Sum(Tre.Profit) - Sum(Tre.Loss)) AS `الرصيد`
FROM (SELECT
max(treasur_date) As MyDate,
Format([treasur_date],"dd\,mm") As MyDay,
Sum(treasur_profit) As Profit,
Sum(treasur_loss) As Loss
FROM treasur_tb
GROUP BY Format([treasur_date],"dd\,mm")) As Tre
GROUP BY Format(Tre.MyDate,"mm\,yyyy")
صورة تاكيد صحة عمل كود الاستعلام
فكما تشاهد الجدول يحتوى على يوم مكرر فى شهر 4 و 5
وبدل ما يجمع الايام المكررة تم جمع المبالغ فقط
ليعرض 2 يوم فى شهر 4 بدلاً من 3
وكذلك 3 يوم فى شهر 5 بدلاً من 4
ولاحظ الاجمالى لجميع الربح والخسارة تعمل بدون ادني مشكلة
تحياتى لك
وتمنياتى لك التوفيق
بارك اللَّة فيك
تم اتمام الاجابة كاملة
المشاركات : 3,815
المواضيع 36
الإنتساب : Mar 2014
السمعة :
724
الشكر: 7238
تم شكره 6709 مرات في 3265 مشاركات
لى ولك وللجميع يارب
تحياتى لك
وتمنياتى لك التوفيق
|