فلترة بيانات جدول حسب تاريخين من سنوات مختلفة
#1
السلام عليكم ورحمة الله تعالى وبركاته

حول تمرين الفلترة
http://www.delphi4arab.net/forum/showthread.php?tid=553
فهمت ان فلترة تاريخ سنة معينة
قد اظفت في الجدول Table تاريخ جديد 21/01/2009
بعد ذلك قمت بضط على الزر فلم يبين لي الا التواريخ الخا صة بالسنة 2008
هل من المفروض تغير التاريخ كل مرة انا رايت في المثال المتغير y يتغيرy +1 لكن لماذا اظهر لي تواريخ 2008 فقط
هل يتغير بتلقاء نفسه عندما يكون تاريخ system ؟
كيف اعدل عليه مثلا عند الضغط على الزر يظهر لي السنة الخاصة بالجهاز
اي اذا كان تاريخ الجهاز 2008 يظهر التواريخ الخاصة ب 2008
اذا كان تاريخ الجهاز 2009 يظهر التواريخ الخاصة ب 2009
الرد
#2

بالنسبة للتمرين بالرابط فهو مثال فقط عن فلترة ف ينفس السنة 2008
بالنسبة للمتغير y كتبت y+1 لكن لو لاحظت كتبت 1 بالنسبة للشهر و 1 بالنسبة للسنة
اي اول يوم من سنة 2009 وبعدها لو لاحظت جيدا كتبت -1 للمتغير d2 اي انقصت يوم من ذلك التاريخ ليصبح اخر يوم من سنة2008 وهي مجرد طريقة لمعرفة اخر يوم بالشهر (31)
لذلك تظهر فقط تواريخ سنة 2008 والشهر المختار
ان اردت ان تكون السنة ماخوذة من الجهاز فيمكن
تغير الكود من
PHP كود :
m:= ComboBox1.ItemIndex + 1;
  
y := 2008; 
الى
PHP كود :
DecodeDate(now,y,m,d);
  
m:= ComboBox1.ItemIndex + 1; 
وانتبه الترتيب مهم جدا
يصبح المثال السابق بعد التعديل هكذا
PHP كود :
var
  
d,m,y: word;
  
d1,d2 : TDateTime;
begin
  DateSeparator
:='/';
  
ShortDateFormat:='DD/MM/YYYY';

  
DecodeDate(now,y,m,d);
  
m:= ComboBox1.ItemIndex + 1;

  
d1:=EncodeDate(y,m,1);
  if 
m=12 then d2:=EncodeDate(Y+1,1,1) else
  
d2:=EncodeDate(Y,M+1,1);
  
d2 := d2 -1 ;

  
Table1.Filter := '(Date>='+QuotedStr(DateToStr(d1))+') and (Date<='+QuotedStr(DateToStr(d2))+')';
  
Table1.Filtered := True;

  
Caption:= Table1.Filter;
end; 
انتبه اظفت متغير d فقط لكي استعمل DecodeDate

ان كنت تقصد شيئ اخر او فلترة من شهر من سنة الى شهر اخر من سنة اخرى فالمثال بحاجة لتعديل اخر
والسلام عليكم
الرد
#3
السلام عليكم ورحمة الله
واش نقولك يا خويا عزيز هذا هو مقصودي الله يعطيك الصحة و العافية ويعطيلك ما تتمنى
الرد
#4
من فضلك يا اخي عزيز عندي اشكالية اخري ان اردت ان تساعدني ساشرح لك
مثلا عندي
-1 زر عند الضغط يعرض لي مبيعات البارح
-2 زر عند الضغط يعرض لي مبيعات اليوم
-3 زر عند الضغط يعرض لي مبيعات الاسبوع
-4 زر عند الضغط يعرض لي مبيعات الشهر الحالي انتبه الان الاشكالية اني لم استطع تحديد التاريخ مع العلم اني استعمل 2 DateTimePicker واحد لتحديد تاريخ البداية والاخر لتحديد تاريخ النهاية عند الضغط على الزر يعرض لي النتائج ابتداء من تحديد التاريخ DateTimepecker1 مثلا ابتداءا من اليوم ؟
-5 زر عند الضغط يعرض لي مبيعات السنة
الاشكالية في كيفية حساب الايام الاسبوع ة الشهر و السنة بالتحديد يعني مثلا عند بداية التاريخ من اليوم عند وصول الى اليوم الاخير من الاسبوع او اليوم الاخير الشهر او السنة فقط

اظافة لشرح فقط :
عند الضغط على اي زر هو نفسه يحدد التاربخ في Datetimepicker1 et 2
الرد
#5

