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

كود يقوم بالتنبيه قبل التاريخ المحدد بخمسة أيام

مغلق
بدأه T15 في 2 فبراير 2008 · 5 رد · 927 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

هذا الكود يقوم بحساب عدد المعاملات اللتي بقي على انتهائها 5 ايام

حيث اني وضعت التاريخ هجري ثلاث اقسام يوم - شهر - سنة

هل هو صحيح؟ وهل هناك احسن منه؟

		
Dim ig As Integer = 0
Dim Sql As String = "SELECT * FROM TREATMENT where IS_END='" & 0 & "'"
		Dim conn As OleDbConnection
		conn = getConnection()
		conn.Open()
		Dim cmd As New OleDbCommand(Sql, conn)
		Dim sdr As OleDbDataReader
		sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection)
		While sdr.Read
			If (sdr("end_year") - hijYear) = 0 Then
				If (sdr("end_month") - hijMonth) = 0 Then
					If (sdr("end_day") - hijDay) <= 5 Then
						ig = ig + 1
					End If
				End If
			End If
			If (sdr("end_year") - hijYear) = 0 Then
				If (sdr("end_month") - hijMonth) = 1 Then
					If (sdr("end_day") - hijDay) <= -25 Then
						ig = ig + 1
					End If
				End If
			End If
			If (sdr("end_year") - hijYear) = 1 Then
				If (sdr("end_month") - hijMonth) = -11 Then
					If (sdr("end_day") - hijDay) <= -25 Then
						ig = ig + 1
					End If
				End If
			End If
		End While
		Me.Label2.Text += ig.ToString + " معاملات"
		sdr.Close()

تم تعديل هذه المشاركة بواسطة T15 في 2 فبراير 2008 في 18:07

#2

يمكنك اختصار الكود هكذا

		If (sdr("end_year") - hijYear) = 0 Then
			If (sdr("end_month") - hijMonth) = 0 And (sdr("end_day") - hijDay) <= 5 Then
				ig = ig + 1
			ElseIf (sdr("end_month") - hijMonth) = 1 And (sdr("end_day") - hijDay) <= -25 Then
				ig = ig + 1
			End If
		ElseIf (sdr("end_year") - hijYear) = 1 And (sdr("end_month") - hijMonth) = -11 And (sdr("end_day") - hijDay) <= -25 Then
			ig = ig + 1
		End If

أو يمكنك تحويله إلى تاريخ ميلادي عن طريق مكتبة System.Globalization.UmAlQuraCalendar ثم حساب عدد الأيام بالدوال المتاحة للتاريخ الميلادي

#3

شكراً على مشاركتك اخوي system down

وقمت بتعديل الكود باللذي وضعت :) شكرا لك

بقي عندي مشكلة وحيدة فقط

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

/index.php?showtopic=150264

ومسموح اذا ما لك خبره في التقارير

شاكر ومقدر واعذرنا على الازعاج

#4

اعتقد لدي كود افضل واقل

Dim dt As New DateTime(sdr("end_year") , sdr("end_month") , sdr("end_day") )
		 if DateDiff(DateInterval.Day, Date.Today, dt) >=5 then
			 msgbox("still 5 days")
		 end if

اذا كانت القيم لديك بالهجري والتقويم لديك هجري فلامشكلة لديك

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

HijriAndGerogrian.zip

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

#5

شكراً على الاضافة الرائعة :)

القيم عندي في الداتا بيس هجري والجهاز ميلادي ولكن سوف اغير الكلتشر للابليكيشن حقي للعربي

بس مجرد سؤال اين اضع ملف الdll

وشكراً

#6

عموماً يعطيكم العافية

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

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

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

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

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

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