13-12-15, 06:04 PM (آخر تعديل لهذه المشاركة : 13-12-15, 07:59 PM {2} بواسطة نسيم الترك1.)
اسعد الله اوقاتكم اخواني
ارجو مساعدتي
اريد التعديل على المشروع المرفق حيث عند اقتراب تاريخ الانتهاء تخرج رساله تنبيه باقي للانتهاء 30 يوم وثاني يوم يكتب باقي 29 يوم وهكذا
قمت بارفاق المشروع كامل فقط اريد التعديل عليه ليقوم بهذه المهمه وبنفس الوقت يشتغل مع بدء تشغيل الكمبيوتر
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load If CheckTrialPeriod(Application.StartupPath, 30) Then MessageBox.Show("you are in trial period ", "Information") Me.Close() End If End Sub
Private Function CheckTrialPeriod(projectDirectory As String, tryPeriod As Integer) As Boolean Try Dim dt As DateTime = System.IO.Directory.GetCreationTime(projectDirectory) If DateTime.Now.Subtract(dt).TotalDays > tryPEriod Then Return True End If Catch ex As Exception Return False End Try Return False End Function
مشكور اخي الكريم على ردك
ولكن قمت بتجربة الكود ولم يعمل معي
هل يوجد شيء بالكود يجب ان اقوم بتعديله وما هو
اسم جدول الانتهاء في قاعدة البيانت هو data_end
(14-12-15, 01:57 AM)نسيم الترك1 كتب : مشكور اخي الكريم على ردك
ولكن قمت بتجربة الكود ولم يعمل معي
هل يوجد شيء بالكود يجب ان اقوم بتعديله وما هو
اسم جدول الانتهاء في قاعدة البيانت هو data_end
الكود شغال ..
فقط في بداية التشغيل From_load ضع هذا
PHP كود :
Dim dt As DateTime = System.IO.Directory.GetCreationTime(Application.StartupPath) If DateTime.Now.Subtract(dt).Days < 30 Then MsgBox(30 - DateTime.Now.Subtract(dt).Days & " Days left") Else MsgBox("End trial") End End If
اخي الكريم قمت باضافة الكود ولكن المشكله سواء يوجد بيانات ام لا يوجد بينات مخزنه بتظهر رساله 30 Days left
ولكن ما اريده هو في حاله قارب التاريخ على الانتهاء قبل 30 يوم ان يظهر رساله تنبيه وثاني يوم يعطي باقي 29 يوم بمعنى ايام متناقصه
14-12-15, 04:06 AM (آخر تعديل لهذه المشاركة : 14-12-15, 04:07 AM {2} بواسطة hamada558.)
مع انك طنشتني، لكن مسامحك
غير نوع الحقل data_end الى (تاريخ/وقت)
احذف TextBox8 وحط بداله DataTimePicker1
غير الكود كله بالكود هاد
كود :
Public Class Form1
Dim ds As New DataSet ' نعرف متغير من نوع داتاست
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' هذا حدث عند فتح الفورم
' نقوم بربط الداتاقريد و حقول النص بقاعدة البيانات
Call LoadData() 'LoadData نقوم بأستدعاء إجراء قمت بعمله بالأسفل وسميته
Dim a As String = check()
If a <> "" Then
MsgBox(a)
End If
End Sub
Shared Function check() As String
Dim dt As New DataTable
Dim ret As Integer = New OleDb.OleDbDataAdapter("SELECT T_Name, DateDiff ('d', Now(), data_end) As days FROM T_Tel WHERE DateDiff ('d', Now(), data_end) < 30", con).Fill(dt)
Dim sb As New System.Text.StringBuilder
If ret > 0 Then
sb.AppendLine("الاسماء والايام المتبقية")
For Each r As DataRow In dt.Rows
sb.AppendLine(r("T_Name") & " = " & r("days"))
Next
End If
Return sb.ToString
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Button1.Enabled = False ' يقفل زر الإضافة حتى لا يتم ضغطه مره أخرى
Button2.Enabled = True ' يفتح زر الحفظ
Button3.Enabled = False ' يقفل زر التعديل لانه الأن يتم عملية الإضافة
Button4.Enabled = False ' يقفل زر الحذف لانه الأن يتم عملية الحذف
ds.Clear() ' أمر تفريغ داتا ست حتى تكون مستعدة لأستقبال البيانات الأتية من قاعدة البيانات
DataGridView1.DataSource = Nothing ' فرغ إيضا داتاقريد
' ونفرغ إيضا جميع حقول النص من الربط
TextBox1.DataBindings.Clear()
TextBox2.DataBindings.Clear()
TextBox3.DataBindings.Clear()
TextBox4.DataBindings.Clear()
TextBox5.DataBindings.Clear()
TextBox7.DataBindings.Clear()
'TextBox8.DataBindings.Clear()
Label7.DataBindings.Clear() ' ونفرغ إيضا الليبل حق الرقم التسلسلي
TextBox1.Select() ' هذا الكود تعني ضع المؤشر على التكس رقم 1
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
' هذا كود الإضافة
' في البداية نقوم بتعريف متغير من نوع أوامر قواعد البيانات ومن ثم نسرد لها كود الأمر بتعريفه انه سيقوم بعملية إضافة في جدول تي تليفون في الحقول التالية والقيم علامات استفهام بعدد الحقول المراد إضافة فيها
Dim insertinto As New OleDb.OleDbCommand("insert into T_Tel (T_Name,T_Tel1,T_Tel2,T_EMail,T_Address,data,data_end) values (?,?,?,?,?,?,?)", con)
insertinto.Parameters.AddWithValue("@T_Name", OleDb.OleDbType.VarChar).Value = TextBox1.Text ' الأن نوجه البرنامج بأخذ البيانات الموجوده في الحقل رقم 1 ويضيفها في تي نيم
insertinto.Parameters.AddWithValue("@T_Tel1", OleDb.OleDbType.VarChar).Value = TextBox2.Text
insertinto.Parameters.AddWithValue("@T_Tel2", OleDb.OleDbType.VarChar).Value = TextBox3.Text
insertinto.Parameters.AddWithValue("@T_EMail", OleDb.OleDbType.VarChar).Value = TextBox4.Text
insertinto.Parameters.AddWithValue("@T_Address", OleDb.OleDbType.VarChar).Value = TextBox5.Text
insertinto.Parameters.AddWithValue("@data", OleDb.OleDbType.VarChar).Value = TextBox7.Text
'insertinto.Parameters.AddWithValue("@data_end", OleDb.OleDbType.VarChar).Value = TextBox8.Text
insertinto.Parameters.AddWithValue("@data_end", OleDb.OleDbType.VarChar).Value = DateTimePicker1.Value.Date
'ID نلاحظ هنا اننا لم نضيف بيانات في حقل
' والسبب ان في قاعدة البيانات نوعه ترقيم تلقائي
If con.State = ConnectionState.Closed Then con.Open() ' هذا الكود هو فحص هل قاعدة البيانات مغلقه ام مفتوحة إذا كان مغلقه يقوم بفتححها حتى يتمكن من الإضافة
insertinto.ExecuteNonQuery() ' يقوم الان بتنفيذ الأوامر السابقه وتطبيقها
con.Close() ' يقوم بغلق قاعدة البيانات
' يقوم بإرجاع كل شيء كما كان من قفل وفتح الأزارير
Button1.Enabled = True
Button2.Enabled = False
Button3.Enabled = True
Button4.Enabled = True
' سنقوم بمنادات إجراء عرض البيانات حتى يعرض لي البيانات بعد التحديث
Call LoadData()
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
' هذا كود التعديل
' في البداية نقوم بسؤال المستخدم هل فعلا يريد تعديل على هذا السجل إذا ضغط نعم ينتقل للسطر التالي خلاف هذا يخرج من الإجراء بالكامل ولا ينفذ إي شيء
If MsgBox("هل تريد بتأكيد حفظ التعديل على السجل الحالي؟", MsgBoxStyle.YesNo, "تنبيه") = MsgBoxResult.No Then Exit Sub
' نقوم بتعريف متغير من نوع أوامر قواعد البيانات ومن ثم نسرد لها كود الأمر بتعريفه انه سيقوم بعملية التعديل في جدول تي تليفون في الحقول التالية ونضيف اسماء الحقول وبجانب كل اسم حقل نضيف نفس اسم الحقل لاكن يسبقه بعلامة مساواه و علامت الآت
'وهي تعني بشرط تحقق مايلي ومن ثم نكتب حقل اسم الحقل الإيدي بمقارنته مع ليبل 7 الذي يحتوي على إي دي where ملاحظة سنزيد كلمة
Dim EditUpdate As New OleDb.OleDbCommand("update T_Tel set T_Name=@T_Name,T_Tel1=@T_Tel1,T_Tel2=@T_Tel2,T_EMail=@T_EMail,T_Address=@T_Address,data=@data,data_end=@data_end where ID=" & Val(Label7.Text) & "", con)
EditUpdate.Parameters.AddWithValue("@T_Name", OleDb.OleDbType.VarChar).Value = TextBox1.Text ' الأن نوجه البرنامج بأخذ البيانات الموجوده في الحقل رقم 1 ويضيفها في تي نيم مثل ما فعلنا في الإضافة
EditUpdate.Parameters.AddWithValue("@T_Tel1", OleDb.OleDbType.VarChar).Value = TextBox2.Text
EditUpdate.Parameters.AddWithValue("@T_Tel2", OleDb.OleDbType.VarChar).Value = TextBox3.Text
EditUpdate.Parameters.AddWithValue("@T_EMail", OleDb.OleDbType.VarChar).Value = TextBox4.Text
EditUpdate.Parameters.AddWithValue("@T_Address", OleDb.OleDbType.VarChar).Value = TextBox5.Text
EditUpdate.Parameters.AddWithValue("@data", OleDb.OleDbType.VarChar).Value = TextBox7.Text
'EditUpdate.Parameters.AddWithValue("@data_end", OleDb.OleDbType.VarChar).Value = TextBox8.Text
EditUpdate.Parameters.AddWithValue("@data_end", OleDb.OleDbType.VarChar).Value = DateTimePicker1.Value.Date
If con.State = ConnectionState.Closed Then con.Open() ' هذا الكود هو فحص هل قاعدة البيانات مغلقه ام مفتوحة إذا كان مغلقه يقوم بفتححها حتى يتمكن من التعديل
EditUpdate.ExecuteNonQuery() ' يقوم الان بتنفيذ الأوامر السابقه وتطبيقها
con.Close() ' يقوم بغلق قاعدة البيانات
MsgBox("تم التعديل بنجاح", MsgBoxStyle.Information, "نجاح") ' رساله تفيد بنجاح عملية التعديل
' سنقوم بمنادات إجراء عرض البيانات حتى يعرض لي البيانات بعد التحديث
Call LoadData()
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
' هذا كود الحذف
' في البداية نقوم بسؤال المستخدم هل فعلا يريد حذف هذا السجل إذا ضغط نعم ينتقل للسطر التالي خلاف هذا يخرج من الإجراء بالكامل ولا ينفذ إي شيء
If MsgBox("هل تريد بالتأكيد حذف هذا السجل ؟", MsgBoxStyle.YesNo + MsgBoxStyle.Information + MsgBoxStyle.DefaultButton2, "تنبيه") = MsgBoxResult.No Then Exit Sub
' نقوم بتعريف متغير من نوع أوامر قواعد البيانات ونقوم بإدخال له أمر حذف من جدول تي تيلفون بشرط ان يكون رقم الإيدي مطابق للإيديه الظاهر في ليبيل 7
Dim del As New OleDb.OleDbCommand("delete from T_Tel where ID=" & Val(Label7.Text) & "", con)
If con.State = ConnectionState.Closed Then con.Open() ' هذا الكود هو فحص هل قاعدة البيانات مغلقه ام مفتوحة إذا كان مغلقه يقوم بفتححها حتى يتمكن من الحذف
del.ExecuteNonQuery() ' يقوم الان بتنفيذ الأوامر السابقه وتطبيقها
con.Close() ' يقوم بغلق قاعدة البيانات
MsgBox("تم الحذف بنجاح", MsgBoxStyle.Information, "نجاح") ' رساله تفيد بنجاح عملية الحذف
' سنقوم بمنادات إجراء عرض البيانات حتى يعرض لي البيانات بعد التحديث
Call LoadData()
End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
Me.Close()
End Sub
Private Sub TextBox6_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox6.TextChanged
' كود اثناء الكتابه في خانة البحث
If TextBox6.Text.Trim = "*" Then ' إذا تم وضع نجمه يقوم بإجراء مايلي
Call LoadData() ' نداء الإجراء الذي يقوم بالاتصال الكامل لجميع البيانات
Exit Sub ' يخرج من الإجراء
Else ' خلاف هذا
ds.Clear() ' يفرغ داتا ست
DataGridView1.DataSource = Nothing ' يفرغ داتاقريد
' بعد اسم الجدول وهذا يعني انه يوجد شرط يجب تحققه where نقوم بتعريف متغير من نوع داتا ادابتر لقي يتم إضافة كود الفلتره هناك ولاكن نلاحظ هنا اننا ضفنا كلمة
' وهذا الامر يعني يقوم بمقارنته الكلمة او الحروف التي تشابه ولا يشرط ان تكتب الاسم كامل like ونلاحظ ان بعد ما قمنا بوضع اسم الحقل الذي نريد الشرط بمساواته لم نكتب علامة المساواه بل كتبنا كلمة
' ومن ثم نلاحظ وجود علامة بالمئة إي ابحث في بداية الكلمة وإيضا توجد علامة بالمئة في النهاية اي ابحث إيضا في نهاية الكلمه
' اما إذا وضعت علامة بالمئة في البداية فقط وكتب المستخدم حرف م سيظهر جميع السجلات التي تبدأ بحرف ميم فقط
' اما في هذا الحال سيظهر جميع السجلات التي تحتوي حرف ميم في البداية وسجلات التي تحتوي على حرف ميم في النهاية وسجلات التي تحتوي حرف ميم في الوسط
' اما علامة ( ' ) التي سبقت علمتي بالميئة هي دلاله ان الحقل في قاعدة البيانات من نوع نصي وليس رقمي إضا ما كتبناها سيحدث خطأ ولن ينفذ الكود لان الحقل نصي يجي وضعها
Dim da As New OleDb.OleDbDataAdapter("select ID,T_Name,T_Tel1,T_Tel2,T_EMail,T_Address,data,data_end from T_Tel where T_Name like '%" & TextBox6.Text & "%' ", con)
da.Fill(ds, "T_Tel") ' نقوم ملئ النتائج في داتاست
DataGridView1.DataSource = ds ' ثم ننقل البيانات من داتا ست إلى داتاقريد لعرضها في داتاقريد
DataGridView1.DataMember = "T_Tel" ' نوجه له اسم الجدول
End If
End Sub
' هذا الإجراء قمت بعملة لانه يحتوي على أكواد سأستعملها في أكثر من مكان حتى لا أكرر الكود قمت بوضعه ضمن إجراء وسأٌوم بمناداته كل مره أريده
' وهو إجراء عرض البيانات في داتاقريد وفي حقول النص
Sub LoadData()
ds.Clear() ' أمر تفريغ داتا ست حتى تكون مستعدة لأستقبال البيانات الأتية من قاعدة البيانات
DataGridView1.DataSource = Nothing ' فرغ إيضا داتاقريد
' ونفرغ إيضا جميع حقول النص من الربط
TextBox1.DataBindings.Clear()
TextBox2.DataBindings.Clear()
TextBox3.DataBindings.Clear()
TextBox4.DataBindings.Clear()
TextBox5.DataBindings.Clear()
TextBox7.DataBindings.Clear()
'TextBox8.DataBindings.Clear()
DateTimePicker1.DataBindings.Clear()
Label7.DataBindings.Clear() ' ونفرغ إيضا الليبل حق الرقم التسلسلي
' نعرف متغير من نوع داتا أدابتر حتى نقوم بعملية استعلام عن البيانات في قاعدة البيانات
Dim da As New OleDb.OleDbDataAdapter("select ID,T_Name,T_Tel1,T_Tel2,T_EMail,T_Address,data,data_end from T_Tel", con)
da.Fill(ds, "T_Tel") ' نقوم ملئ النتائج في داتاست
DataGridView1.DataSource = ds ' ثم ننقل البيانات من داتا ست إلى داتاقريد لعرضها في داتاقريد
DataGridView1.DataMember = "T_Tel" ' نوجه له اسم الجدول
' نربطها إيضا في حقول النص حتى يملي الحقول تلقائي عند تحديد عنصر من داتا قريد
Label7.DataBindings.Add("text", ds, "T_Tel.ID")
TextBox1.DataBindings.Add("text", ds, "T_Tel.T_Name")
TextBox2.DataBindings.Add("text", ds, "T_Tel.T_Tel1")
TextBox3.DataBindings.Add("text", ds, "T_Tel.T_Tel2")
TextBox4.DataBindings.Add("text", ds, "T_Tel.T_EMail")
TextBox5.DataBindings.Add("text", ds, "T_Tel.T_Address")
TextBox7.DataBindings.Add("text", ds, "T_Tel.data")
'TextBox8.DataBindings.Add("text", ds, "T_Tel.data_end")
DateTimePicker1.DataBindings.Add("value", ds, "T_Tel.data_end")
End Sub
'Public Sub New()
' ' This call is required by the designer.
' InitializeComponent()
' ' Add any initialization after the InitializeComponent() call.
الله يسامحك اخي الكريم لم اطنشك ولكن لم انتبه على ردك لك كل الاحترام والتقدير على مساعدتك واقدم اعتذاري لك
هذا ما اريده سلمت يداك ولكن كيف يمكن اضافة حقل اضافي بالتنبيه مثلا حاليا يظهر الاسم اريد ان يظهر معه رقم التلفون
وشيء اخر ويكون قد اتممت البرنامج ان يظهر التنبيهات التي قاربت على الانتهاء فيListBox1
ولك جزيل الشكر
(13-12-15, 06:04 PM)نسيم الترك1 كتب : اسعد الله اوقاتكم اخواني
ارجو مساعدتي
اريد التعديل على المشروع المرفق حيث عند اقتراب تاريخ الانتهاء تخرج رساله تنبيه باقي للانتهاء 30 يوم وثاني يوم يكتب باقي 29 يوم وهكذا
قمت بارفاق المشروع كامل فقط اريد التعديل عليه ليقوم بهذه المهمه وبنفس الوقت يشتغل مع بدء تشغيل الكمبيوتر
ارجو من لديه الحل افادتي ولكم جزيل الشكر
يتم تسجيل البيانات الباقي على انتهائها 30 يوم في القريد فيو
هذا الكود ضعه في زر .
كود :
Dim dp As New OleDb.OleDbDataAdapter("select T_Name,T_Tel1,data_end from T_Tel WHERE data_end <='" & Date.Now.AddDays(-30).ToString("dd/MM/yyyy") & "'", con)
Dim ds As New DataSet