تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] إجراء عمليات على تاريخ بتنسيق مختلف عن تنسيق الجهاز
#1
السلام عليكم ورحمة الله وبركاته
عندي تاريخ بهذا التنسيق:
20/04/2019

قد يدون تنسيق الجهاز بهذا الشكل:
20-04-2019
أو بهذا الشكل:

2019/04/20

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

dd/MM/yyyy


جربت الكثير من الطرق ولكن لم تنفع، ووالملف بالمرفقات، وهذا هو الكود:
كود :
 If IsDate(TxtBDate.Text) Then
            TBDateTakePric.Text = DateAdd("d", 14, TxtBDate.Text)

            Dim dayadd As Date = DateAdd("d", 14, TxtBDate.Text)
            Dim days2 As Long = DateDiff("d", Now.Date, dayadd)
            'TBDateNumDay.Text = days2.ToString

            Select Case days2
                Case 0
                    TBDateNumDay.Text = "اليوم آخر يوم للتعليق "
                Case < 0
                    TBDateNumDay.Text = "الرصيد متاج منذ مدة"
                Case > 14
                    TBDateTakePric.Text = "لم يحن هذا التاريخ بعد"
                    TBDateNumDay.Text = "لم يحن هذا التاريخ بعد"
                Case Else
                    TBDateNumDay.Text = days2.ToString
            End Select
        Else
            TBDateTakePric.Text = "أدخل تاريخاً صحيحاً"
            TBDateNumDay.Text = "أدخل تاريخاً صحيحاً"
        End If


الملفات المرفقة
.zip   WindowsApp1.zip (الحجم : 51.42 ك ب / التحميلات : 18)
فاعلم أنه لا إله إلا الله
الرد }}}
تم الشكر بواسطة:
#2
وعليكم السلام ورحمة الله وبركاته

مرحباً اخى السندبااد

القي نظرة على الكود بهذا الشكل
كود :
       If IsDate(TxtBDate.Text) Then
           TBDateTakePric.Text = DateAdd("d", 14, CDate(TxtBDate.Text).ToString("dd/MM/yyyy"))

           Dim dayadd As Date = DateAdd("d", 14, CDate(TxtBDate.Text).ToString("dd/MM/yyyy"))
           Dim days2 As Long = DateDiff("d", Now.Date, dayadd)
           'TBDateNumDay.Text = days2.ToString

           Select Case days2
               Case 0
                   TBDateNumDay.Text = "اليوم آخر يوم للتعليق "
               Case < 0
                   TBDateNumDay.Text = "الرصيد متاج منذ مدة"
               Case > 14
                   TBDateTakePric.Text = "لم يحن هذا التاريخ بعد"
                   TBDateNumDay.Text = "لم يحن هذا التاريخ بعد"
               Case Else
                   TBDateNumDay.Text = days2
           End Select
       Else
           TBDateTakePric.Text = "أدخل تاريخاً صحيحاً"
           TBDateNumDay.Text = "أدخل تاريخاً صحيحاً"
       End If

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

وياتى دور
كود :
.ToString("dd/MM/yyyy")

وهنا لتحديد طبقاً لما تريده

تعال انت كده واكتب التاريخ بهذا الشكل
كود :
يوم شهر
25 4


فقط مسافة بين الرقمين وبدون تحديد السنة
الان تعال وجرب بهذا الشكل
كود :
24 4 2019

طيب تعال وجرب بهذا الشكل
كود :
24-4-2019
أو
24-4

والشكل العام
كود :
24/4
أو
24/4/2019

بالنهاية راجع هذا الرد وكذلك الموضوع

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

تحياتى لك
وتمنياتى لك التوفيق

وصحيحة نقطة اخيرة ونسيت تعديلها والتحدث بخصوصها
على هذا السطر لكود شرط التحقق
كود :
       If IsDate(TxtBDate.Text) Then

يفضل ان تجعله بهذا الشكل
كود :
       If Date.TryParseExact(TxtBDate.Text, "dd/MM/yyyy", System.Globalization.CultureInfo.CurrentCulture, Globalization.DateTimeStyles.None, DatePc) Then

وضع اعلى هذا السطر لشرط التحقق هذا الكود
كود :
       Dim DatePc As Date

بكده اى كان تنسيق الجهاز حتى ولو كان مثل
كود :
الخميس 25 ابريل 2019

فقط سيسلز بان يكون التاريخ المدخل فى TextBox
عبارة عن هذا الشكل
كود :
25/04/2019

ويلزم وضع 0 فى الشهر اذا كان الرقم من 1 : 9

ولتجنب وضع السفر ويكفي اذا كان التاريخ مدخل مثل هذا
كود :
25/4/2019

بانه يكفي الغرض فقط استبدل
كود :
dd/MM/yyyy

الى
كود :
dd/M/yyyy

بكده سيقبل التاريخ بهذا الشكل
كود :
25/4/2019

وايضاً
كود :
25/04/2019

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

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


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}}
#3
جزاك الله ووالديك الفردوس الأعلى أخي العزيز elgokr
لكن للأسف لم يتم الحل عندما يكون تنسيق التاريخ في الجهاز بهذا الشكل:
   


يمكنك التأكد بنفسك علماً أنني أستخدم ويندوز 10
فاعلم أنه لا إله إلا الله
الرد }}}
تم الشكر بواسطة: اسامه الهرماوي
#4
فى البداية اسف على التاخير اخى السندبااد

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

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

لكن بمجرد ما وصلت لك الفكرة من المؤكد انت ستتمكن من فعل الامر

ما خطر فى بالى هو التلاعب فى قيمة TxtBDate

حيث سيتم اجبار المستخدم ادخال التنسيق بهذا الشكل
كود :
25/4/2019
25/04/2019

