تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
تصحيح كود معرفة عدد ايام الغياب لموظف بين تاريخين
#1
اسعد الله اوقاتكم ايها الاخوة

يوجد عندي كود لمعرفة عدد غياب الموظفين بين تاريخين ولكن يوجد فية خطأ يرجى منكم التصحيح

استعمل فيجوال 2008 مع قاعدة بيانان اكسس 2003

مرفق الكود مع مثال للتجربة


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click


        Dim cmd As New OleDbCommand
        cmd.Connection = Conn
        cmd.CommandType = CommandType.Text
        cmd.CommandText = "select sum(Holiday)as Total from HolidayBooks where DateDay between #" & TextBox1.Text & "#" & "and" & "#" & TextBox2.Text & "' and HolidayBooks.CoName LiKE '%" & Trim(TextBox4.Text) & "' group by HolidayBooks.CoName "
        Conn.Open()
        Dim Total As Integer = cmd.ExecuteScalar
        Conn.Close()
        TextBox6.Text = Total.ToString
        Conn.Close()



    End Sub


الملفات المرفقة
.rar   WindowsApplication11.rar (الحجم : 118.92 ك ب / التحميلات : 66)
الرد }}}
تم الشكر بواسطة:
#2
السلام عليكم

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

جرب هذا التعديل
كود :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

   Dim sqlStr As String = _
       " SELECT  Sum([Holiday]) AS [Total] " & _
       " FROM    [HolidayBooks] " & _
       " WHERE   ( YEAR([DateDay]) = YEAR(NOW) ) " & _
       "         AND ( [CoName] LIKE '%" & Trim(TextBox4.Text) & "') " & _
       " GROUP   BY [CoName] "

   Dim cmd As New OleDbCommand(sqlStr, Conn)

   Conn.Open()
   Dim Total As Integer = cmd.ExecuteScalar
   Conn.Close()

   TextBox6.Text = Total.ToString

End Sub
الرد }}}
تم الشكر بواسطة:
#3
اشكرك اخي العزيز مساعدة اولا
نعم نفس الموضوع السابق حيث تم الحل بطريقة برمجية تختلف كثيرا عما نستخدم
وعند تجربة الحل الجديد في هذة المشاركة فان جميع النتائج تظهر خطأ حيت نريد ان نبحث بين تاريخين مثلا
من تاريخ 2017/10/05 الى تاريخ 2017/12/31 لا تعطينا العدد الصحيح لغياب الموظف

اخي العزيز
دائما عند البحث بيت تاريخين نستعمل between اين دورها في هذا المثال

شكرا على طولة الصبر
الرد }}}
تم الشكر بواسطة:
#4
ما المشكلة في طريقة البرمجة السابقة !



عندما رأيت التاريخ بداية السنة في مربع النص TextBox1 ونهاية السنة في مربع النص TextBox2 ظننت أن المطلوب هو البحث في السنة كاملة

حسناً، طالما المسألة فيها تغيير للتاريخ، تفضل هذا الكود
كود :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

   Dim sqlStr As String = _
       " SELECT  Sum([Holiday]) AS [Total] " & _
       " FROM    [HolidayBooks] " & _
       " WHERE   ( [DateDay] BETWEEN @d1 AND @d2 ) " & _
       "         AND ( [CoName] LIKE @nm ) " & _
       " GROUP   BY [CoName] "

   Dim cmd As New OleDbCommand(sqlStr, Conn)
   cmd.Parameters.AddWithValue("@d1", CDate(TextBox1.Text))
   cmd.Parameters.AddWithValue("@d2", CDate(TextBox2.Text))
   cmd.Parameters.AddWithValue("@nm", "%" & Trim(TextBox4.Text))

   Conn.Open()
   Dim Total As Integer = cmd.ExecuteScalar
   Conn.Close()

   TextBox6.Text = Total.ToString

End Sub
الرد }}}
تم الشكر بواسطة:
#5
اخي العزيز مساعدة اشكرك من كل قلبي على هذا الجهد

لكن اخي العزيز تم وضع الكود في المثال وتجربتة  ولا نتائج بين تاريخين
ارفق لك المثال مع الكود مرة اخرى


الملفات المرفقة
.rar   WindowsApplication666.rar (الحجم : 162.39 ك ب / التحميلات : 66)
الرد }}}
تم الشكر بواسطة:
#6
لتسير بشكل صحيح، يجب أن تتم بناء قاعدة البيانات من حيث الجداول والربط بينهم بالشكل الصحيح.


عادة جدول الموظفين Employees يكون فيه فقط بياناتهم الثابتة والتي نادراً ما يتم التعديل عليها.
أما مهامهم وإنجازاتهم تتم في جداول أخرى يتم فيه بالاشارة لرقم الموظف بأحد أعمدتها مثل EmployeeID.
الرد }}}
تم الشكر بواسطة:
#7
اخي العزيز مساعدة كل الاحترام والتقديم
اخي العزيز لو انتبهت الى المثال المرفق من قبل لتجد هناك جدول للموظفيين ومعلوماتهم اسم الجدول SalaryMan
وهناك جدول اخر للحركات واسم الجدول HolidayBooks وكذالك العلاقة بينهم موجودة

مع كل الاحترام
الرد }}}
تم الشكر بواسطة:



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


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