![]() |
|
كتابة التاريخ في جملة ال sql - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم قواعد البيانات (http://vb4arb.com/vb/forumdisplay.php?fid=40) +--- قسم : قسم اسئلة vb6.0 المتعلقة بقواعد البيانات (http://vb4arb.com/vb/forumdisplay.php?fid=72) +--- الموضوع : كتابة التاريخ في جملة ال sql (/showthread.php?tid=6578) |
كتابة التاريخ في جملة ال sql - اسلام الكبابى - 20-10-12 كتبت هذا الكود وكتبت فيه جملة ال SQL بأكثر من أسلوب وفى كل مرة يقبل الجملة اذا كان التاريخ فبها مقدار ثابت ويعترض على الجملة اذا كان التاريخ فبها متغير PHP كود : Dim dateACT As Stringفحين كتبت الكود السابق وقمت بعمل الRUN اعترض على جملة الSQL وحين حذفت متغير التاريخ dateACT من جملة الSQL واستبدلته بأى تاريخ ثابت فكتبتهاهكذا لم يعترض ونفذ الكود تنفيذآ صحيحآ PHP كود : RS.Open "select * from TABLE1 where (#22/4/2011# BETWEEN date1 AND date2 ) ", db,adOpenStatic,adLockReadOnly وأعدت كتابة جملة الSQL بأسلوب آخر فحين كتبتها هكذا اعترض علبها PHP كود : RS.Open "select * from TABLE1 where (dateACT >= date1) And (" & dateACT & " < date2)", db, adOpenStatic, adLockReadOnly وحين حذفت متغير التاريخ dateACT من جملة الSQL واستبدلته بأى تاريخ ثابت فكتبتهاهكذا لم يعترض ونفذ الكود تنفيذآ صحيحآ PHP كود : RS.Open "select * from TABLE1 where (#22/4/2011#>= date1) And (" & dateACT & " < date2)", db, adOpenStatic, adLockReadOnly فكيف حل هذه المشكلة ولكم ألف شكر كتابة التاريخ في جملة ال sql - mmali127 - 20-10-12 تفضل هذا الكود انشاء الله سيفى بالغرض Dim from As Date from = Format(text1, "mm/dd/yyyy") Too = Format(text2, "mm/dd/yyyy") Select * from tb1 where Dare between #" & CDate(from) & "# AND #" & CDate(Too) كتابة التاريخ في جملة ال sql - اسلام الكبابى - 20-10-12 للأسف لم يفلح الكود لاحظ أن [SIZE=3]المتغيرين[/SIZE][SIZE=3] date1 وdate2 الموجودين فى كودى والذين استبدتهما أنت فى كودك بالمتغيرين from و too لاحظ أنهما حقلين فى جدول قاعدة البيانات وليسا متغيرين يعطيان فى text وشكرآ[/SIZE] كتابة التاريخ في جملة ال sql - ناجي إبراهيم - 20-10-12 السلام عليكم... طبعاً سيعترض لأن dateACT هو متغير و ليس حقلاً في جدول قاعدة البيانات و لا يصح وضعه كما هو ضمن الـ String الخاص بجملة SELECT لأنه سينتقل كما هو إلى محرك قواعد البيانات و يحدث الخطأ. أنت في الواقع تريد قيمة هذا المتغير. جملة SELECT ستكون كالتالي: كود : Private Sub Command1_Click()نرجو الاستفادة و السلام. كتابة التاريخ في جملة ال sql - أبو أسامة - 21-10-12 ناجي إبراهيم كتب :السلام عليكم... السلام عليكم ورحمة الله فعلا سيعترض كما قال الأستاذ ناجى لأنdateACT متغير وليس حقل فى قاعدة البيانات وعلى حد علمى أن where لا يتبعها إلا اسم الحقل وليس المتغير أو قيمته و BETWEEN هى التى يتبعها اسم المتغير كا TextDATE.Text أو DTPicker وفى هذا الكود حدث الخطأ أيضا على رغم وضع قيمة المتغير (ولكنه ليس حقلا) وأعتقد أن البحث عن تاريخ يكون فى حقل واحد وليس حقلين هذا ما اعلمه عن البحث بين تاريخين "وفوق كل ذى علم عليم" المثال بالمرفقات كتابة التاريخ في جملة ال sql - اسلام الكبابى - 21-10-12 الأستاذ ناجي ابراهيم هوحلال العقد دائمآ المفروض يتعمل قسم فى المنتدى باسمه عشان اللى عايز يحل مشكلته بسرعة يتجه مباشرة لهذا القسم زادك الله من علمه وفضله كتابة التاريخ في جملة ال sql - أبو أسامة - 21-10-12 أعتقد أنى تسرعت فى الرد وكنت على خطأ ..عذرا يا أستاذ ناجى وهذه معلومة جديدة تعلمتها منك " وفوق كل ذى علم عليم" مثال الأستاذ ناجى http://vb4arb.com/vb/uploaded/630_01350767209.rar كتابة التاريخ في جملة ال sql - اسلام الكبابى - 22-10-12 إقتباس : dateACT = "#" & Format(CDate(TextDATE.Text), "mm/dd/yyyy") & "#" أستسمحك يا أستاذ/ناجى أن توضح لى متى تلزم جملةالفورمات للتاريخ ومتى لا تلزم أو أن تدلنى على درس يشرح فيه كاتب الموضوع هذهالنقطة ولك مليوووون شكر كتابة التاريخ في جملة ال sql - ناجي إبراهيم - 22-10-12 السلام عليكم... أنا أستعملها دائماً عند إدخال التواريخ في جمل SQL، و السبب بسيط: جميع محركات قواعد البيانات (Access و غيره) تخزن و تعامل التاريخ - داخلياً - بالتنسيق الأمريكي (mm/dd/yyyy) أي اليوم فبل الشهر، بينما التحويل الضمني (Implicit Conversion) و دوال تحويل التاريخ في VB6 تعتمد على إعدادات تنسيق التاريخ في لوحة التحكم التابعة للنظام Windows، و هذه طبعاً قد تختلف من جهاز إلى جهاز. كود : Dim MyDate1 As Date, MyDate2 As Dateالآن لنفرض أن أياً من مربعات النص تحتوي على 02/07/2012. ما هو هذا التاريخ؟ إذا سألت شخصاً يستعمل الصيغة الأمريكية فسيقول لك إنه 7 فبراير (شباط) 2012. و إذا سألت شخصاً يستعمل التنسيق الآخر (اليوم قبل الشهر) فسيقول إنه 2 يوليو (تموز) 2012. الأمر نفسه ينطبق على التحويل الضمني و دوال التحويل (كالدالة CDate) في الكود أعلاه، أي انهما قد تفسرانه على أنه 7 فبراير (شباط) 2012 أو 2 يوليو (تموز) 2012 بناءً على إعدادات تنسيق التاريخ في لوحة التحكم التابعة للنظام Windows. أنا - كمستخدم عربي - من المفترض أن تنسيق التاريخ في جهازي هكذا: dd/mm/yyyy (بعضهم يختصرها DMY) أي اليوم قبل الشهر، و طبعاً سأكتب في مربع النص اليوم قبل الشهر. لنفرض أن التاريخ الذي أقصده هو 2 يوليو (تموز) 2012، فسأكتبه هكذا: 02/07/2012. التحويل الضمني و دالة التحويل CDate - ستفسره بشكل صحيح كما أقصده، و لكن عندما أرسله إلى محرك قواعد بيانات كما هو فإن محرك قواعد البيانات سيعتبر أن 2 هو الشهر، و أن 7 هو اليوم، أي 7 فبراير (شباط) 2012، و هو ما لا أقصده! و لكن عندما أستعمل الدالة Format لتنسيق التاريخ بالصيغة المتوافقة مع ما يستعمله محرك قواعد البيانات (mm/dd/yyyy) فسأحصل دائماً على نتيجة صحيحة بصرف النظر عن تنسيق التاريخ لدى جهاز المستخدم. نرجو الاستفادة و السلام. كتابة التاريخ في جملة ال sql - اسلام الكبابى - 23-10-12 [SIZE=5]مشكووووور مليوووون شكر[/SIZE] |