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

ان كنت تعاني من طريقة إدخال التاريخ عليك بهذ الكود

مغلق
بدأه مفرج في 24 مارس 2007 · 35 رد · 3,493 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

أعزائي الكرام والله لكم وحشة لكن ضروف الزمن تبعدنا

اضع بين يديكم دالة للتاريخ حيث تثبت التاريخ بالطريقة الصحيحة بغض النظر عن طريقة الادخال فالبعض يحب أن يدخل السنة ثم الشهر ثم اليوم والي متعودين على الوورد يدخلون اليوم ثم الشهر ثم السنة مثال :

ادخل 1/1/1428 أو 01/01/1428 أو 1428/1/1 او 1428/01/01

يجب أن تكون النتيجة 01/01/1428

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

المهم تكون الفائدة للجميع

تهمني تعليقاتكم

_____.rar

من سار على الدرب وصل

#2

اخي الفاضل مفرج

بارك الله فيك على هذه الدالة وجزاك الله كل خير

هل من الممكن يكون التاريخ بهذا الشكل

mf.gif

نأمل التعديل

#3

السلام عليكم

بعد اذنكم ... هذا ما توصلت اليه...

اظهار رسالة خطأ عند ادخال تاريخ ..يومه اكبر من 31 أو ادخال تاريخ شهره اكبر من 12

لا اعرف..قد يكون بحاجة لعمل أكبر

ارجو الرد والتفاعل...

همام

_____.rar

وَمِنَ النَّاسِ مَن يُعْجِبُكَ قَوْلُهُ فِي الْحَيَاةِ الدُّنْيَا وَيُشْهِدُ الله عَلَى مَا فِي قَلْبِهِ وَهُوَ أَلَدُّ الْخِصَامِ

مواضيعي ومشاركاتي

#4

يوجد خطأ فادح في الدالة حاولوا تتعرفون عليه وهو من الاساسيات الهامة التي لا يجب ان يغفل عنها اي مبرمج

سأضع لكم الصور حتى تتعرفوا على مكان الخطأ في الدالة

HAM.gif

اخي همام هل من الممكن التاريخ يكون بهذا الشكل

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

#5

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

قد يكون الخطا في استخدام الخانة "00" والصحيح هو استخدام "##"

هذا ما اعتقده....

أو ان نوع الدالة يجب ان يكون تاريخ...ويكتب في البداية عند تعريفها كالتالي:

Public Function datev(dates As String) As Date

وقد لا يكون للموضوع علاقة بهذا...

وشكرا لك زهرة على سرعة التجاوب

همام

_____.rar

تم تعديل هذه المشاركة بواسطة همام ابوعرقوب في 24 مارس 2007 في 23:50

وَمِنَ النَّاسِ مَن يُعْجِبُكَ قَوْلُهُ فِي الْحَيَاةِ الدُّنْيَا وَيُشْهِدُ الله عَلَى مَا فِي قَلْبِهِ وَهُوَ أَلَدُّ الْخِصَامِ

مواضيعي ومشاركاتي

#6

احسنت اخي همام

بارك الله فيك

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

ولكن لازال هناك خطأ في الدالة لنرى الصوره

HAMM.gif

لماذا هذا الخطأ اخي همام مع ان تنسيق التاريخ صحيح فلماذا تظهر رسالة الخطأ

#7

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

اي عند البداية بادخال السنة ثم اليوم والشهر..او ادخال اليوم والشهر ثم السنة..تقوم الدالة بقلب النص تلقائيا...

لا اعرف لم تظهرمعي هذه الرسالة...

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

على العموم اظن انه يجب ايضا تغيير تنسيق مربع النص الى Short Date

بارك الله فيك اختي زهرة

_____.rar

تم تعديل هذه المشاركة بواسطة همام ابوعرقوب في 25 مارس 2007 في 00:36

وَمِنَ النَّاسِ مَن يُعْجِبُكَ قَوْلُهُ فِي الْحَيَاةِ الدُّنْيَا وَيُشْهِدُ الله عَلَى مَا فِي قَلْبِهِ وَهُوَ أَلَدُّ الْخِصَامِ

مواضيعي ومشاركاتي

#8

اشكركم علل التفاعل

يمكن الإضافة على الدالة بعد تعديل التاريخ

Flag = False
If (Left(dt, 4) > 1300 And Left(dt, 4) < 1500) Or (Left(dt, 4) > 1900 And Left(dt, 4) < 2100) Then Flag = True
If (Val(Mid(dt, 6, 2)) > 0 And Val(Mid(dt, 6, 2)) < 13) And Flag Then Flag = True Else Flag = False
If (Val(Right(dt, 2)) > 0 And Val(Right(dt, 2)) < 31) And Flag Then Flag = True Else Flag = False
If Flag Then datev = dt Else MsgBox "خطـــــــأ ", 0, "تاريخ"

_____.rar

تم تعديل هذه المشاركة بواسطة zahrah في 25 مارس 2007 في 19:25

من سار على الدرب وصل

#9

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

نعم الان اصبح الكود يعمل بشكل ممتاز بعد تخصيص حقول التاريخ واضافة الرايات Flag

#10

السلام عليكم

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

الله يجزاكم كل خير .. فعلا أصبح الكود .. صاغ سليم

فالف شكر لكم

Ekseer

#11

كل الشكر لصاحب الموضوع الأخ { أبوعرقوب}

والأخت { زهرة } التي تابعت الموضوع، ووقفت عليه بخبرة وحكمة كبيرة

وخالص التحيات لكم وللأخ { مفرج } إللي فرج هم الكود وخلص عليه

