تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] استفسار عن تاريخ الانتهاء
#1
اسعد الله اوقاتكم اخواني
ارجو مساعدتي 
اريد التعديل على المشروع المرفق حيث عند اقتراب تاريخ الانتهاء تخرج رساله تنبيه باقي للانتهاء 30 يوم وثاني يوم يكتب باقي 29 يوم وهكذا 
قمت بارفاق المشروع كامل فقط اريد التعديل عليه ليقوم بهذه المهمه وبنفس الوقت يشتغل مع بدء تشغيل الكمبيوتر 

ارجو من لديه الحل افادتي ولكم جزيل الشكر


الملفات المرفقة
.zip   Tel_Directory.zip (الحجم : 114.16 ك ب / التحميلات : 106)
الرد }}}
تم الشكر بواسطة:
#2
PHP كود :
   Private Sub Form1_Load(sender As ObjectAs EventArgsHandles MyBase.Load
        If CheckTrialPeriod
(Application.StartupPath30Then
            MessageBox
.Show("you are in trial period ""Information")
 
           Me.Close()
 
       End If
 
   End Sub

    Private 
Function CheckTrialPeriod(projectDirectory As StringtryPeriod 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 
الرد }}}
تم الشكر بواسطة: hamada558 , HASAN6.0 , نسيم الترك1
#3
مشكور اخي الكريم على ردك
ولكن قمت بتجربة الكود ولم يعمل معي
هل يوجد شيء بالكود يجب ان اقوم بتعديله وما هو
اسم جدول الانتهاء في قاعدة البيانت هو data_end
الرد }}}
تم الشكر بواسطة:
#4
(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 
الرد }}}
تم الشكر بواسطة: hamada558 , نسيم الترك1
#5
تأكد من الجملة "اسم جدول الانتهاء في قاعدة البيانت هو data_end"

كل الحقول عندك "نص" فين حقل التاريخ؟
الرد }}}
تم الشكر بواسطة: نسيم الترك1
#6
اخي الكريم قمت باضافة الكود ولكن المشكله سواء يوجد بيانات ام لا يوجد بينات مخزنه بتظهر رساله 30 Days left
ولكن ما اريده هو في حاله قارب التاريخ على الانتهاء قبل 30 يوم ان يظهر رساله تنبيه وثاني يوم يعطي باقي 29 يوم بمعنى ايام متناقصه
الرد }}}
تم الشكر بواسطة:
#7
مع انك طنشتني، لكن مسامحك

غير نوع الحقل 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() ' يقوم بغلق قاعدة البيانات

        MsgBox("تم الإضافة بنجاح", MsgBoxStyle.Information, "نجاح") ' رساله تفيد بنجاح عملية الإضافة

        ' يقوم بإرجاع كل شيء كما كان من قفل وفتح الأزارير
        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.

    'End Sub
End Class
الرد }}}
تم الشكر بواسطة: نسيم الترك1
#8
الله يسامحك اخي الكريم لم اطنشك ولكن لم انتبه على ردك لك كل الاحترام والتقدير على مساعدتك واقدم اعتذاري لك
هذا ما اريده سلمت يداك ولكن كيف يمكن اضافة حقل اضافي بالتنبيه مثلا حاليا يظهر الاسم اريد ان يظهر معه رقم التلفون
وشيء اخر ويكون قد اتممت البرنامج ان يظهر التنبيهات التي قاربت على الانتهاء فيListBox1
ولك جزيل الشكر
الرد }}}
تم الشكر بواسطة:
#9
(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

       dp.Fill(ds)

       DataGridView1.DataSource = ds.Tables(0)
الرد }}}
تم الشكر بواسطة: نسيم الترك1
#10
شكرا اخي على ردك
ولكن قمت بوضع الكود في زر ولم يظهر البيانات في القريد فيو فقط يظهر اسماء الجدال ولم يظهر البيانات
الرد }}}
تم الشكر بواسطة:



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


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم