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

مشكلة فى التاريخ مع الاعدادات الاقليميه

بدأه mtak33 في 3 سبتمبر 2009 · 20 رد · 1,384 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

الاخوة الكرام

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

"dd/mm/yyyy"

لأستطيع عمل جمع 70 يوم عليه و تخزينهم فى جدول

المشكله انه عندما ينتقل العمل لجهاز اخر يخرب فورمات التاريخ و يأخذ بالفورمات الخاصه بالاعدادات الاقليميه

و لحساسيه الموضوع حيث انه يعطى تاريخ مختلف عن المطلوب تماما

---

بحثت فى msdn

ووجدت تلك الداله



' Do nothing if the value is not a date.
If Not IsDate(DateIn) Then Exit Function

' Convert the date to a U.S. Date format.
MakeUSDate = "#" & Month(DateIn) & "/" & Day(DateIn) & "/" & Year(DateIn) & "#"
End Function
Function MakeUSDate(DateIn As Variant) As String

و لكنى لم اوفق فى استعمالها

ارجو شرحها او شرح حل لهذا الموضوع

و هذا رابط الصفحه

http://msdn.microsoft.com/en-us/library/bb258195.aspx

جزاكم الله خيرا

كيميائى / محمد طه

#2

أخى الكريم

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

ولكن ضع القيد داخل النموذج الخاص بك .. فاجعل تنسيق مربع الإدخال كما ترغب .. وضع له قناع إدخال يجبر المستخدم على الإدخال بالشكل الذى تراه.

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

فى انتظار ردك

تحياتى

محمد ندا

تم تعديل هذه المشاركة بواسطة Mohamed Nada في 3 سبتمبر 2009 في 01:35

... بقمة السعادة .. أعود بإذن الله لصحبتكم الرائعة قريباً ...

#3

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

أخي الكريم .. زادك الله علما وفتح عليك

الذي أعلمه أن أن (إجراء العمليات) على التاريخ

ميسر ولله الحمد في الأكسس

سواء في النموذج أو الاستعلام

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

DatePart("اh";[The_Date])

وغيرها

ولعل أستاذنا محمد ندا (خفيف الظل) معه الحق فيما ذهب أليه

أبومحمد

#4

جزاكم الله خيرا اخوى

محمد ندا

و ابو محمد

---

و اعتذر فى البدايه عن تواضع معرفتى و ما ممكن ان يسببه فى اسئله بسيطه او ...

--

المهم

انا معكم فيما ذكرتم

و لكن هناك معضله

الاولى:

ما ذكرتموه تمام و تم الجمع بغض النظر عن الاعدادت الاقليميه و تم الحفظ فى جدول

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

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

مثلا انا كتبت التاريخ 1-12-2009

و جمعت عليه 90 يوم

اذ بالناتج 4-12-2009

لأن اعداداتى الاقليميه mm-dd-yyyy

ارفقت المثال الذى اعمل عليه

و جزاكم الله خيرا

---

طلب اخير

ممكن شرح

وضع له قناع إدخال يجبر المستخدم على الإدخال بالشكل الذى تراه

حيث انها ما ظبطت معى

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

"اعرف انه سؤال مبتدئ و لكن اعذرنى "

Copy_oflab.rar

كيميائى / محمد طه

#5

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

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

حتى أتم الجواب الصحيح المطلوب

إذا كنت تقصد النموذج Form1 فقد أضفت مربع نص

غير منظم وكتبت المعادلة

DateAdd("d";[t1];[date_entry])

حيث t1 عدد الأيام المرغوب أضافتها

لكن وجدت أن مكون التاريخ وهو هنا dd + mm + yy

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

وقد جربت جميع الإدخالات فأعطى الجواب صحيحاً كما هو موضح

post-129354-1251953436_thumb.jpg

وهذا المرفق بعد التعديل

ASLab1.rar

#6

و الله يا ابومحمد انا خجلان منك جدا

و اعتذر لعدم توضيحى الفورم الذى اقصده

--

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

---

الفورم المقصود هو f_m_sastore

لانه هو الذى به الكتابه و الحفظ فى الجدول

اريد ان تعايشوا الموضوع كاملا

--

عموما جزاك الله خيرا و استفدت من مثالك شئ جديد

كيميائى / محمد طه

#7

أخى الكريم pms

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

كما أنى أمتدح مشاركتك .. وهذه هى الروح التى تثرى منتدانا الكريم وتميزه.

أخى الكريم mtak33

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

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

فإنى أراك تأخذ الموضوع من الناحية الصعبة.

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

اقتباس
"اعرف انه سؤال مبتدئ و لكن اعذرنى "
ياأخى وكذلك الحال بالنسبة لى(مبتدئ برضة).

بانتظار ردك

تحياتى

محمد ندا

تم تعديل هذه المشاركة بواسطة Mohamed Nada في 3 سبتمبر 2009 في 21:46

... بقمة السعادة .. أعود بإذن الله لصحبتكم الرائعة قريباً ...

#8

الاخ محمد ندا

اشكر لك ردك الكريم

-

المشكله انى اخشى عند جعل التاريخ فى حقل واحد

