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

ارجو المساعدة في البحث بتاريخ

مغلق
بدأه roni1980 في 5 أبريل 2006 · 25 رد · 1,965 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لسلام عليكم....

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

ثم تريد ان تبحت عن تاريخ تعيين الموظف في يوم معين على حسب ادخالك للتاريخ

عن طريق الاداة datatimepaker1

انا اعمل الكود التالي ولمن مرات يجيب التاريخ ومرات غير موجود على الرغم انه مخزن

قي الجدول....ز

عملت ب فيجول 6 ما في اي مشاكل ابحت على اي تاريخ ويعطي ليه ...

       x1 = Format(CDate(DateTimePicker1.Value), "dd/MM/yyyy")


       Dim sql As String = "select * from emp where data_1= #" & x1 & "# "

x2 = Format(CDate(DateTimePicker1.Value), "yyyy/MM/dd")
       


       Dim sql As String = "select * from emp where data_1= #" & x2 & "# "

x2 = Format(CDate(DateTimePicker1.Value), "dd/MM/yyyy")
       


       Dim sql As String = "select * from emp where data_1= #" & x2 & "# "

جربت جميع الاحتماالات معنه تشتغل 100*100 في vb6

ارجو اي من الاخوة ان يرفق مثال البحت بالتاريخ واذاكان موجود يبين رسالة بانه موجود التاريخ

مسبقا ...

اي مثال المهم يبين طريقة البحت بتاريخ .

تم تعديل هذه المشاركة بواسطة hazzoom في 5 أبريل 2006 في 17:38

#2

عزيزي لا داعي لإضافة المشاركة مرتين

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

/index.php?showtopic=92041

وكانت إجابته واضحة

نعم لقد تم تغيير # إلى ' في حالة التاريخ بالنسبة SQL

moh4evar@hotmail.com

cbb6a3b884f4f88b3a8e3d44c636cbd8.jpg

مركز تحميل الصور والملفات لغاية 10MB من دون فترة محددة لحذف الملفات

www.4img.com

#3

مشكورررررررررررررررر.......

سوف اجربه على الحال.........

#4

ما نفعت جربته ....

تقصدو ا الكود يصبح هكذا :

  Dim x1 As Date
        x1 = Format(CDate(DateTimePicker1.Value), "yyyy/MM/dd")
               Dim sql As String = "select * from emp where d_1= ' " & x1& " '  "
[CODE]
بدلا من

Dim x1 As Date

x1 = Format(CDate(DateTimePicker1.Value), "yyyy/MM/dd")

Dim sql As String = "select * from emp where d_1= #" & x1 & "# "

#5

جربت هذه الجملة:

 Dim sql As String = "select * from crudeoil1 where x = # 05/04/2006 # "

فلا يعثر عليه على الرغم انه موجود في الجدول ونوعية الحقل x في الجدول تاريخ

وجربت هذه الجملة يظهر خطا في الجملة

  Dim sql As String = "select * from crudeoil1 where data_1= ' 05/04/2006 ' "

ارجو المساعدة ...

#6

ياريت تعطينا رسالة الخطا

وجرب هذي

x2 = CDate(Format(DateTimePicker1.Value, "yyyy/MM/dd"))

<span style='color:green'>سؤل ابن عباس عن علمه كيف جمعه فقال :( أوتيت لسانا سؤولا وقلبا عقولا)</span>

#7

عزيزي جرب التالي

        Dim _dt As Date
        _dt = DateTimePicker1.Text
        Dim str As String
        str = "select * from crudeoil1 where data_1='" & _dt & "'"

هذه هي الطريقة وآسف على عدم شرحها مسبقا

moh4evar@hotmail.com

cbb6a3b884f4f88b3a8e3d44c636cbd8.jpg

مركز تحميل الصور والملفات لغاية 10MB من دون فترة محددة لحذف الملفات

www.4img.com

#8

مشكورررررررررررر.

سوف اجربها واعطيك النتيجة ان شاء الله ........

#9

جربتها ولم تكن مجديه لاسف ......

ومتاكد كما شرحته في سالفا ....

ولكن تعطي خطا في جملة

data type mismatch in criteria expression

هل انت متاكد من ان تم التغير # الى '

