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

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

مغلق
بدأه محمد فؤاد تركي في 6 فبراير 2007 · 11 رد · 2,134 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

أخواني الافاضل

كيف يتم عدم تسجيل بيانات في تاريخ سابق ؟ ولا يتأثر البرنامج بتغيير ساعة الكمبيوتر

شكراً لكم

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#2

الأخ الفاضل ...

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

الشق الأول: يمكنك فحص ومراجعة (عمل شرط Validation) على بيانات التاريخ قبل تسجيلها بحيث لا تسمح بإدخال تاريخ يسبق التاريخ الحالى

اقتباس
ولا يتأثر البرنامج بتغيير ساعة الكمبيوتر

الشق الثانى: كى لا يتأثر بساعة الكمبيوتر، فلا تعتمد على ساعة الكمبيوتر، فإذا كان الجهاز متصل بشبكة يمكنك الإعتماد على خدمات الوقت فى الشبكة مثلاً على ساعة الخادم (Server) فى فحص التاريخ (بتشغيل خدمة daytime "منفذ Port 13" راجع RFC 867 - أو خدمة time "منفذ Port 37" راجع RFC 868)

أما إذا كان غير متصل بالشبكة، فيمكنك فى كل مرة يتم تشغيل البرنامج الأحتفاظ بالتاريخ فى قاعدة البيانات ومقارنت أخر تاريخ لتشغيل البرنامج بالتاريخ الحالى للجهاز، فإذا كان السابق أكبر من الحالى ، تعرف أنه يوجد تلاعب بالتاريخ، (طبعاً المقارنة أولاً وفى حالة التلاعب لن تحفظ التاريخ الحالى فى قاعدة البيانات)

مثال: DayTime.zip موجود فى مطلوب كود استخدام توقيت السيرفر لكل الاجهزة المرتبطة

مثال أخر على استخدام daytime: http://users.actcom.co.il/~choo/lupg/tutor...aytime-client.c

مثال للإختبار: daytime.rar

شكراً

تم تعديل هذه المشاركة بواسطة Eng. Usama El-Mokadem في 16 فبراير 2008 في 13:24

Eng. Usama El-Mokadem

Nothing is impossible, the word impossible itself says that: I M - Possible

#3

أخواني الافاضل

لقد انشئت كود في حدث On Exit للحقل Zdate

If Me.issu_date.Text < Now() Then
MsgBox "لا يمكنك التسجيل بتاريخ سابق"
End If

ولكن واجهتني مشكلة فعلا البرنامج يعطيني رسالة بيفيد بانة لا يمكنك التسجيل بتاريخ سابق ولكن هناك مشكلة اخري وهي عندما يتم التسجيل بتاريخ اليوم يعطيني البرنامج بانني ايضا لا يمكنني التسجيل بتاريخ اليوم فبرجاء المساعدة في حل هذه المشكلة

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

مرفق مثال

شكراً لكم

date.rar

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#4

أخي الغالي

Eng. Usama El-Mokadem

شكراً الحمد لله توصلت لنصف الاجابة وهي عدم تأثر البرنامج بساعة الكمبيوتر بتغيير التواريخ لان مدير الشبكة قام بغلق الساعة بحيث لا يمكن العبث بها . .