يتم الادخال حسب الاعدادات الاقليميه

حتى لو عملت فورمات للتيكست بوكس dd-mm-yyyy

سيتم التغيير على الشكل فقط و لكن عند الحفظ فى الجدول ستكون بالشكل mm-dd-yyyy

و ما اريد ان افعله سوف يتم تشغيله على اجهزة مختلفه بمواقع مختلفه

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

اليوم الناقص فى صلاحيتها يودى ورا الشمس "بالنسبة لى :) "

تلك هى مشكلتى

افيدونا افادكم الله

كيميائى / محمد طه

#9

أخى الكريم

رغم أن هذا لم يحدث معى على مدى 12 سنة .. (أقصد أن يتم تخزين التاريخ بشكل خاطئ .. فالشكل الذى يظهر يعبر فقط عن منظر وليس جوهر التاريخ ، ولكن التطبيق يعلم جيداً أين اليوم وأين الشهر وأين السنة حتى لو كان التاريخ بهذا الشكل 02/04/08 فهذا 2 مارس 2008) .. ولذلك فلو ضبطت كل الفورمات بالتطبيق الخاص بك كما أفعل دائماً .. فسيكون هذا مانعاً منعاً باتاً لتدخل الإعدادات الإقليمية فى مظهر التاريخ بقاعدتك.

اقتباس
سيتم التغيير على الشكل فقط و لكن عند الحفظ فى الجدول ستكون بالشكل mm-dd-yyyy
هذا إذا لم تغير التنسيق بالجدول الذى يتم التخزين فيه إلى نفس التنسيق الذى فى النموذج أو جدول المصدر

لدى فكرة أخرى لعلها تجد لديك قبولاً:

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

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

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

ولكن هذا يحتاج تدخل من أحد خبرائنا .. فالدعوة موجهة لهم إن كان ممكناً عمل ذلك.

فى انتظار ردك الكريم

محمد ندا

تم تعديل هذه المشاركة بواسطة Mohamed Nada في 4 سبتمبر 2009 في 03:05

... بقمة السعادة .. أعود بإذن الله لصحبتكم الرائعة قريباً ...

#10

اخى الكريم

جزاك الله خيرا على الرد

معك حق فيما ذكرته

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

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

---

تمام تمت التجربة بنجاح

و لكن هاكون رخم شويه

نفذت مثل ما ذكرت dd/mmm/yyyy

و تم الادخال و الحفظ بنجاح اذا ادخلت مثلا كالتالى

12-Aug

و لكن اذا تم الادخال كأرقام فقط

1-12-2009

يقلبهم حسب الاعدادات الاقليميه

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

و الف شكر على تعبك معايا

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

Mohamed Nada كتب:
وخطرت فى بالى فكرة .. ولكن للأسف لم أتوصل لتنفيذها وهى أن نقوم بعمل ملف تسجيل Registry file ونجعله عند بدء تشغيل التطبيق الخاص بك يقوم بتعديل الإعدادات الإقليمية .. كما نفعل فى مستوى الأمان أو دقة الشاشة أحياناً .. ةقى هذا الحالة سيكون برنامجك هو المتحكم فى الإعدادات الإقليمية أثناء تشغيله.

ولكن هذا يحتاج تدخل من أحد خبرائنا .. فالدعوة موجهة لهم إن كان ممكناً عمل ذلك.

فى انتظار ردك الكريم

محمد ندا

يا اخى كل ده

مش شرح الكود اللى فوق فى اول الصفحه اسهل

الكود ده تقريبا بيقوم بالمشابه من كده

بس مش عارف اوظفه

تم تعديل هذه المشاركة بواسطة mtak33 في 4 سبتمبر 2009 في 07:06

كيميائى / محمد طه

#11

أخى الكريم ..

السلام عليكم

فى محاولة الوصول للحل قمت بمراسلة أخونا الخبير أحمد مبارك الحيقى .. وشرحت له باختصار ما نحن بصدده .. وقام بزيارة الموضوع ، وكان رده كالتالى:

اقتباس
أخي الحبيب، أشكرك بالغ الشكر على حرصك، وأسأل الله أن يكثر من أمثالك...

لاحظت حين قرأت الرسالة وتتبعت الرابط أن الأخ السائل قد تجاوز المشكلة، ولم يبق إلا السهل... لكن لي مع ذلك ملحوظات عسى أن تجد عندك قبولاً:

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

2. مرفق مثال لعرض تنسيق التاريخ (القصير) الحالي، وتغييره في الإعدادات الإقليمية من الكود، وذلك لمجرد أخذ الفكرة لعلها تفيد في موضع آخر (دخلت على ملفك ولم أجد بريداً واكتشفت أنه لا يمكنني إرفاق ملفات هنا، من الممكن أن أرفقها على المشاركة فيما بعد إن شاء الله)....

3. الكود الذي طلب الأخ السائل تفسيره في البداية هو لمجرد التحكم في شكل التاريخ من أجل استخدامه في عبارة SQL ليس إلا.

بارك الله في جهودك، وجزاك خير الجزاء في هذا الشهر الفضيل...

