تقييم الموضوع :
  • 1 أصوات - بمعدل 2
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] استتعلام بين تاريخين فى السكوال
#6
السلام عليكم....

نعم عانيت من هذه المشكلة - خاصة مع اختلاف إعدادات التاريخ من جهاز إلى آخر، و لكنني حللتها منذ زمن بعد مراجعة وثائق SQL Server و كيفية تعامله مع التاريخ، ثم كتبت دوال لهذا الغرض بحيث يصل التاريخ إلى SQL Server و يتعامل معه بشكل ثابت بصرف النظر عن إعدادات التاريخ في الجهاز.

ما يهمنا هنا إذا كنت ستتعامل مع قيمة التاريخ فقط في الحقل (دون اعتبار الوقت)، فاكتب الدالة التالية في Module:

كود :
Public Function SQLWhereDate(AField As String, ADate As Date, Optional AOperator As String = "=", Optional ADate2 As Date = #12/31/9999#) As String
    If AOperator = "><" Then
        ' BETWEEN:
        SQLWhereDate = "(CONVERT(datetime, CONVERT(nvarchar(10), " & AField & ", 103), 103) BETWEEN " _
                     & "CONVERT(datetime, '" & Format$(ADate, "dd/mm/yyyy") & "', 103)" _
                     & " AND CONVERT(datetime, '" & Format$(ADate2, "dd/mm/yyyy") & "', 103))"
    Else
        ' Other operators:
        SQLWhereDate = "(CONVERT(datetime, CONVERT(nvarchar(10), " & AField & ", 103), 103) " & AOperator _
                     & " CONVERT(datetime, '" & Format$(ADate, "dd/mm/yyyy") & "', 103))"
    End If
End Function

حيث:
- AField: اسم حقل التاريخ (String).
- ADate: قيمة التاريخ الذي تبحث عنه (Date). و إذا كنت تريد البحث عن نطاق من التواريخ فهذا يمثل تاريخ البداية.
- AOperator: عامل المقارنة (String) و هو اختياري، أي يمكنك إهماله حيث قيمته الافتراضية هي "=". العوامل المسموح بها هي عوامل المقارنة المعروفة بالإضافة إلى الرمزين "><" بهذا الشكل لاستعمال عبارة BETWEEN في جملة SELECT.
- ADate2: تاريخ النهاية (Date) و هو أيضاً اختياري، أي يمكنك إهماله. طبعاً ستحتاج إلى استعماله في حالة استعمال BETWEEN لتحديد تاريخ النهاية.

* مثال:
نفرض أن تاريخ البداية في Text1 و تارخ النهاية في Text2 و نريد البحث عن نطاق بين التاريخين:

كود :
SQLS = "SELECT * FROM TransMaster WHERE " & SQLWhereDate("NoteDate", CDate(Text1.Text), "><", CDate(Text2.Text))

*** النقطة المهمة في الموضوع هي كيفية تحويل الـ VB للـ String إلى Date (سواء كتحويل ضمني أو باستعمال CDate). حيث VB دائماً تأخذ بعين الاعتبار تنسيق التاريخ في النظام Windows حسب الإعدادات الإقليمية في لوحة التحكم. و هذا منطقي لأن عرض و معالجة التاريخ من المفترض أن يخضع لرغبة المستخدم و تفضيلاته حسب البلد الذي هو فيه.

هذا يعني أن ترتيب - أو شكل - التاريخ في مربعات النص (مثلاً اليوم أولاً أو الشهر أولاً) يجب أن يتفق مع إعدادات التاريخ في النظام.

نرجو الاستفادة و السلام.
بِسْمِ اللهِ الرَّحْمَنِ الرَّحِيمِ ( وَ مَا تُقَدِّمُوا لِأَنفُسِكُم مِّنْ خَيْرٍ تَجِدُوهُ عِندَ اللهِ هُوَ خَيْراً وَ أَعْظَمَ أَجْراً ) صَدَقَ اللهُ الْعَظِيمُ
الرد }}}
تم الشكر بواسطة: ahmedabdelaliem


الردود في هذا الموضوع
RE: استتعلام بين تاريخين فى السكوال - بواسطة ناجي إبراهيم - 24-02-14, 06:56 PM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  التحقق مما إذا كان التاريخ بين تاريخين آخرين dr.mostashar 1 1,371 12-08-20, 05:01 AM
آخر رد: بلدي
  البحث بين تاريخين mohfar 13 6,510 25-07-20, 11:08 PM
آخر رد: مصمم هاوي
  موضوع الاستعلام بين تاريخين - مكرر hannileo 1 1,464 05-02-20, 02:23 AM
آخر رد: Ahmed_Mansoor
  [vb6.0] المساعدة في طباعة تقرير بين تاريخين وادي العوضي 3 1,924 17-10-19, 12:18 PM
آخر رد: وادي العوضي
  [vb6.0] طريقة البحث بين تاريخين ahmedalrawad 3 2,488 10-09-18, 12:07 AM
آخر رد: جاسم عبد
  [vb6.0] ممكن المساعدة في اضافة الايام بين تاريخين في الفيلكس قريد mustafa mohamed 0 1,448 12-04-18, 04:30 PM
آخر رد: mustafa mohamed
  [vb6.0] سؤال عن كود عدد الايام بين تاريخين محمد حمد محمد 1 1,986 18-01-18, 01:51 AM
آخر رد: محمد حمد محمد
  البحث بين تاريخين مصمم هاوي 2 2,878 06-06-17, 03:17 AM
آخر رد: مصمم هاوي
  البحث بين تاريخين SQL 2008 +vb6 أبو عقيل 4 2,375 05-05-17, 08:57 AM
آخر رد: Ahmed_Mansoor
  [سؤال] اضافة combo لمجموعة البحث وعمل بحث بين تاريخين كنونو 5 3,393 26-11-16, 02:23 PM
آخر رد: Ahmed_Mansoor

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


يقوم بقرائة الموضوع: