الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكلة في البحث ببالتاريخ

مغلق
بدأه Menhad في 25 مايو 2006 · 20 رد · 2,538 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

هذه أول مشاركة لي في المنتدى واتمنى من الله أن لا تردونا خائبيين

لدي مشكلة عند البحث بالتاريخ بين تاريخيين ,

#2

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

وضح أكثر، ما نوع قاعدة البيانا Access ، Paradox ، Interbase ....؟

تتعامل مع القاعدة بإستعمال ADO أو غيرها....

/index.php?showtopic=29343

قطرة الماء تـثـقب الحجر.. لا بالعنف. لكن بتكرار المحاولة

at4re.gif

منتديات الفريق العربي للهندسة العكسية 不喜欢的勿入! www.at4re.com

#3

قاعدة البيانت من نوع Access أو MS SQL و اتعامل معها عن طريق ADO

#4

ما هي المشكلة التي واجهتك؟؟؟؟؟؟؟

اين تظهر؟؟؟؟؟

ماذا تتوقع اي من اين المشكلة؟؟؟؟؟؟؟؟؟؟؟؟

لماذا لا تعطي كل شيئ عندك شو الشغلة بالقطارة

انا اسف على هذا الرد ولكن!!

انظر كل مما يلي قد يفيدك في حل مشكلاتك هذه بعض المشاكل التي مرت في استخدام الكثير انظرفيها لكي ترى اجابتك

عندما لا تجد الاجابة ابقى اذكر المشكلة التي واجهتك

كيف اعمل باستعلام محصور بين تاريخين

مشكلة التاريخ مع SQL, 1/1/2006

مشكلة التاريخ في الاكسس عن طريق دلفي ؟؟؟

مشكلتي مع التواريخ

مشكلة في التعامل مع التاريخ في قواعد البيانات

مشترك جديد سؤال كيفية حساب المدة بين تاريخين على ان تكون بالأيام

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

#5

السلام عليكم

كنت طرحت مشكلة البحث بالتاريخ ,,

وقام الاخ waeldalol بالرد عليها بوضع مجموعة روابط ليس فيها حل المشكلة وجزاه الله خيرا

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

********

لدي مجموعة من البيانات في قاعدة بيانات اكسس واستعمل ADOqouery للبحث :

عندما اقوم بالاستعلام عن بيانات محصورة بين تاريخين متلا 01/01/2006 و 05/02/2006 وعرضها في تقرير فان القيم لا تكون صحيحة

ماهي صيغة البحث في الـSQL وكيف يمكن ضبط صيغة البحث (Format) بحيث يفرق بين اليوم والشهر

وهل هناك اعدادات خاصة لابد من ضبطها في الاعدادات الاقليمية و قاعدة البيانات قبل البدء .

وأخيرا اود بعد ذلك نقل قاعدة البيانات الى SQL Server هل هناك اختلاف في التعامل بالتاريخ اذ تم النقل

ارجو ان لا أكون قد اثقلت عليكم بكم الاسئلة .

وأسأل االه ان يجعلها في ميزان حسناتنا ولكم جزيل الشكر

ملاحظة : أرجو من الاخوة الافاضل تفصيل الشرح ليتسنى لكل الاضاء والزوار فهمه ولتعم الفائدة

وشكرا

#6

السلام عليكم

أخي في الوصلات فوق كل ما طرحته من أسئلة

ربما من الأحسن أن ترفق برنامج أو جزء من هنا حتى يمكن مساعدتك

d4baa0.gif
#7

السلام عليكم

أخي الكريم جرب هذا الكود

حيت انه يقوم بالاستعلام عن بيانات محصورة بين تاريخين

with ADOQuery1 do
begin
  Close;
  SQL.Clear;
  SQL.Add(' SELECT * FROM TabelName WHERE DATE Between  to_date('+QuotedStr(Edit1.Text)+',''dd/mm/yyyy'') ');
  SQL.Add(' AND to_date('+QuotedStr(Edit2.Text)+',''dd/mm/yyyy'')');
  Open;
end;

وبالتوفيق إن شاء الله :rolleyes:

..................بسم الله الرحمن الرحيم..................

وتعاونوا على البر والتقوى ولا تعاونوا على الإثم والعدوان

.............................................................................................................................

لنبدا دورة دلفي

سلسلة تعلم برمجة Pascal , تعلم اساسيات الباسكال

التحكم بمنفذ الطابعة عن طريق الدلفي

سلسلة دروس تعلم قواعد بيانات Midas

هيا لنبدأ بالApi

أفكار سريعة, مجموعة شفرات صغيرة وفاعله لدلفي

كتب + مواقع ::: مراجع مهمة للغة دلفي, مجموعة كتب مجانية + مواقع مفيدة