أخوك أحمد..

أولاُ أشكر أخونا أحمد على سرعة استجابته .. ثم على ذوقه المتناهى فى الرد ، جزاه الله عنا خير الجزاء .. وأكثر من أمثاله هو والأساتذة الرائعون فهؤلاء هم حقاً النافعون .. وأنا على ثقة أنه لو تيسر له الوقت سيزور موضوعك مرة أخرى ليتم مساهمته.

كان هذا الرد الوارد من الأستاذ/أحمد مبارك الحيقى خبير قواعد البيانات أكسس .. وقد تطرق فى الرد إلى الكود الذى تطلب تفسيره.

بالنسبة لإجبار المستخدم على الإدخال بالصيغة dd_mmm_yyyy فإن هذا غير ضرورى على الإطلاق .. فالتطبيق سيحول التاريخ المدخل بمجرد الضغط على مفتاح الإدخال Enter

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

تحياتى

محمد ندا

تم تعديل هذه المشاركة بواسطة Mohamed Nada في 4 سبتمبر 2009 في 15:08

... بقمة السعادة .. أعود بإذن الله لصحبتكم الرائعة قريباً ...

#12

الأخ العزيز محمد ندا... جزاك الله خيراً، لا أظنك تركت مثالاً للذوق والحرص على النفع إلا ضربته لنا، وأنا أوافقك تماماً على رأيك في حل مشكلة الأخ mtak33 ، وهنا أرفق المثال الذي وعدت به...

مع خالص التقدير...

LocaleDate.rar

#13

أخى أحمد

بارك الله فيك .. هكذا عهدنا خبراءنا .. بل أسرع مما نتوقع .. نفع الله بك وزادك من فضله...

والكود المرفق تم تجريبه ، وطبعاً يقوم بالعملية تمام.

أخى mtak33

الكود المرفق من أخينا أحمد يقوم بتعديل الإعدادات اللإقليمية (المحلية) للتاريخ .. فلو رغبت فى وضعه مثلاً عند تحميل تطبيقك فيمكنك ذلك (فقط إقرأ أولاً مشاركة الأخ أحمد حتى لا يتسبب لك فى متاعب مع أى تطبيقات أخرى).

نحن الآن فى انتظارك لتخبرنا إن كانت هذه المساهمات نافعة لك ...

تحياتى

محمد ندا

... بقمة السعادة .. أعود بإذن الله لصحبتكم الرائعة قريباً ...

#14

الاخ الكريم محمد ندا

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

جزاكم الله خيرا

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

اخى ارفق مثال لما تريدنى ان افعله

و ما ظبطت برضه

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

ارجو النظر اليه و المناقشه لما فيه

جزاك الله خيرا

db1.rar

كيميائى / محمد طه

#15

أخى الكريم

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

ربما يتوجه بنا التفكير الآن إلى ملف تعديل الإعدادات من الأستاذ/أحمد مبارك.

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

فى انتظار ردك الكريم.

تحياتى

محمد ندا

... بقمة السعادة .. أعود بإذن الله لصحبتكم الرائعة قريباً ...

#16

الاخ الكريم

محمد ندا

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

يعنى

هل لو غيرت اعداداتك لتكون us date

month-day-year

هل يعمل معك ايضا بشكل طبيعى ؟

كيميائى / محمد طه

#17

أخى الكريم

أخذت صور توضح ما يحدث معى .. أما التاريخ الأمريكى Month_Day_Year فهذا لم أجربه.

post-29007-1252109204_thumb.jpg

post-29007-1252109219_thumb.jpg

post-29007-1252109232_thumb.jpg

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

تحياتى

محمد ندا

... بقمة السعادة .. أعود بإذن الله لصحبتكم الرائعة قريباً ...

#18

جزاك الله كل خير اخى الكريم محمد ندا

و بجد شكرا جزيلا على تعبك معى فى هذا الموضوع

--

بالنسبة للأعدادات

من customize يتم التغيير من بداية الشهر او جعل اليوم هو البدايه

-

و لكن رأى استاذنا احمد مبارك

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

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

و اكتفى بما ذكرت

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

dd-mmm-yy

عن طريق input mask يكون افضل

لأنى بصراحه لم استطيع عملها

--

عموما جزاك الله كل خير

كيميائى / محمد طه

#19

لو ماينفعش

قولولى

اصل بصراحه منتظر

جزاكم الله خيرا

"و ان كان ينفع اجبر المستخدم على ادخال

dd-mmm-yy

عن طريق input mask يكون افضل

لأنى بصراحه لم استطيع عملها"

كيميائى / محمد طه

#20

أخى الكريم

والله لو لدى أى فكرة أو حل مبخلت به عليك ولكنى فعلاً ليس لدى فى هذ الموضوع إلا ما قدمت.

أعتذر منك بشدة.

تحياتى

محمد ندا

... بقمة السعادة .. أعود بإذن الله لصحبتكم الرائعة قريباً ...

#21

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

انا لم اقصدك و الله بطلبى الاخير

و انما كان طلب على العام

--

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

استحاله

--

جزاك الله كل خير

كيميائى / محمد طه

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