في الاستفسار ......

#10

أخي روني هذا برنامج فيه ما تحتاجه بالضبط

تأخر بالرد لأنني تأخرت في عمله

بالنسبة لإشارة # لم تلغى هذه الإشارة من ال SQL ولكن الحاصل ان هذه الإشارة

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

بالعادة لا استخدم الحقول من نوع تاريخ لذلك كان يحصل الخطأ معك وسوأ التفاهم من طرفي

أعتذر عن التصير ;)

TestDate.zip

moh4evar@hotmail.com

cbb6a3b884f4f88b3a8e3d44c636cbd8.jpg

مركز تحميل الصور والملفات لغاية 10MB من دون فترة محددة لحذف الملفات

www.4img.com

#11

أرجو أن تكون قد حلت مشكلت يا أخ roni1980 وآسف على التأخير لأنني لم أكن في المنتدى وقت إرسال الرسالة ، على كل حال أرى أن الشباب لم يقصروا جرب برنامج الأخ وخبرنا

ملاحظة : لم يعد هناك داعي لاستخدام التابع format لتنسيق التاريخ ، الآن التاريخ يملك عدة وظائف لتنسيقه مثلاً إذا كنت تريد تنسيق التاريخ dt كتاريخ قصير يكون ذلك كالتالي:

dt.toshortdatestring

بالتوفيق

#12

أخي العزيز

جرب هذا الكود وتاكد من الاقواص في الكود جيداً

Dim dt As Date
       dt = DateTimePicker1.Text
       Dim str As String
       str = "select * from crudeoil1 where data_1= " & "#" & dt & "#"

تم تعديل هذه المشاركة بواسطة aswany في 5 أبريل 2006 في 19:26

#13

أحد الحلول المقترحة

كما يمكنك استخدام باني الاستعلام الموجود ضمن بيئة التطوير حيث حصلت على الاستعلام التالي عندما قمت بتجربته على أحد قواعد البيانات التجريبية

SELECT     OrderID, CustomerID, OrderDate
FROM         Orders
WHERE     (OrderDate = CONVERT(DATETIME, '1996-07-04', 102))

حيث يمكن تعديله للحصول على استعلام شبيه بالتالي

Dim dt As Date
 dt = DateTimePicker1.Text
 Dim str As String

str = " SELECT     OrderID, CustomerID, OrderDate FROM         Orders " & _
  "WHERE     (OrderDate = CONVERT(DATETIME, '" & dt.ToString("dd-MM-yyyy") & "', 102))"

تم تعديل هذه المشاركة بواسطة samerselo في 5 أبريل 2006 في 20:00

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#14

السلام عليكم

اعتقد ان طريقة الاخ Samerselo هي التي نجحت معي انا ايضا ولكن اختلف معه في تعريف المتغيير dt

"dt = Format(DateTimePicker1.Value, "yyyy-MM-dd").ToString & " 00:00:00
Dim ad1 As New SqlDataAdapter("SELECT * from stock WHERE TRANSDT>=CONVERT(DATETIME,'" & d1 & "',102) and TRANSDT<=CONVERT(DATETIME,'" & d2 & "',102)", cn)


واستخدامي لل "00:00:00" لاني استخدم قاعدة بيانات sqlserver ولذلك جربت جميع الطرق ولم تنجح معي الا هذه الطريقة 
والله اعلم

تم تعديل هذه المشاركة بواسطة عبدالجليل العقوري في 5 أبريل 2006 في 20:57

"نحن لا نستسلم... ننتصر أو نموت.... وهذه ليست النهاية... بل سيكون عليكم أن تحاربوا الجيل القادم والاجيال التي تليه... اما أنا... فإن عمري سيكون أطول من عمر شانقي."

عمر المختار

اللهم انعم على بلادي بالأمن والأمان

#15

السلام عليكم ......

شكرا يا شباب على التفاعل ...........

البحث بالتاريخ مهم جدا ربما تصادفك في المنظوماتك على اساس تريد اتبحث على تاريخ فاتورة معينه وتريد معلومت عليه .

على مهم ...

ان سوف اجرب جميع الحلول المذكوره سالفا .. واذا لم تفلح ..

