منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[سؤال] هل يوجد طريقة للتنبيه قبل انتهاء التاريخ بيومين - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : [سؤال] هل يوجد طريقة للتنبيه قبل انتهاء التاريخ بيومين (/showthread.php?tid=18993)

الصفحات: 1 2 3


RE: هل يوجد طريقة للتنبيه قبل انتهاء التاريخ بيومين - ابو ليلى - 28-01-17

العفو اخي الكريم , لا عليك من الطريقة اذا لم تناسبك
من خلال سؤالك انا ارى انك تريد فحص المستخدمين الذين قاربة مدتهم على الانتهاء وفق التاريخ الذي تريده 
فمثلاً انت تريد عرض المستخدمين الذين بقي على انتهائهم يومين , اذاً فانت امام جدول لانه قد يكون هناك اكثر من مستخدم يطابق الشرط .
لذلك انا اقترحت عليك الطريقة السابقة من جهة قاعدة البيانات لتوفر عليك ما هو غير ضروري من جهة البرنامج
و بكل الاحوال حتى لو حاولت تطبقها عن طريقة الكود وفق دالة ما فانت ستعود لنفس الطريق السابق و تطول عليك المسافة
انظر لهذه الدالة
PHP كود :
   Public Function GetDays(Num As Long) As DataTable
        Dim _Select 
As String "Select user_name ,(DateDiff(""d"",[D1],[D2])) As EndAfter  From user_data Where DateDiff(""d"",[D1],[D2]) " "<=" Num
        Using Cmd 
As New OleDbCommand With {.CommandText _Select, .Connection DBConn}
 
           Dim Reader As OleDbDataReader Cmd.ExecuteReader
            Dim Dt 
As New DataTable
            Dt
.Load(Reader)
 
           Return Dt
        End Using
    End 
Function 

حيث الوسيطة Num تمثل عدد الايام التي تريد الفحص وفقها,والدالة تعيد جدول بالمستخدمين الذين يحققون الشرط و الجدول يحتوي على حقلين (اسم المستخدم وعدد الايام المتبقية)
ضع هذه الدالة في المديول لديك و جرب استدعائها  في بداية اقلاع النموذج لديك , بعد وضع اداة تستقبل بيانات الجدول مثل DataGridView