مكتبه الأكواد, أكواد وبرامج دلفي

.............................................................................................................................

18_07_05_10_53_18_1121752398da3wa_18.gif

#8

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

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

ولكن للاسف كلها لم تؤدي الغرض المطلوب

قمت بكتابة الكود التالي :

SQL.Add(' SELECT * FROM TabelName WHERE DATE Between to_date('+QuotedStr(Edit1.Text)+',''dd/mm/yyyy'') ');

SQL.Add(' AND to_date('+QuotedStr(Edit2.Text)+',''dd/mm/yyyy'')');

لكنه يعطي رسالة خطأ على (to_date) عند تنفيذ الاستفسار .

ثم كتبت الكود

SQL.Text(' SELECT * FROM TabelName WHERE DATE Between '+formatdate(''mm/dd/yyyy'',QuotedStr(Edit1.Text))+' AND '+formatdate(''mm/dd/yyyy'',QuotedStr(Edit2.Text)));

لكن هذه الطريقة تنجح مع Access فقط ولم تنجح مع MS SQL ,,,

ما هي صيغة الاستفسار المستخمدة اذا كانت قاعدة البيانات MS SQL .

ما هو نوع الحقل المستخم هل هو : SmallDate أم DateTime وايهما افضل .

مع العلم ان البحث بالتاريخ اساسا لم ينجح معي في MS SQL

للاهمية يرجى الاهتمام بالموضوع .

ولكم جزيل الشكر

#9

هذه المشكلة اخي الكريم تظهر في اغلب الاحيان عندما تخزن الوقت + التاريخ و بالتالي يكون هناك خطأ في النتائج

لحل هذه االمشكلة يمكنك استبدال الدالة formatedate بالدالة Convert لكي تحول النص الى تاريخ

كما فيما يلي