سوف اعطيكم النتيجة مع مثال ......

فمثال خير دليل لتوضيح .....

#16

السلام عليكم .......

الان عرفت ان المشكلة عند الجميع .....

حتى في مثال لاخ only the lonely جربه جيدا انه يعمل 90 في 100 جربوه كلكم

اي عند تريد البحث عن تاريخ في البيانات التي خزنته في

الجدول سوف يخرجه ..

ولكن تمهل الكل يخزن في الجدول يدوي تاريخ 05/04/2006

04/04/2006 او 06/04/2006 في هذا الشهر

لن يجلب كودك شي الاخ only the lonely

,او الاخ aswany .....

ولم يبقى الا الاخ samaroselo

ودليل على ذلك جربوا الكود جيدا بدون استعجال ....

ارجو الرد .........

#17

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

المثال خير سبيل للتوضيح .....

ارفقت هذا المثال لاريكم المشكلة واعتقد انه غافلة عن جميع

ويا ريت كلامي يكون خطا وعندكم الصواب ........

وخزنت تواريخ كثيرة في الجدول .........

فقط عليكم التجريب جيدا وسف نرى الصواب ............

الكل يجرب ذات على تواريخ حاليا مثا 05/04/2006 او 06/04/2006

وليس تاريخ ميلاد قديم 19/04/1983 لان لن تجد اي مشكلة في هذة الحالة او 13/11/1980

find_date.rar

#18

اعتقد ان المشكلة انحلت الان

كانت المشكلة في اعدادات الوينوز انا صلحته

وانحلت المشكلة بعد عناء كبير

بارك الله فيكم للجميع ........

الفضل يرجع لله ثم الاخ only the lonly هو الي نبهني بخصوص اعددات الويندوز

الان ح اعمل اختبارات على جميع التواريخ .......

وانا شاء الله حيشتغل 100*100 ....

#19

اها

شكلك حاطط الويندوز على التقويم الهجري وانت تبحص بالميلادي

هههههههههه

هذي تسوي مشكلة نعم

الله يوفقك والحمدلله على انك وصلت للحل

<span style='color:green'>سؤل ابن عباس عن علمه كيف جمعه فقال :( أوتيت لسانا سؤولا وقلبا عقولا)</span>

#20

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

ممكن يا أخي ان تبحث في book on line الموجود مع sql عن التاريخ فمثلا يوجد المثال التالي:

SELECT * FROM (TableName) where DATEDIFF(day,FiledName,getdate())=10

حيث tablename هو اسم الجدول الذي فيه التاريخ

atediff دالة فرق التاريخ

day اليوم وممكن ان تضع الشهر او السنة ويعني فرق التاريخين بالنسبة لليوم او الشهر او السنة

FiledName اسم حقل التاريخ

getdate وهو تاريخ اليوم وممنكن ان تكتب اي تاريخ تريده

وهناك عدة دوال للتاريخ ابحث وستجد معضلتك

اللهم لا سهل الا ماجعلته سهلا، وانت تجعل الصعب ان شئت سهلا

83_45a7168be2ddb.jpg

#21

السلام عليكم/

الاخ Romantic_touch

مش لدرجة هذه ان اعمل في الويندوز التاريخ الهجري وان اخزن في الميلادي ........

عموما اشكرك انت والاخوة الي تفاعلوا معنا لتفادي هذة المشكلة .

#22

أخي العزيز

نقطه مهمة جدا جداً جددددددددددددددددددددددددددددددددددداً

إذا كنت محترف أو أردت الاحتراف ... فلا تعتمد في برامجك على الإعدادات الإقليمية .. فالمستخدمين يقومون بتغيرها باستمرار بل الأكثر حيره هو أنهم يقومون بتغير اللغة الافتراضية من العربية إلى الإنجليزية والعكس .. وأيضا ما هو نحن يصدده الآن وهو التاريخ فبعضهم يقوم بتغير تنسيق التاريخ كما يحلو له بل وتغير افتراضايته من هجري إلى ميلادي والعكس ...فماذا سيفعل برنامج حيال كل هذه التغيرات وكيف سيتصرف أرجو الانتباه .

لقد اطلعت اليوم على مثالك المرفق بخصوص التاريخ