خالص التقدير وأخلص الدعوات لكم جميعاً

أخوكم / المدمر007

#12

تصحيح:::

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

شكرا جزيلا لك...

وَمِنَ النَّاسِ مَن يُعْجِبُكَ قَوْلُهُ فِي الْحَيَاةِ الدُّنْيَا وَيُشْهِدُ الله عَلَى مَا فِي قَلْبِهِ وَهُوَ أَلَدُّ الْخِصَامِ

مواضيعي ومشاركاتي

#13

بارك الله فيكم جميعاً جهود طيبة ومثمرته تشكرون عليها.

الشيء الوحيد الذي أريد معرفته هوالأتي :

كيف أستطيع كتابة التاريخ في مربع نص واحد من اليمين إلى اليسار وليس شرطاً أن يكون حقل تاريخ بل حقل نص عادي نبدأ هكذا 01 ثم / ثم 03 ثم / ثم 1428 ليصبح 01/03/1428 المشكلة التي تظهر لي إنه عند كتابة الشرطة المائلة / ينقلب التاريخ أي أنها هي السبب حاولة بالكود / بالتنسيق ولم استطع.

في صفحات الأنترنت أي مربع نص يكبل التاريخ كما في الوورد.

فهل لغة البرمجة هي السبب ؟

ما هو الحل إذن ؟

؟؟؟؟؟؟؟

#14

أخي مصلح الحريصي مساك الله بالخير

هذا الكود يمكن ان تكتب بداية بالسنة او اليوم النتيجة واحدة وهذا هو المقصود

من سار على الدرب وصل

#15

وفقكم الله،،

لكن هل جرب أحدكم تطبيق الكود على مربع نص مرتبط بحقل من جدول ونوع الحقل تاريخ/ وقت؟؟؟؟

جربته ولم يفلح،،، وجربته على مربع نص غير مرتبط،، ونجح الكود،،،

#16

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

ولكن لماذا المدى الضيق من التاريخ أكبر من 1900 وأقل من ....

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

ياريت لو تتدخل الأخت زهرة لا تكفي التوجيهات فقط

شكرا للجميع

_____.rar

post-121764-1188848473_thumb.gif

تم تعديل هذه المشاركة بواسطة mas123 في 3 سبتمبر 2007 في 22:41

التغير هو القانون الدائم للحياة.ودوام الحال من المحال

فلماذا لا نتغير بإرادتنا إلى ما نريد؟ قبل أن تغيرنا الحياة مجبرين إلى ما لا نريد؟

موقعي

#17

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

(زهره - همام - اكسير)

الواحد يشتاق يقرأ كل كلمة وكل حرف

#18

نطاق التاريخ في الأكسس من سنة 100 إلى سنة 9999

وفي الأكسل من 1900 إلى 9999

علما أن الأكسل تقويمه يحتوي على خطأ من 01/01/1900 وحتى 29/02/1900 مما يتوجب معها تفادي استخدام هذه الفترة

#19

توضيح

الخطأ الموجود في الصورة ليس ناتجا عن توسيع المدى إنما هو موجود في البرنامج أصلا

ومن المعروف أن شهر فبراير ليس إلا 28 أو 29 يوم فكيف يكون 30 ؟

تم تعديل هذه المشاركة بواسطة mas123 في 3 سبتمبر 2007 في 23:28

التغير هو القانون الدائم للحياة.ودوام الحال من المحال

فلماذا لا نتغير بإرادتنا إلى ما نريد؟ قبل أن تغيرنا الحياة مجبرين إلى ما لا نريد؟

موقعي

#20

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

#21

مع الإعتذار للأخ مفرج

صممت دالة لفحص التاريخ وهي تصلح للميلادي والهجري

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

Function Flag(ByVal StrDate As Variant) As Boolean
  Dim yy As Integer
  Dim mm As Integer
  Dim dd As Integer

  On Error Resume Next

  Flag = False

  StrDate = Trim(Nz(StrDate, ""))
  If Len(StrDate) <> 10 Then Exit Function

  yy = Mid(StrDate, 1, 4)
  mm = Mid(StrDate, 6, 2)
  dd = Mid(StrDate, 9, 2)
  If mm < 1 Or mm > 12 Or dd < 1 Or Err.Number <> 0 Then Exit Function

  StrDate = DateSerial(yy, mm, dd)
  If Err.Number = 5 Then Exit Function

  If CLng(StrDate) > 2958434 Then
	If dd > 31 - Calendar * 2 Then Exit Function
  Else
	If dd > Day(DateSerial(yy, mm + 1, 1) - 1) Then Exit Function
  End If

  Flag = True
End Function

تم تعديل هذه المشاركة بواسطة Accessna في 4 سبتمبر 2007 في 02:13

#22

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

موضوع ممتاز يستحق المتابعة

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#23

الأخ أكسسنا كبف يستعمل ذلك الكود؟

وهل جعلت تنسيق العام yy يعني رقمين فقط أم أربعة أرقام؟

كيف يتم ربطه بمربع النص أو تسمية؟

شكرا لك

التغير هو القانون الدائم للحياة.ودوام الحال من المحال

فلماذا لا نتغير بإرادتنا إلى ما نريد؟ قبل أن تغيرنا الحياة مجبرين إلى ما لا نريد؟

موقعي

#24

ضع الدالة في وحدة نمطية

واستدعها كالتالي :

  If Not Flag("2007/09/04") Then
	MsgBox "إدخال خاطئ أو خارج النطاق"
  End If
#25

المثال بعد التعديل

_____2.rar

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

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