السلام عليكم ورحمة الله
هذه أول مشاركة لي في المنتدى واتمنى من الله أن لا تردونا خائبيين
لدي مشكلة عند البحث بالتاريخ بين تاريخيين ,
السلام عليكم ورحمة الله
هذه أول مشاركة لي في المنتدى واتمنى من الله أن لا تردونا خائبيين
لدي مشكلة عند البحث بالتاريخ بين تاريخيين ,
السلام عليكم ورحمة الله
وضح أكثر، ما نوع قاعدة البيانا Access ، Paradox ، Interbase ....؟
تتعامل مع القاعدة بإستعمال ADO أو غيرها....
قطرة الماء تـثـقب الحجر.. لا بالعنف. لكن بتكرار المحاولة
منتديات الفريق العربي للهندسة العكسية 不喜欢的勿入! www.at4re.com
قاعدة البيانت من نوع Access أو MS SQL و اتعامل معها عن طريق ADO
ما هي المشكلة التي واجهتك؟؟؟؟؟؟؟
اين تظهر؟؟؟؟؟
ماذا تتوقع اي من اين المشكلة؟؟؟؟؟؟؟؟؟؟؟؟
لماذا لا تعطي كل شيئ عندك شو الشغلة بالقطارة
انا اسف على هذا الرد ولكن!!
انظر كل مما يلي قد يفيدك في حل مشكلاتك هذه بعض المشاكل التي مرت في استخدام الكثير انظرفيها لكي ترى اجابتك
عندما لا تجد الاجابة ابقى اذكر المشكلة التي واجهتك
كيف اعمل باستعلام محصور بين تاريخين
مشكلة التاريخ مع SQL, 1/1/2006
مشكلة التاريخ في الاكسس عن طريق دلفي ؟؟؟
مشكلة في التعامل مع التاريخ في قواعد البيانات
مشترك جديد سؤال كيفية حساب المدة بين تاريخين على ان تكون بالأيام
رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.
لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"
السلام عليكم
كنت طرحت مشكلة البحث بالتاريخ ,,
وقام الاخ waeldalol بالرد عليها بوضع مجموعة روابط ليس فيها حل المشكلة وجزاه الله خيرا
ناسف على الاطالة المهم اود طرح المشكلة يشكل اوضح وأتمنى من جميع الاعضاء الا يبخلوا علينا بالاجابة
********
لدي مجموعة من البيانات في قاعدة بيانات اكسس واستعمل ADOqouery للبحث :
عندما اقوم بالاستعلام عن بيانات محصورة بين تاريخين متلا 01/01/2006 و 05/02/2006 وعرضها في تقرير فان القيم لا تكون صحيحة
ماهي صيغة البحث في الـSQL وكيف يمكن ضبط صيغة البحث (Format) بحيث يفرق بين اليوم والشهر
وهل هناك اعدادات خاصة لابد من ضبطها في الاعدادات الاقليمية و قاعدة البيانات قبل البدء .
وأخيرا اود بعد ذلك نقل قاعدة البيانات الى SQL Server هل هناك اختلاف في التعامل بالتاريخ اذ تم النقل
ارجو ان لا أكون قد اثقلت عليكم بكم الاسئلة .
وأسأل االه ان يجعلها في ميزان حسناتنا ولكم جزيل الشكر
ملاحظة : أرجو من الاخوة الافاضل تفصيل الشرح ليتسنى لكل الاضاء والزوار فهمه ولتعم الفائدة
وشكرا
السلام عليكم
أخي في الوصلات فوق كل ما طرحته من أسئلة
ربما من الأحسن أن ترفق برنامج أو جزء من هنا حتى يمكن مساعدتك
السلام عليكم
أخي الكريم جرب هذا الكود
حيت انه يقوم بالاستعلام عن بيانات محصورة بين تاريخين
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
أفكار سريعة, مجموعة شفرات صغيرة وفاعله لدلفي
كتب + مواقع ::: مراجع مهمة للغة دلفي, مجموعة كتب مجانية + مواقع مفيدة
مكتبه الأكواد, أكواد وبرامج دلفي
.............................................................................................................................