PHP كود :
   Private Sub FRm_mang_Load(ByVal sender As System.ObjectByVal e As System.EventArgsHandles MyBase.Load
        Button1_Click
(sendere)
 
       DataGridView1.DataSource GetDays(2)
 
   End Sub 
سترى انك قد استقبلت بيانات المستخدمين الموافقين للشرط .

كما ويمكنك الفحص وفق مستخدم واحد فقط وفق دالة مثل هذه
PHP كود :
   Public Function GetDays(ByVal Value As StringByVal Date1 As DateDate2 As DateNum As Long) As String
        Dim _Select 
As String "Select user_name From user_data Where user_name Like '" Value "' And  " DateDiff(DateInterval.DayDate1Date2) & "<=" Num
        Using Cmd 
As New OleDbCommand With {.CommandText _Select, .Connection DBConn}
 
           Dim Reader As OleDbDataReader Cmd.ExecuteReader
            Dim Msg 
As String String.Empty
 
           While Reader.Read
                If Reader
.HasRows Then
                    Msg 
Reader.Item("user_name")
 
               End If
 
           End While

 
           If Not String.IsNullOrEmpty(MsgThen
                Return Msg
            Else
                Return Nothing
            End 
If

 
       End Using
    End 
Function 
الدالة تعيد نص فيه اسم المستخدم الذي يحقق الشرط و لها عدة وسائط 
value=اسم المستخدم
Date1=تاريخ البداية
Date2=تاريخ النهاية
Num=المدة المطلوبة للفحص وهي رقم

الاستدعاء وفق برنامجك
PHP كود :
   Private Sub ListBox1_Click(ByVal sender As ObjectByVal e As System.EventArgsHandles ListBox1.Click
        If ListBox1
.Items.Count 0 Then Exit Sub
        ShowData
()
 
       MsgBox(GetDays(user_name.TextD1.ValueD2.Value5))
 
   End Sub 

بالتوفيق



RE: هل يوجد طريقة للتنبيه قبل انتهاء التاريخ بيومين - Marwan9990 - 29-01-17

(28-01-17, 11:43 PM)ابو ليلى كتب : العفو اخي الكريم , لا عليك من الطريقة اذا لم تناسبك
من خلال سؤالك انا ارى انك تريد فحص المستخدمين الذين قاربة مدتهم على الانتهاء وفق التاريخ الذي تريده 
فمثلاً انت تريد عرض المستخدمين الذين بقي على انتهائهم يومين , اذاً فانت امام جدول لانه قد يكون هناك اكثر من مستخدم يطابق الشرط .
لذلك انا اقترحت عليك الطريقة السابقة من جهة قاعدة البيانات لتوفر عليك ما هو غير ضروري من جهة البرنامج
و بكل الاحوال حتى لو حاولت تطبقها عن طريقة الكود وفق دالة ما فانت ستعود لنفس الطريق السابق و تطول عليك المسافة
انظر لهذه الدالة
PHP كود :
   Public Function GetDays(Num As Long) As DataTable
        Dim _Select 
As String "Select user_name ,(DateDiff(""d"",[D1],[D2])) As EndAfter  From user_data Where DateDiff(""d"",[D1],[D2]) " "<=" Num
        Using Cmd 
As New OleDbCommand With {.CommandText _Select, .Connection DBConn}
 
           Dim Reader As OleDbDataReader Cmd.ExecuteReader
            Dim Dt 
As New DataTable
            Dt
.Load(Reader)
 
           Return Dt
        End Using
    End 
Function 

حيث الوسيطة Num تمثل عدد الايام التي تريد الفحص وفقها,والدالة تعيد جدول بالمستخدمين الذين يحققون الشرط و الجدول يحتوي على حقلين (اسم المستخدم وعدد الايام المتبقية)
ضع هذه الدالة في المديول لديك و جرب استدعائها  في بداية اقلاع النموذج لديك , بعد وضع اداة تستقبل بيانات الجدول مثل DataGridView

PHP كود :
   Private Sub FRm_mang_Load(ByVal sender As System.ObjectByVal e As System.EventArgsHandles MyBase.Load
        Button1_Click
(sendere)
 
       DataGridView1.DataSource GetDays(2)
 
   End Sub 
سترى انك قد استقبلت بيانات المستخدمين الموافقين للشرط .

كما ويمكنك الفحص وفق مستخدم واحد فقط وفق دالة مثل هذه
PHP كود :
   Public Function GetDays(ByVal Value As StringByVal Date1 As DateDate2 As DateNum As Long) As String
        Dim _Select 
As String "Select user_name From user_data Where user_name Like '" Value "' And  " DateDiff(DateInterval.DayDate1Date2) & "<=" Num
        Using Cmd 
As New OleDbCommand With {.CommandText _Select, .Connection DBConn}
 
           Dim Reader As OleDbDataReader Cmd.ExecuteReader
            Dim Msg 
As String String.Empty
 
           While Reader.Read
                If Reader
.HasRows Then
                    Msg 
Reader.Item("user_name")
 
               End If
 
           End While

 
           If Not String.IsNullOrEmpty(MsgThen
                Return Msg
            Else
                Return Nothing
            End 
If

 
       End Using
    End 
Function 
الدالة تعيد نص فيه اسم المستخدم الذي يحقق الشرط و لها عدة وسائط 
value=اسم المستخدم
Date1=تاريخ البداية
Date2=تاريخ النهاية
Num=المدة المطلوبة للفحص وهي رقم

الاستدعاء وفق برنامجك
PHP كود :
   Private Sub ListBox1_Click(ByVal sender As ObjectByVal e As System.EventArgsHandles ListBox1.Click
        If ListBox1
.Items.Count 0 Then Exit Sub
        ShowData
()
 
       MsgBox(GetDays(user_name.TextD1.ValueD2.Value5))
 
   End Sub 

بالتوفيق

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

يوم سعيد باذن الله لك


RE: هل يوجد طريقة للتنبيه قبل انتهاء التاريخ بيومين - Marwan9990 - 30-01-17

مساء الخير ي اخوان اعتذر عن رفع الموضوع من جديد فالبدايه ولكن يعلم الله بسبب احتياجي الضروري للموضوع هذا ..

حاولت اطبق اكواد اخي ابو ليلى ربي يجزيه الف خير ولكن لم انجح بسبب قل خبرتي ..

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


RE: هل يوجد طريقة للتنبيه قبل انتهاء التاريخ بيومين - مساعدة - 30-01-17

ضع هذا الكود في آخر الروتين المسمى ShowData في الفورم frm_permissions
كود :
Dim d As Integer = DateDiff("d", Now.Date, CDate(D2.Text))
If d < 0 Then
    MsgBox("انتهى")
ElseIf d < 3 Then
    MsgBox("قارب على الانتهاء")
End If
مع التأكد من وجود تاريخ في العمود D2 لكل المستخدمين المسجلين في قاعدة البيانات


RE: هل يوجد طريقة للتنبيه قبل انتهاء التاريخ بيومين - Marwan9990 - 31-01-17

(30-01-17, 02:32 PM)مساعدة كتب : ضع هذا الكود في آخر الروتين المسمى ShowData في الفورم frm_permissions
كود :
Dim d As Integer = DateDiff("d", Now.Date, CDate(D2.Text))
If d < 0 Then
   MsgBox("انتهى")
ElseIf d < 3 Then
   MsgBox("قارب على الانتهاء")
End If
مع التأكد من وجود تاريخ في العمود D2 لكل المستخدمين المسجلين في قاعدة البيانات

مساء الخير اخي اسف ع تاخر الرد بسبب ارتباطي ب مشاغلي ما قدرت اطبق كلامك الا الان اخي ربي يعطيك العافيه الكود شغال ميه ميه والفكره ناجحه ولكن تبقى شي واحد الكود الان فعلا ينبهني انه مستخدم شارف ع نهايه قبل ب يومين او انتهاء وقته .. 
ولكن اخي كيف اخليه يحدد لي ف مسج الي يصدره اهو يكتب الان انتهاء ولكن كيف اجعله يكتب مثلا المستخدم فلاني الي انتهاء عشان انا اعرف من الي انتهت صلاحيته ف قاعدة البايانات او انتهاآ تاريخه ؟


RE: هل يوجد طريقة للتنبيه قبل انتهاء التاريخ بيومين - مساعدة - 31-01-17

لم أفهم !


RE: هل يوجد طريقة للتنبيه قبل انتهاء التاريخ بيومين - Marwan9990 - 31-01-17

يعني اخي الان انا لما اشغل البرنامج يجيني مسج على طول (قارب على الانتهاء ) ولكني ابيه يكون بشكل التالي..

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

( احمد قارب على الانتهاء)
الي حدث انه الكود حدد لي ف المسج المنبعث من هو المستخدم الي قارب على الانتهاء..

مدري اذا فكره واضحه


RE: هل يوجد طريقة للتنبيه قبل انتهاء التاريخ بيومين - مساعدة - 31-01-17

ممكن تجرب استبدال السطر بالتالي
كود :
MsgBox(user_name.Text & " قارب على الانتهاء ", vbMsgBoxRtlReading)



RE: هل يوجد طريقة للتنبيه قبل انتهاء التاريخ بيومين - Marwan9990 - 31-01-17

وربي دار راسي ..
الكود شغال اخي وصار يحدد لي اسم الشخص المنتهي ولكن كل هذا يحدث لما اختار المستخدم انا من قائمة ليست فيو .. يعني لو معاي مستخدم احمد واجيت اختاره من قائمة وضغطة عليه رح يقولي لو تاريخه منتهي ولكن الكود لا يعطي تنبيه اوتماتيكي يعني اول من تدخل البرنامج ينبهك بالمستخدمين الي انتهاء تاريخهم او اقترب ع الانتهاء في قاعدة بيانات الي معك ..


بعدني بحاول احلل المشروع الي سبق ورفعته عل وعسى اقدر اطبقه ف مشروعي ..


ربي يعطيك الف عافيه اخي الكريم وسموحه منك على تعبك معاي
وشكر موصول ل باقي الاخوان ايضا الي وقفو معاي ..


RE: هل يوجد طريقة للتنبيه قبل انتهاء التاريخ بيومين - مساعدة - 31-01-17

كان طلبك من الأول على نافذة الصلاحيات وليس نافذة الدخول.