EasyDelphi Q&A
+2 تصويتات
129 مشاهدات

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

عند محاولة البحث بين تاريخين باستعمال DateTimePicker ورغم تغير تنسيق "Format" التاريخ يحدث مشكلين:

01- يعطي نتيجة ولكن خاطأ اذا كان اليوم <= 12

02- يعطي رسالة خطأ تعلم ان التاريخ خارج النطاق, اذا كان اليوم > 12

مثال مرفق:

procedure TForm3.Button3Click(Sender: TObject);
begin
DateTimePicker1.Format:='MM-dd-yyyy';
DateTimePicker2.Format:='MM-dd-yyyy';
if RadioButton4.Checked=true then
begin
  ADOQuery1.Active:=false;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('SELECT [nordre],[code_prod],[code_four],[pesee1],[date1],'
      +'[heure1],[matricule],[pesee2],[date2],[heure2],[net],[ttc],[etat],'
      +'[observat],[chauffeur]'
      +'FROM [dbo].[peserprod]'
      +'where [code_four]= '''+ComboBox1.Text +''' and '
      +' [date2] Between '''+datetostr(DateTimePicker1.Datetime)+''' and '''+datetostr(DateTimePicker2.Datetime)+'''');
  DBGrid1.DataSource:=DataSource1;
  ADOQuery1.Active:=true;

end;
if RadioButton5.Checked=true then
begin
  ADOQuery1.Active:=false;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('SELECT [nordre],[code_prod],[code_four],[pesee1],[date1],'
      +'[heure1],[matricule],[pesee2],[date2],[heure2],[net],[ttc],[etat],'
      +'[observat],[chauffeur]'
      +'FROM [dbo].[peserprod]'
      +'where [code_prod]= '''+ComboBox2.Text+''' and '
      +' [date2] Between '''+datetostr(DateTimePicker1.Datetime)+''' and '''+datetostr(DateTimePicker2.Datetime)+'''');
  DBGrid1.DataSource:=DataSource1;
  ADOQuery1.Active:=true;

end;
if RadioButton6.Checked=true then
begin
  ADOQuery1.Active:=false;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('SELECT [nordre],[code_prod],[code_four],[pesee1],[date1],'
      +'[heure1],[matricule],[pesee2],[date2],[heure2],[net],[ttc],[etat],'
      +'[observat],[chauffeur]'
      +'FROM [dbo].[peserprod]'
      +'where [matricule]= '''+ComboBox3.Text+''' and '
      +' [date2] Between '''+datetostr(DateTimePicker1.Datetime)+''' and '''+datetostr(DateTimePicker2.Datetime)+'''');
  DBGrid1.DataSource:=DataSource1;
  ADOQuery1.Active:=true;

end;

DateTimePicker1.Format:='dd-MM-yyyy';
DateTimePicker2.Format:='dd-MM-yyyy';
end
سُئل في تصنيف Delphi بواسطة (4,210 نقاط)
عُدل بواسطة | 129 مشاهدات

1 إجابة واحدة

+2 تصويتات
أفضل إجابة

حاول أن تستعمل البرامترات عوض القيم المباشرة من المكونين "DateTimePicker1" و "DateTimePicker2"

وذلك لتفادي إستعمال التنسيق اليدوي .... و أترك البرامترات هي التي تقوم بذلك ...

كمثال :

//...... 
   +' [date2] Between :PDatePicker1 and :PDatePicker2');
  ADOQuery1.Parameters.ParamByName('PDatePicker1').Value := DateTimePicker1.Date; // Where the DataType of the Parameter "PDatePicker1" Must be "ftDateTime"
  ADOQuery1.Parameters.ParamByName('PDatePicker2').Value := DateTimePicker2.Date; // Where the DataType of the Parameter "PDatePicker2" Must be "ftDateTime"
  DBGrid1.DataSource:=DataSource1;
  ADOQuery1.Open;  

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

var
  VDatePicker1,
  VDatePicker2: String;
begin
  VDatePicker1 := FormatDateTime('DD/MM/YYYY', DateTimePicker1.Date);
  VDatePicker2 := FormatDateTime('DD/MM/YYYY', DateTimePicker2.Date);
//.....
   +' [date2] Between #' +  VDatePicker1 +'# and #'+ VDatePicker1 +'#');
   
  DBGrid1.DataSource:=DataSource1;
  ADOQuery1.Open;

و حظا طيبا wink 

تم الرد عليه بواسطة (20,950 نقاط)
مختارة بواسطة
0
شكراً و بارك الله فيك.
عند تجريب الكود يوجد خطأ في asDatetime لبراماتر
ربط لصورة الخطاء: https://yassinebendaoud.page.link/4v3Q
0
لقد عدلت الأجابة حاول أن تطبق أحد الحلين أعلاه ....
0
جزاك الله خيرا

اسئلة متعلقة

+2 تصويتات
0 إجابة
سُئل سبتمبر 2، 2018 في تصنيف SQL Server بواسطة Yamada Fakir (1,730 نقاط) | 75 مشاهدات
+4 تصويتات
1 إجابة
سُئل أغسطس 30، 2018 في تصنيف Database بواسطة djaoui (1,410 نقاط) | 210 مشاهدات
0 تصويتات
0 إجابة
سُئل يوليو 30 في تصنيف Delphi بواسطة عائشة (340 نقاط) | 14 مشاهدات
+4 تصويتات
1 إجابة
سُئل أغسطس 2، 2018 في تصنيف Delphi بواسطة mahieddine (570 نقاط) | 110 مشاهدات
0 تصويتات
1 إجابة
ادعُ اصدقائك في الفايسبوك لمشاركتك
Comodo SSL

مرحبًا بك إلى EasyDelphi Q&A، حيث يمكنك طرح الأسئلة والحصول على الإجابة عليها من المستخدمين الآخرين.

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

464 سؤال
703 إجابة
1,320 تعليق
272 مستخدم