ولقد واجهتني هذه المشكلة سابقاً في vb6 وقد سببت لي الكثير من المتاعب والإحراج بالشركة التي أعمل بها حيث كانت نتائج التواريخ تأتي غير المتوقع .... ولقد توصلت للمشكلة والتي من الممكن بأن البعض غفل عنها وهي في غاية الأهمية .. وهي أن شركة ميكروسوفت قامت بإعداد التواريخ في جميع منتجاتها على أن تتم تخزينها في قواعد البيانات كأرقام وليس كما نراه أمامنا والاختلاف الوحيد والذي نحن يصدده الآن هو طريقة استخراج هذا التاريخ بالتنسيق الذي نريده والمخزن به أصلاً ..

والاهم هو أن معظم كائنات التاريخ في الفيجوال بيسك أمثال DateTimePicker1 وغيرها تعتمد تنسيق التاريخ الافتراضي هو MM/dd/yyyy (شهر – يوم – سنه ) وهي طريقة أمريكية بحته .. وهنا تأتي المشكلة فتنسيق التاريخ يعتبر (اليوم شهر والعكس الشهر يوم ) ولكن هذه الأدوات أكثر ذكاءً فإذا تعدى الشهر أكثر من 12 يعتبره يوماً وليس شهراً ويقوم بتغير تنسيق التاريخ إلى (يوم – شهر – سنه) .

ولذلك بأخي كتبت في المثال أن من ضمن تواريخ البحث التي لا تظهر التاريخ 22-4-2006 ولكن من المفترض أن يحصل عليه البرنامج ...حاول تجربته ستجد أن البرنامج يستطيع أن يحصل عليه .. أما أي يوم أقل من 13 سيعتبره شهر ولن تستطيع أن تحصل على المعلومات المطلوبة عن هذه التاريخ ...

الحل : - وهو بسيط جداً جداً ولن تتخيله وهو العامل Format ( your Date control , "yyyy/MM/dd") فقط لا غير مع مراعاة قواعد بناء الجمل مع sql .

والآن قم بتغير هذا السطر في الكود داخل مثالك ودع المستخدم يفعل ما يحلو له بالخيارات الإقليمية الخاصة بتنسيق التاريخ ستحصل على ما تريد بإذن الله وحاول تغير التنسيق في الإعدادات الاقليمة واطلعنا على أي خطاً

        
        sql = "select * from table1 where BDate=" & "#" & Format(xdate, "yyyy/MM/dd") & "#"
#23

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

شكرا اولا على اهتمامك الا خ aswany

ولو تركز في الملف الي بعته والي نزلته فاني عملت

نفس الجملة الي عملتهها....

والان انا غيرت جميع الاعدادت الاقليمية

والكود شغال 100 * 100

وفي الحقيقة كنت عارف الفورمات yyyy/MM/dd

حتى في المثال المرفق انظر الاداة datetimepaker1

الفورمات ان عمله yyyy/MM/dd...

اعتقد كان السبب في السابق ممكن اني كنت اجرب اخزن

البيانات يدوي لاني كنت في حالة تجريب الطود اي افتح الجدول واخزن

فيها .....

اي لا اخزن البيانات عن طريق الدوت نيت من امر الاضافة .

انظر خصائص DateTimePicker1 في مثالي

وستجده كما قلت انفا .....

واخيرا بارك الله فيك وللجميع الاخوة على تعاونهم ..

#24

والله يا اخ روني صرت معلم تواريخ هههههههههههههه

انا ادري انه احساس الانتصار حلو والله ينصرك على باقي الاكواد

بس شد حيلك :)

<span style='color:green'>سؤل ابن عباس عن علمه كيف جمعه فقال :( أوتيت لسانا سؤولا وقلبا عقولا)</span>

#25

اخي العزيز roni1980

السلام عليكم

لقد قمت بتحميل المثال الذي قد أرفقته وقمت بالتعديل عليه وستجد في المثال المرفق بعد التعديل كل ما تحتاجة إن شاء الله

هناك شرح مبسط على قد الحال داخل كود المثال .. ارجو عند وجود ملاحظات إعلامي

وشكراً

find_date1.rar

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

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