-1
PHP كود :
Table1.Filter := '(Date>='+QuotedStr(DateToStr(Date-1))+')'; 
2-
PHP كود :
Table1.Filter := '(Date>='+QuotedStr(DateToStr(Date))+')'; 
3-
بحاجة لتوضيح
حسب المنطق الاسبوع يبداء من الاحد
فهل تريده هكذا ام من السبت ؟
وهل الجمعية ضمن ايان الاسبوع ام لا ؟
4-
نفس الكود في ردي السابق السابق
وان اردت اظهار التواريخ في المكونين DateTimePicker
PHP كود :
DateTimePicker1.Date := d1;
  
DateTimePicker2.Date := d2; 
5-
تفس الكود في ردي السابق مع تعديل بسيط ليصبح
PHP كود :
var 
  
d,m,y: word; 
  
d1,d2 : TDateTime; 
begin 
  DateSeparator
:='/'; 
  
ShortDateFormat:='DD/MM/YYYY'; 

  
DecodeDate(now,y,m,d); 
  
d1:=EncodeDate(y,1,1); 
  
d2:=EncodeDate(Y,12,31); 

  
DateTimePicker1.Date := d1;
  
DateTimePicker2.Date := d2;
  
  
Table1.Filter := '(Date>='+QuotedStr(DateToStr(d1))+') and (Date<='+QuotedStr(DateToStr(d2))+')'; 
  
Table1.Filtered := True; 

end; 

والسلام عليكم
الرد
#6
اسمحوا لي بهذا من فضلكم هذا لكي تستطيع فهمي احسن

الاسبوع يبدا من يوم السبت والجمعة ايضا ضمن الايام


الملفات المرفقة
.rar   Formation.rar (الحجم : 346.31 ك ب / التحميلات : 326)
الرد
#7

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

تاريخ اليوم 28/01/2009

هل مبيعات اخر اسبوع هي ؟
1- من 24/01/2009 الى 30/01/2009
2- من 22/01/2009 الى 28/01/2009

هل مبيعات اخر شهر هي ؟
1- من 01/01/2009 الى 31/01/2009
2- من 28/12/2008 الى 28/01/2009

هل مبيعات اخر سنة هي ؟
1- من 01/01/2008 الى 31/12/2008
2- من 28/01/2008 الى 28/01/2009
الرد
#8
السلام عليكم ورحمة الله تعالى وبركاته يا اخي عزيز والله انك جدير بالثقة الله يعطيلك ما تتمنا انا كثرت عليك من الواضح اني لم احسن طريقة الحساب
فيما يخص
-1 مبيعات اخر الاسبوع هي
- من 28/01/2009 مثلا اذا كان اليوم الاربعاء سيحسب من يوم السبت الماضي اي اول يوم في الاسبوع اذا كان اليوم الخميس يحسب من اليوم الاول في الاسبوع

-2 مبيعات اخر شهر هي
من 28/01/2008 يحسب الى الوراء حتي تاريخ 01/01/2009 يعني اذا كان تاريخ اليوم 28/01/2009 يبدا الحساب من 28/01/2009 وينتهي فيبداية الشهر تما ما وكل مرة يزيد بيوم هو يحسب من البداية

- 3 مبيعات اخر سنة هي
من 28/01/2009 الى الوراء حتي تاريخ 01/01/2009 يعني اذا كان تاريخ اليوم 28/01/2009 هنا مثلا سيحسب من ابتدا اليوم الاول في السنة الجديدة حت اليوم اما اذا كان اليوم 29/01/2009 سيحسب 29 يوم للوراء حتي اليوم الاول من السنة الجديدة اضنك قد فهمتني يعني اذا كان تاريخ اليوم 28/03/2009 هذا سيعطيني مبيعات 3 اشهر ماضية

واسمحلي وشكرا الله يجعل كل هذا في ميزان حسناتك ان شاء الله
الرد
#9

الاسبوع الحالي
PHP كود :
DateTimePicker1.Date := date;
   
DateTimePicker2.Date := date;
   if 
dayofweek(date)<>7 then DateTimePicker1.Date := date-dayofweek(date); 
الشهر الحالي
PHP كود :
var
   
d,m,y:Word;
begin
   DecodeDate
(Date,y,m,d)
   
DateTimePicker1.Date := EncodeDate(y,m,1);
   
DateTimePicker2.Date := date;
end; 
السنة الحالية
PHP كود :
var
   
d,m,y:Word;
begin
   DecodeDate
(Date,y,m,d)
   
DateTimePicker1.Date := EncodeDate(y,1,1);
   
DateTimePicker2.Date := date;
end; 
والسلام عليكم
الرد
#10
السلام عليكم ورحمة الله تعالى وبركاته هذا هو المقصود تماما يا اخي عزيز شكرا لك ولكل عضو كان في عون اخيه الله يجازيك بكل خير ان شاء الله
الرد


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


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