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

اختلاف صيغة التاريخ بين النظام والبرنامج تسبب مشكلة

مغلق
بدأه Romantic_touch في 8 فبراير 2007 · 6 رد · 2,015 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لدي برنامج فيجوال بيسك 2005 مربوط مع داتا بي 2003 اكسس

عندي البرنامج صيغة التاريخ فيه

dd-MM-yyyy

عندما يكون النظام الويندوز على نفس الصيغة فلا مشكلة

ولكن لو تغيرت الى صيغة اخىر مثلا

MM-dd-yyyy

تصير هنا المشكلة حيث ان الشهر ويروح مكان اليوم واليوم يروح مكان الشهر

مثلا لو دخلت تاريخ 7 ابريل من برنامجي يدخل في قاعدة البيانات 2 يوليو

فما الحل؟

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

#2

يمكنك عمل تغيير في طريقة إدخال التاريخ:

اجعل نوع حقل التاريخ نصي

و في البرنامج انشئ ثلاث كومبو بوكس

واحد لليوم و طريقة ترقيمه من خامنين..

و الثاني للشهر و أيضا من خانتين

و الثالث للسنة و يكون من أربع خانات..

ثم جمعها عاى بعض بالكود و يصير عندك صيغة تاريخ..

lxcs.png

syria-flag_small.jpg

#3

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

اخوي موضوع تستخدم تركيب تاريخ باستخدام سلسلة حرفية String ترا بيسويلك مشاكل ما تتخيلها في الكريستال ريبورت

يعني اول مشكلة بيسويها لك انه اذا كان رقم اليوم اصغر من رقم الشهر يقلب تلقائيا رقم اليوم مكان الشهر و الشهر مكان اليوم

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

افضل طريقة انه تستخدم DataTimePicker اداة خاصة بالتاريخ و تحول صيغته الى التالي dd/MMM/YYYY

و تسوي بقاعدة البيانات اكسس صيغة التاريخ short time او ما معناه صيغت تاريخ قصيرة

ملاحظة (صيغة قاعدة البيانات ستكون من الشكل MM/dd/yyyy)

و لم ترسل البيانات من برنامج في الفجوال بيسك دوت نت باستخدام ادوات الـ oledb ان شاء الله تمشي امورك تمام

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

(طبعا الفيجوال هو تلقائيا يوافق صيغة التاريخ اللي في القاعدة مع صيغة التاريخ اللي انت مستخدمها في الـ DataTimePicker)

ارجو اني وصلت معلومة مفيدة لك

مع تحياتي

اقتباس

أبكـــــي فتبتسم الجراح من البكا

فكـــــأنّها في كـل جارحـــــــة فـم ُ

يالابتسـام الجــرح كـم أبكي و كم

ينساب فــــوق شفاهه الحمرا دم

ُ

#4

كلامك صحيح أخي العزيز..

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

و بالتالي تحتاج طريقة لتقييد التاريخ بصيغة معينة..

حتى يتم عرض التقرير و البحث بشكل صحيح..

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

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

و بالتالي سيحدث أخطاء قي طريقة العرض..

بالنسبة للطريقة التي ذكرتها أنا لن يحصل أخطاء و السبب بسيط:

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

و لا يتدخلوا في طريقة ترتيب هذا النص الذي في الحقيقة هو التاريخ..

و عندما تعرضها في التقرير سيعتبرها نس الوضع أيضا..

لذا عندما تعطيه أمرا بتؤتيب العناصر حسب التاريخ لن يغير شيء فيها لأنها كما ذكرت نص..

و ستبقى كما هي فقط يرتب حسب الأرقام بدون أي تغيير...

lxcs.png

syria-flag_small.jpg

#5

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

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

Now.ToString("yyyy/mm/dd")

Now.ToString("dd/mm/yyyy")

و بالتوفيق

#6
SalehRam كتب:
كلامك صحيح أخي العزيز..

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

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

و بالتالي سيحدث أخطاء قي طريقة العرض..

اخوي انا سبق و استخدمت طريقتك قبل سنتين

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

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

اما بالنسبة للطريقة التي كتبتها فقد قمت قبل يومين فقط من هذه المشاركة بتغير نظام التاريخ في الكمبيوتر من united state الى arabic syria

و لم يحصل خطا لا في عملية الادخال للبيانات و لا عند طلب تقارير

فهل هناك اكثر من نظام التاريخ العربي عن الانكليزي ؟

اتمنى اني استطعت ايصال الفكرة

و السلام عليكم

اقتباس

أبكـــــي فتبتسم الجراح من البكا

فكـــــأنّها في كـل جارحـــــــة فـم ُ

يالابتسـام الجــرح كـم أبكي و كم

ينساب فــــوق شفاهه الحمرا دم

ُ

#7

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

بس ممكن انه الحل اللي عندي يفيد بعض الشئ

ليه ما تستخدم Format كما في المثال التالي

		 Dim d As Date = Format(DateTimePicker1.Value, "{0:'dd/MM/yyyy'}")

تم تعديل هذه المشاركة بواسطة Scoool في 13 فبراير 2007 في 08:14

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

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

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

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

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

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