فيتم التلاعب بعكس القيمة لتصبح
كود :
2019/4/25
2019/04/25

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

ويتم من خلال هذا الكود
كود :
       Dim GetDate As Date
       If TxtBDate.Text.Contains("/") AndAlso TxtBDate.Text.Split("/").Count = 3 AndAlso IsNumeric(TxtBDate.Text.Split("/").Last) Then
           GetDate = TxtBDate.Text.Split("/")(2) & "/" & TxtBDate.Text.Split("/")(1) & "/" & TxtBDate.Text.Split("/")(0)
       End If

الكود كاملاً للحدث
كود :
       Dim GetDate As Date
       If TxtBDate.Text.Contains("/") AndAlso TxtBDate.Text.Split("/").Count = 3 AndAlso IsNumeric(TxtBDate.Text.Split("/").Last) Then
           GetDate = TxtBDate.Text.Split("/")(2) & "/" & TxtBDate.Text.Split("/")(1) & "/" & TxtBDate.Text.Split("/")(0)
       End If
       If IsDate(GetDate) Then
           TBDateTakePric.Text = DateAdd("d", 14, GetDate)
           Dim dayadd As Date = DateAdd("d", 14, GetDate)
           Dim days2 As Long = DateDiff("d", Now.Date, dayadd)

           Select Case days2
               Case 0
                   TBDateNumDay.Text = "اليوم آخر يوم للتعليق "
               Case < 0
                   TBDateNumDay.Text = "الرصيد متاج منذ مدة"
               Case > 14
                   TBDateTakePric.Text = "لم يحن هذا التاريخ بعد"
                   TBDateNumDay.Text = "لم يحن هذا التاريخ بعد"
               Case Else
                   TBDateNumDay.Text = days2.ToString
           End Select
       Else
           TBDateTakePric.Text = "أدخل تاريخاً صحيحاً"
           TBDateNumDay.Text = "أدخل تاريخاً صحيحاً"
       End If

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

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

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

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


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}}
#5
جزاك الله خيراً أخي العزيز elgokr
بالفعل فكرت بهذا الحل، فألف شكر لك على هذه الفكرة الطيبة
وكنت أتمنى لو أن مايكروسوفت أوجدت لنا حلاً يتعامل من خلاله البرنامج مع تنسيق محدد من التاريخ بغض النظر عن تنسيق تاريخ الجهاز، فقد أوجدوا حلاً لمشكلة التاريخ الهجري أو الميلادي؛ حيث يمكنك اعتماد تاريخ معين ضمن برنامجك؛ كالتاريخ الهجري مثلاً، بغض النظر عن نوع التاريخ في الجهاز، فكنت أتمنى لو وُجِدَ مثل هذا الحل لمشكلة تنسيق التاريخ.

أكرر شكري لك أخي العزيز
Smile
فاعلم أنه لا إله إلا الله
الرد }}}
تم الشكر بواسطة: elgokr , elgokr , حريف برمجة
#6
(26-04-19, 12:11 PM)السندبااد كتب :
جزاك الله خيراً أخي العزيز elgokr
بالفعل فكرت بهذا الحل، فألف شكر لك على هذه الفكرة الطيبة
وكنت أتمنى لو أن مايكروسوفت أوجدت لنا حلاً يتعامل من خلاله البرنامج مع تنسيق محدد من التاريخ بغض النظر عن تنسيق تاريخ الجهاز، فقد أوجدوا حلاً لمشكلة التاريخ الهجري أو الميلادي؛ حيث يمكنك اعتماد تاريخ معين ضمن برنامجك؛ كالتاريخ الهجري مثلاً، بغض النظر عن نوع التاريخ في الجهاز، فكنت أتمنى لو وُجِدَ مثل هذا الحل لمشكلة تنسيق التاريخ.

أكرر شكري لك أخي العزيز
Smile

لى ولك وللجميع بامر الله

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

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

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

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


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}}
تم الشكر بواسطة: السندبااد , السندبااد , حريف برمجة


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [سؤال] يوجد مثال|كيف نعيد صياغة نص ليكون تاريخ مقبول justforit 7 324 01-11-25, 10:54 PM
آخر رد: justforit
  [VB.NET] حفظ تنسيق الفورم ثم تطبيقة علي فورم اخر فيجوال بيسك abo ragab 7 1,242 09-07-25, 12:45 AM
آخر رد: abo ragab
Photo لايمكن تعرف على تنسيق قاعدة البيانات الدريساوي 2 703 26-04-25, 12:24 AM
آخر رد: الدريساوي
  [VB.NET] بحث عن تاريخ EMADW 0 239 31-03-25, 10:35 PM
آخر رد: EMADW
Exclamation إن الموفر 'Microsoft.ACE.OLEDB.12.0' غير مسجل على الجهاز المحلي. سعود الشامان 5 9,447 19-03-25, 03:11 AM
آخر رد: خالد كامل1
  مشكلة تنسيق التاريخ في تقرير الكريستال مصمم هاوي 4 702 07-02-25, 01:24 AM
آخر رد: عبد العزيز البسكري
  استفسار عن تنسيق الفورم في حالة تغيرالفورم من وضع العادي الي التكبير fireswored1 4 843 22-01-25, 09:04 PM
آخر رد: fireswored1
Information [VB.NET] تنسيق أعمدة DataGridView أبو خالد الشكري 3 586 21-12-24, 02:40 PM
آخر رد: aljzazy
  كيفية معرفة الجهاز رئيسي ام فرعي المتألق9 1 404 13-11-24, 06:41 PM
آخر رد: justforit
  كيفية معرفة تاريخ انشاء ملف وحدفه المتألق9 2 515 07-11-24, 08:54 AM
آخر رد: F.H.M

التنقل السريع :


يقوم بقرائة الموضوع: