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

تنسيق التاريخ في تقرير الأكسس

مغلقمُجاب
بدأه *^*البحر*^* في 28 ديسمبر 2013 · 5 رد · 5,296 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

 

أخواني وأخواتي

لدي تقرير يعرض الأرقام والتواريخ وألخ ..

أرغب في معرفة كيفية إظهار التنسيق بالنسبة للتاريخ كالتالي :

1435/02/25 وهذا هو المطلوب .

 

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

البيانات في الجدول الخاصة بالتاريخ من نوع nvarchar فتكون بيانات التاريخ 14350225

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

 

س / هل من طريقة برمجية تظهر التاريخ بالتنسيق المطلوب أو إدخالها في الجدول بنفس التنسيق حتى يتم استعراضها بنفس التنسيق ؟

 

 

 

 

 

.

#2

السلام عليكم

 

اخى الفاضل ارفع الملف ليتم  العمل عليه

هناك من يراقبك فى كل وقت (الله) فكن حذراً من المعاصى B) 


 


ان اكبر عائق يمنع النجاح هو الخوف من الفشل و الاخفاق B) 

#3

السلام عليكم

اخى الكريم اليك طريقه عمل الوقت والتاريخ فى برنامج اكسيس

 

اليك الشرح :على بركه الله

 

 

تخزين بيانات التاريخ/الوقت

نوع بيانات التاريخ/الوقت مزدوج - بدقة  الفاصلة عائمة مخازن الوصول رقم المنازل العشرية حتى 15. الجزء الصحيح من الرقم الدقة المزدوجة يمثل التاريخ. الجزء العشري يمثل الوقت.



تاريخ صحيح نطاق قيم من-657,434 (يناير 1, 100 ب.م) إلى 2,958,465 (ديسمبر 31, 9999 ب.م). قيمة تاريخ 0 يمثل 30 ديسمبر 1899. يقوم Access بتخزين التواريخ قبل 30 ديسمبر 1899 الأرقام السالبة.



وقت صالح نطاق قيم من.0 (00: 00: 00) إلى.99999 (23). تمثل القيمة الرقمية كسر يوم واحد. يمكنك تحويل القيمة الرقمية إلى ساعات إلى دقائق و ثانية عن طريق ضرب القيمة الرقمية 24.



يعرض الجدول التالي كيف يقوم Access بتخزين قيم تاريخ/وقت:

Double Date Actual Time Actual

number portion date portion time

------------------------------------------------------------------



1.0 1 December 31, 1899 .0 12:00:00 A.M.

2.5 2 January 1, 1900 .5 12:00:00 P.M.

27468.96875 27468 March 15, 1975 .96875 11:15:00 P.M.

36836.125 36836 November 6, 2000 .125 3:00:00 A.M.

لعرض كيف يقوم Access بتخزين قيم تاريخ/وقت كأرقام اكتب الأوامر التالية في الإطار الحالي, اضغط ENTER ثم ثم لاحظ النتائج:

