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

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

عند محاولة البحث بين تاريخين باستعمال 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 نقاط)
عُدل بواسطة | 98 مشاهدات

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 

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

اسئلة متعلقة

+1 تصويت
0 إجابة
سُئل سبتمبر 2، 2018 في تصنيف SQL Server بواسطة Yamada Fakir (1,690 نقاط) | 61 مشاهدات
+4 تصويتات
1 إجابة
سُئل أغسطس 30، 2018 في تصنيف Database بواسطة djaoui (1,410 نقاط) | 77 مشاهدات
+4 تصويتات
1 إجابة
+1 تصويت
1 إجابة
سُئل أبريل 19 في تصنيف SQL Server بواسطة hidenpain (1,230 نقاط) | 82 مشاهدات
+4 تصويتات
3 إجابة
سُئل أغسطس 10، 2018 في تصنيف vcl بواسطة Ammar Salah (2,080 نقاط) | 76 مشاهدات
ادعُ اصدقائك في الفايسبوك لمشاركتك
Comodo SSL

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

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

408 سؤال
642 إجابة
1,150 تعليق
242 مستخدم