السلام عليكم ورحمة الله
اود ان اشكر جميع الاخوة على الردود و الحلول التي تقدموا بها
ولكن للاسف كلها لم تؤدي الغرض المطلوب
قمت بكتابة الكود التالي :
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
للاهمية يرجى الاهتمام بالموضوع .
ولكم جزيل الشكر
هذه المشكلة اخي الكريم تظهر في اغلب الاحيان عندما تخزن الوقت + التاريخ و بالتالي يكون هناك خطأ في النتائج
لحل هذه االمشكلة يمكنك استبدال الدالة 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 و لكن في اوراكل لذلك لم يعمل معك
ارجوا الاستفادة
رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.
لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"
بارك الله فيك اخي الكريم
وسوف اقوم بتجربة ذلك
السلام عليكم
فمت بتجربة الكود السابق ولكن المشكلة مازالت قائمة
ولكن عندما تتبعت الخطأ وجدت ان المشكلة ليست في الكود وانما في قاعدة البيات حيث انني جعلت MS SQL هي التي تضع قيمة افتراضية للتاريخ , ثم قمت بتنفيذ الكود فقام بأظهار النتائج .
وعندما اكتب انا التاريخ , لا يظهر نتائج ؟؟؟؟
كيف هي صيغة كتابة التاريخ في MS SQL وما نوع الحقل هل هو (Smalldate) افضل ام (DateTime) وعندما اخزن التاريخ من البرنامج هل هو MM/dd/yyyy ام yyyy/dd/mm
سؤال اخير :
في الاكسس عندما اريد قيمة افتراضية تاريخ اليوم اكتب ()Date في خانة القيمة الفتراضية جربت ذلك مع MS SQL ولم تنجح ماذا افعل .
افيدونا جزاكم الله
اقتباسفمت بتجربة الكود السابق ولكن المشكلة مازالت قائمةولكن عندما تتبعت الخطأ وجدت ان المشكلة ليست في الكود وانما في قاعدة البيات حيث انني جعلت 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()
رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.
لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"
اقتباسفي مشاركتي الاخيرة هي dd/mm/yyyy فيجب عليك ان تضع نفس الصيغة في edit لكي تكون طريقة المقارنة صحيحة
قمت بوضع نفس الصيغة في edit مع بيانات موجودة ولم تنجح العملية
ولكن مع القيمة الافتراضية التي يضعها MS SQL فأنه يظهر النتائج
الاخ المشرف /
اذا كنت اريد يغة التاريخ mm/dd/yyyy فماذا يكون الرقم بدلا من 103
وارجو اجابتي على المشلكة السابقة .
اقتباسقمت بوضع نفس الصيغة في edit مع بيانات موجودة ولم تنجح العمليةولكن مع القيمة الافتراضية التي يضعها MS SQL فأنه يظهر النتائج
عندما تكتب انت قيم التاريخ في MsSQL كيف يكون شكلها و عندما يكتبها ال MSSQL كيف يكون شكلها
هل بامكان عمل Test بسيط تظهر فيه الحالة لكي استطيع ان اطلع عليها
اقتباساذا كنت اريد يغة التاريخ mm/dd/yyyy فماذا يكون الرقم بدلا من 103وارجو اجابتي على المشلكة السابقة .
102 انظر ال BooksOnline المرفق مع SQL Server فهو يعطيك تعليمات مفصلة حول هذا الامر
رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.
لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"
استخدمت حالتين الاولى هي استيراد بيانات من الاكسس وكانت الصيغة 2005/30/6
والثانية اني كتبت التاريخ في الجدول مباشرة بصيغتين هما 6/30/2005 و 2005/6/30
وعندما يضع MS SQL التاريخ يكون 1900/1/1 مع اني وضعت القيمة الافتراضية 2006/6/6
هل هناك اي قاعدة لكتابة التواريخ من اليمين الى اليسار او العكس في MS SQL .
واذا بحثت عن التاريخ 1900/1/1 فأنه يظهر النتائج
الاخ وليد هل من رد ؟؟؟؟
ما زلت غير مقتنع بأن التعليمة التي كتبتها لم تعمل
نحن عندما كتبنا التعليمة السابقة نقوم بتحويل القيمة الموجودة داخل قاعدة البيانات الى صيغة معينة و انت تكتب صيغة مشابهة لهذه الصيغة
فما المشكلة لا اعرف ارجوا ان ترفق لي تطبيق بسيط تشرح فيه المشكلة لانها عندي شغالة بدون مشاكل
ارفق لي تطبيق بسيط تظهر فيه المشكلة و إن شاء الله يتم حلها
رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.
لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"
وأخيرا بعد بحث و تجريب طويل ...
وشكر خاص للاخ 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;
اخى العزيز بالنسبة للSql server الرقم بدل 103 هو 102
وانت تستطيع معرفة هذه الارقام من صناعة جملة إستعلام على الإسكيو إل من نفس برنامج ال Sql sever
اتمنى ان تصل المعلومة لك و لغيرك
SMART_DELPHI7 كتب:اخى العزيز بالنسبة للSql server الرقم بدل 103 هو 102
ماذا تقصد اخي الكريم, الشيئ الذي يحدد انك تريد استخدام 103 او 102 او اي .... هو صيغة التاريخ المدخلة,,,,
و لقد تم حل المشكلة باستخدام 102 :D فلماذا وضعت مشاركاتك,,,,
اقتباسوانت تستطيع معرفة هذه الارقام من صناعة جملة إستعلام على الإسكيو إل من نفس برنامج ال Sql sever
موجودة و مشروحة شرح كامل في books Online فماذا الحصول عليها بدون شرح من خلال تعليمة SQL :blink:
اقتباساتمنى ان تصل المعلومة لك و لغيرك
ماذا تقصد بهذه الجملة, لم افهم :D :unsure:
رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.
لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"
هذا الموضوع مغلق.