تريد CDbl(#5/18/1999 14:00:00#)

يؤدي يساوي: 36298.5833333333

تريد CDbl(#12/14/1849 17:32:00#)

يؤدي يساوي:-18278.7305555556



لعرض التاريخ والوقت القيم الرقمية اكتب الأوامر التالية في الإطار الحالي اضغط ENTER، ثم ثم لاحظ النتائج:



تريد CVDate(1.375)

يؤدي يساوي: 31 ديسمبر 1899 9: 00: 00 ص

تريد CVDate(-304398.575)

يؤدي يساوي: 1 8 1066 1:48:00 م

تنسيق حقل تاريخ/الوقت

يمكنك تنسيق قيمة تاريخ/وقت لعرض تاريخاً أو وقتاً أو كليهما. عند استخدام تنسيق التاريخ فقط يخزن Access قيمة 0 للجزء الوقت. عند استخدام تنسيق وقت فقط يخزن Access قيمة 0 للجزء التاريخ.



يعرض الجدول التالي كيف يقوم Access بتخزين تاريخ/وقت القيم. يعرض الجدول التالي كيف يمكنك عرض هذه القيم عن طريق استخدام تنسيقات مختلفة أيضاً:

Stored value Default format Custom format

(double number) (General Date) (mm/dd/yyyy hh:nn:ss A.M./P.M.)

---------------------------------------------------------------------



36295.0 5/15/99 05/15/1999 12:00:00 AM

0.546527777777778 1:07 PM 12/30/1899 01:07:00 PM

36232.9375 3/13/99 10:30PM 03/13/1999 10:30:00 PM

ملاحظة التنسيق الافتراضي قيمة تاريخ/وقت يكون تاريخ عام. إذا كانت قيمة تاريخ فقط، يظهر لم وقت. إذا كانت القيمة الوقت فقط يظهر لم التاريخ.

حساب البيانات الوقت

لأنه يتم تخزين قيمة وقت ككسر يوم 24 ساعة, قد تتلقى نتائج التنسيق غير صحيحة عند حساب الفواصل الزمنية أكبر من 24 ساعة. كمحاولة للتغلب على هذه المشكلة، يمكنك إنشاء دالة معرفة من قبل المستخدم التأكد من أن يتم تنسيق الفواصل الزمنية بشكل صحيح.



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

1.إنشاء وحدة نمطية ثم اكتب السطر التالي في مقطع Declarations لو أن السطر التالي غير موجود بالفعل:

Option Explicit

2.اكتب الإجراء التالي:

'------------------------------------------------------------------

' This function calculates the elapsed time between two values and then

' formats the result in four different ways.

'

' The function accepts interval arguments such as the following:

'

' #5/12/95 6:00:00AM# - #5/11/95 10:00:00PM#

'

'

'

' [End Time]-[start Time]

'------------------------------------------------------------------



Function ElapsedTime (Interval)

Dim x

x = Int(CSng(Interval * 24 * 3600)) & " Seconds"

Debug.Print x

x = Int(CSng(Interval * 24 * 60)) & ":" & Format(Interval, "ss") _

& " Minutes:Seconds"

Debug.Print x

x = Int(CSng(Interval * 24)) & ":" & Format(Interval, "nn:ss") _

& " Hours:Minutes:Seconds"

Debug.Print x

x = Int(CSng(Interval)) & " days " & Format(Interval, "hh") _

& " Hours " & Format(Interval, "nn") & " Minutes " & _

Format(Interval, "ss") & " Seconds"

Debug.Print x



End Function

3.اكتب السطر التالي في الإطار الحالي ثم اضغط مفتاح الإدخال ENTER:

? ElapsedTime(#6/1/1999 8:23:00PM#-#6/1/1999 8:12:12AM#)

لاحظ ظهور القيم التالية:

ثانية 43848

730:48 دقائق: ثوان

12: 10: 48 ساعات: دقائق: ثوان

0 الأيام 12 ساعات 10 دقائق 48 ثوان

مقارنة البيانات التاريخ

لأنه يتم تخزين التواريخ والأوقات معاً كأرقام الدقة مزدوج ، قد تظهر نتائج غير متوقعة عند مقارنة بيانات التاريخ/الوقت. على سبيل المثال، إذا قمت بكتابة التعبير التالي في الإطار الحالي تظهر نتيجة False إذا كان تاريخ اليوم 31 3 1999:

? Now()=DateValue("3/31/1999")

ترجع الدالة Now() رقم الدقة المزدوجة يمثل التاريخ الحالي والوقت الحالي. ومع ذلك، ترجع الدالة DateValue() على رقم صحيح يمثل التاريخ ولكن لا قيمة زمنية الكسر. لذلك، يساوي Now()DateValue() فقط عند إرجاع Now() وقت 00: 00: 00 (12: 00: 00 ص).



لتلقي النتائج دقيقة عند مقارنة قيم التاريخ استخدم إحدى الدالات التالية. لاختبار كل دالة كتابة الدالة في الإطار الحالي استبدال التاريخ الحالي 31 3 1999 ثم اضغط مفتاح الإدخال ENTER:

•لإرجاع قيمة عدد صحيح استخدم الدالة Date():

تريد Date()=DateValue("3/31/1999")

•لإزالة الكسري الدالة Now() استخدم الدالة Int():

تريد Int(Now())=DateValue("3/31/1999")

مقارنة البيانات الوقت

عند مقارنة قيم الوقت قد تتلقى نتائج غير متناسقة لأنه يتم تخزين قيمة زمنية كجزء كسري من الرقم الدقة مزدوج ، الفاصلة العائمة. على سبيل المثال، إذا قمت بكتابة التعبير التالي في الإطار الحالي تظهر نتيجة false (0) على الرغم من أن الوقت بين القيم بالطريقة نفسها:

var1 = # 2: 01: 00 م #

var2 = DateAdd ("n" ، 10، var1)

? var2 = # 2: 11: 00 م #

عند يحول Access قيمة وقت إلى كسر "، قد لا تكون النتيجة محسوب متطابقة مع قيمة وقت. يكفي الفرق صغير الناتجة عن العملية الحسابية لإعطاء نتيجة false (0) عند مقارنة قيمة مخزنة إلى قيمة ثابتة.



لتلقي النتائج دقيقة عند مقارنة قيم الوقت استخدم إحدى الطرق التالية. لاختبار كل أسلوب اكتب كل أسلوب في الإطار الحالي ثم اضغط مفتاح الإدخال ENTER:



إضافة تاريخ مقترنة إلى مقارنة الوقت:

var1 = # 1/1/99 2: 01: 00 م #

var2 = DateAdd ("n" ، 10، var1)

? var2 = # 1/1/99 2: 11: 00 م #

تحويل قيم الوقت إلى أنواع بيانات السلسلة قبل أن يمكنك مقارنة:

var1 = # 2: 01: 00 م #

var2 = DateAdd ("n" ، 10، var1)

? CStr(var2) = CStr(#2:11:00 PM#)

استخدم الدالة DateDiff() لمقارنة وحدات دقيق مثل ثانية:

var1 = # 2: 01: 00 م #

var2 = DateAdd ("n" ، 10، var1)

? DateDiff("s", var2, #2:11:00 PM#) = 0
]

 

 

  ^_^   B)  B)  B)  B)  B)  B)  B)  B)  B)  B)  B)  B)  B)  B)  B)  B)  ^_^

 

 

واتمنى لك التوفيق فى عمل هذا اخى الكريم

 

لولم تفلح ارفع الملف ليتم تعديله ان شاء الله

تم تعديل هذه المشاركة بواسطة F000X في 28 ديسمبر 2013 في 03:56

1

هناك من يراقبك فى كل وقت (الله) فكن حذراً من المعاصى B) 


 


ان اكبر عائق يمنع النجاح هو الخوف من الفشل و الاخفاق B) 

#4

B6ejj.png

 

السلام عليكم

يمكنك فعل ذلك من خلال عمل ماسك من خلال خصائص الحقل وكتابة التاريخ بالصيغة

dd/mm/yyyy

ماسك 

00/00/0000

برجاء الاطلاع على الملف المرفق 

 

Y4qY9.png

 

 

NPWLP.png

 

ByYAH.png

date.rar

تم تعديل هذه المشاركة بواسطة alaaaboulela في 28 ديسمبر 2013 في 05:11

"اللهم إني أسألك عملاً خالصاً لوجهك الكريم وأعوذ بك من النفاق والرياء "


 


http://fmalaa.wordpress.com/


 


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


 

#5 أفضل إجابة

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

 

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

والاخ علاء ابو ليلى واضح ان الطريقة معروفة ولكنها ايضا بعيدة عن المطلوب ومن السؤال يظهر أنه قد جربها.

 

أخي البحر ، يبدو هنا أن التاريخ لديك في الجدول هو الهجري ، وحيث أن جداول الـ SQL لا تعتمد التاريخ الهجري فقد ادخلت بياناته على أنها رقم من النوع المضاعف حتى يتحمل الرقم ، وانت الان تريد تحويل هذه البيانات على جداول أكسس أو الطباعة عن طريقه ومحتار بهذا الموضوع.

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

 

جرب طريقة القناع وستجد المطلوب ان شاء الله

 

;)  :D 

تم تعديل هذه المشاركة بواسطة AbuAdnan في 29 ديسمبر 2013 في 08:02

#6

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

 

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

 

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

الأخ علاء طريقة القناع في الجدول غير مفيدة حيث أني أتعامل مع جداول sql ولك مني التحية

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

 

جربت القناع في النموذج والتقرير معاً دون استثناء ونجحت الطريقة ولكن بشرط تغيير نوع البانات في الجدول إلى char وحجم البيانات 10

وتم التجربة بشكل ممتاز

 

شكري وتقديري للجميع

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…