ولكن الشق الثاني وهو كما اوضحت لك في المثال المرفق استخدمت قاعدة IF لحل المشكلة ولكن المشكلة في الكود فكما تري ان البرنامج يعطيني رسالة ( بعدم السماح بستجيل بتاريخ سابق في حالتين

الحالة الاولي وهي المطلوبة

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

الحالة الثانية والتي هي غير مطلوبة

عدم السماح بتسجيل التاريخ ( تاريخ اليوم ) لماذا ؟ مع ان تاريخ اليوم يعتبر تاريخ غير سابق

برجاء مشاهدة المرفق في المشاركة السابقة والافادة

شكرا لكم

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#5

الأخ الفاضل ...

المشكلة فى أستخدام الدالة ()Now فى تعطى التاريخ والوقت وليس التاريخ فقط، بالصورة

02/06/2007 01:12:30

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

02/06/2007 00:00:00

وبالتالى يتحقق الشرط، وهو أن التاريخ ثابت لكن التسجيل فى ساعة سابقة، وبالتالى فى وقت سابق

وللتغلب على ذلك يجب تجاهل الساعة ومقارنة التاريخ فقط، فبدلاً من أستخدام ()Now يمكنك استخدام:

DateValue(Now())

ويصبح بالشكل التالى:

Private Sub zdate_Exit(Cancel As Integer)
	If Me.zdate.Text < DateValue(Now()) Then
		MsgBox "لا يمكنك التسجيل بتاريخ سابق"
	End If
End Sub

شكراً

تم تعديل هذه المشاركة بواسطة Eng. Usama El-Mokadem في 6 فبراير 2007 في 18:05

Eng. Usama El-Mokadem

Nothing is impossible, the word impossible itself says that: I M - Possible

#6

أخي الغالي

Eng. Usama El-Mokadem

شكراً علي مجهودك معي ولكن هذا الكود لم يفعل شيء فهذا الكود في جميع الاحوال يعطي رسالة لا يمكن التسجيل في تاريخ سابق ... برجاء ارفاق مثال لرؤية الموضوع بصورة اوضح

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#7

الأخ الفاضل ...

date_up.zip

مرفق المثال الذى أرفقتة بعد التعديل، فى الحقيقه يعمل معى (Windows XP Pro - Access 2003) تنسيق التاريخ (mm/dd/yyyy)

وشكراٍ

Eng. Usama El-Mokadem

Nothing is impossible, the word impossible itself says that: I M - Possible

#8

لأخ الفاضل ...

DateProtection.zip

هذا المثال البسيط لتوضيح إكتشاف التلاعب بالتاريخ (حيث يمكنك استخدامه بعد تطويره لمت يناسبك فى مشروعك):

الجدول Options يقوم بتسجيل أخر تشغيل للبرنامج

النموذج Startup عند تشغيله يقوم بمقارنة أخر تايخ بالتاريخ الحالى ، وعند إكتشاف تلاعب يخرج رسالة تفيد بذلك(أو أى كود تريد البرنامج أن ينفذه يمكنك كتابتة فى الدالة InvaledDate)، فى حالة التاريخ سليم يخرج رسالة تفيد بذلك(أو أى كود تريد البرنامج أن ينفذه يمكنك كتابتة فى الدالة ValedDate) فى الـ(Module)

المتغير العام LastDate: يحتوى على تاريخ أخر تشغيل للبرنامج (يمكن استخدامه فيما بعد)

المتغير العام IsValedDate: يكون True فى حالة عدم وجود تلاعب و False فى حاله وجود تلاعب

وشكراً

Eng. Usama El-Mokadem

Nothing is impossible, the word impossible itself says that: I M - Possible

#9

الاخ الفاضل

الله يعطيك الف عافية فعلا هذا هو المطلوب شكراً لك

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#10

بسم الله

مشاء الله افكار رائعة

اخى محمد

اسمحى باضافة بسيطة لكودك الأول و هى علامة = - هذا رغم خبرتى الصغيرة بالنسبة لكم -

ليصبح الكود كالتالى بحيث يسمح باستخدام اليوم الحالى و ما قبلة

 If Me.issu_date.Text <= Now() Then
MsgBox "لا يمكنك التسجيل بتاريخ سابق"
End If

بالتوفيق إن شاء الله

الأصيل

حاولت الون علامة الــ = لكن منفعش .. ؟؟؟

المهم ارجو ان تنفعك

تم تعديل هذه المشاركة بواسطة الاصيل في 30 أبريل 2007 في 11:17

قال أبن القيم : أكثروا من الخير فينتشر .. و أقلوا من الشر فيندثر ..

#11

جزاك الله خيرا يا أخي الغالي الاصيل

شكرا لك

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#12

بسم الله الرحمن الرحيم

بارك الله فيكم اخواني الكرام

موضوع ممتاز

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

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