Sql.add('SELECT * FROM TabelName WHERE FieldDATE Between convert(datetime,' + QuotedStr(Edit1.Text)+' ,103) AND '
+ 'convert(datetime,' + QuotedStr(Edit2.Text)+',103))'

حيث التابع Convert في Ms SQL يقوم بالتحويل بين الانماط

و ال 103 هي عبارة عن تنسيق dmy اي يوم ثم شهر ثم سنة

ملاحظة:

التابع to_date يعمل بدل التابع Conevert و لكن في اوراكل لذلك لم يعمل معك

ارجوا الاستفادة

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

#10

بارك الله فيك اخي الكريم

وسوف اقوم بتجربة ذلك

#11

السلام عليكم

فمت بتجربة الكود السابق ولكن المشكلة مازالت قائمة

ولكن عندما تتبعت الخطأ وجدت ان المشكلة ليست في الكود وانما في قاعدة البيات حيث انني جعلت MS SQL هي التي تضع قيمة افتراضية للتاريخ , ثم قمت بتنفيذ الكود فقام بأظهار النتائج .

وعندما اكتب انا التاريخ , لا يظهر نتائج ؟؟؟؟

كيف هي صيغة كتابة التاريخ في MS SQL وما نوع الحقل هل هو (Smalldate) افضل ام (DateTime) وعندما اخزن التاريخ من البرنامج هل هو MM/dd/yyyy ام yyyy/dd/mm

سؤال اخير :

في الاكسس عندما اريد قيمة افتراضية تاريخ اليوم اكتب ()Date في خانة القيمة الفتراضية جربت ذلك مع MS SQL ولم تنجح ماذا افعل .

افيدونا جزاكم الله

#12
اقتباس
فمت بتجربة الكود السابق ولكن المشكلة مازالت قائمة

ولكن عندما تتبعت الخطأ وجدت ان المشكلة ليست في الكود وانما في قاعدة البيات حيث انني جعلت MS SQL هي التي تضع قيمة افتراضية للتاريخ , ثم قمت بتنفيذ الكود فقام بأظهار النتائج .

وعندما اكتب انا التاريخ , لا يظهر نتائج ؟؟؟؟

كيف هي صيغة كتابة التاريخ في MS SQL وما نوع الحقل هل هو (Smalldate) افضل ام (DateTime) وعندما اخزن التاريخ من البرنامج هل هو MM/dd/yyyy ام yyyy/dd/mm

لا يوجد فرق بين smalldate وبين datetiem سوى في حجم التخزين حيث Datetime يستطيع تخزين تاريخ اطول من Smalldate

بالنسبة للمشكلة التي تعاني منها التاريخ هو تاريخ و ماهما كان نوع ال Formate التي استخدمتها للتاريخ

ال Formate التي وضعتها في مشاركتي الاخيرة هي dd/mm/yyyy فيجب عليك ان تضع نفس الصيغة في edit لكي تكون طريقة المقارنة صحيحة

اقتباس
في الاكسس عندما اريد قيمة افتراضية تاريخ اليوم اكتب ()Date في خانة القيمة الفتراضية جربت ذلك مع MS SQL ولم تنجح ماذا افعل .

في MsSql التابع هو GetDate()

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

#13
اقتباس
في مشاركتي الاخيرة هي dd/mm/yyyy فيجب عليك ان تضع نفس الصيغة في edit لكي تكون طريقة المقارنة صحيحة

قمت بوضع نفس الصيغة في edit مع بيانات موجودة ولم تنجح العملية

ولكن مع القيمة الافتراضية التي يضعها MS SQL فأنه يظهر النتائج

#14

الاخ المشرف /

اذا كنت اريد يغة التاريخ mm/dd/yyyy فماذا يكون الرقم بدلا من 103

وارجو اجابتي على المشلكة السابقة .

#15
اقتباس
قمت بوضع نفس الصيغة في edit مع بيانات موجودة ولم تنجح العملية

ولكن مع القيمة الافتراضية التي يضعها MS SQL فأنه يظهر النتائج

عندما تكتب انت قيم التاريخ في MsSQL كيف يكون شكلها و عندما يكتبها ال MSSQL كيف يكون شكلها

هل بامكان عمل Test بسيط تظهر فيه الحالة لكي استطيع ان اطلع عليها

اقتباس
اذا كنت اريد يغة التاريخ mm/dd/yyyy فماذا يكون الرقم بدلا من 103

وارجو اجابتي على المشلكة السابقة .

102 انظر ال BooksOnline المرفق مع SQL Server فهو يعطيك تعليمات مفصلة حول هذا الامر

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

#16

استخدمت حالتين الاولى هي استيراد بيانات من الاكسس وكانت الصيغة 2005/30/6

والثانية اني كتبت التاريخ في الجدول مباشرة بصيغتين هما 6/30/2005 و 2005/6/30

وعندما يضع MS SQL التاريخ يكون 1900/1/1 مع اني وضعت القيمة الافتراضية 2006/6/6

هل هناك اي قاعدة لكتابة التواريخ من اليمين الى اليسار او العكس في MS SQL .

واذا بحثت عن التاريخ 1900/1/1 فأنه يظهر النتائج

#17

الاخ وليد هل من رد ؟؟؟؟

#18

ما زلت غير مقتنع بأن التعليمة التي كتبتها لم تعمل

نحن عندما كتبنا التعليمة السابقة نقوم بتحويل القيمة الموجودة داخل قاعدة البيانات الى صيغة معينة و انت تكتب صيغة مشابهة لهذه الصيغة

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

ارفق لي تطبيق بسيط تظهر فيه المشكلة و إن شاء الله يتم حلها

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

#19

وأخيرا بعد بحث و تجريب طويل ...

وشكر خاص للاخ waeldalol على اهتمامه ومتابعته للمشكلة .

أضع بين ايديكم حل مشكلة البحث بالتاريخ في SQL Server

فإذا كانت اعدادات التاريخ في جهازك MM/dd/yyyy فيمكنك كتابة هذا الكود وسينجح ان شاء الله

with ADOQuery1 do
 begin
 close;

 SQL.Text:='SELECT * FROM Sale WHERE (FieldDate  BETWEEN CONVERT(DATETIME, '''+Edit1.Text+''',102) '+
 'AND CONVERT(DATETIME,'''+Edit2.Text+''',102))';

 ExecSQL;
 open;
 end;
#20

اخى العزيز بالنسبة للSql server الرقم بدل 103 هو 102

وانت تستطيع معرفة هذه الارقام من صناعة جملة إستعلام على الإسكيو إل من نفس برنامج ال Sql sever

اتمنى ان تصل المعلومة لك و لغيرك

#21
SMART_DELPHI7 كتب:
اخى العزيز بالنسبة للSql server الرقم بدل 103 هو 102

ماذا تقصد اخي الكريم, الشيئ الذي يحدد انك تريد استخدام 103 او 102 او اي .... هو صيغة التاريخ المدخلة,,,,

و لقد تم حل المشكلة باستخدام 102 :D فلماذا وضعت مشاركاتك,,,,

اقتباس
وانت تستطيع معرفة هذه الارقام من صناعة جملة إستعلام على الإسكيو إل من نفس برنامج ال Sql sever

موجودة و مشروحة شرح كامل في books Online فماذا الحصول عليها بدون شرح من خلال تعليمة SQL :blink:

اقتباس
اتمنى ان تصل المعلومة لك و لغيرك

ماذا تقصد بهذه الجملة, لم افهم :D :unsure:

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

هذا الموضوع مغلق.

مواضيع مشابهة