منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

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

سؤالي عدي حقلين من نوع تكست يمثلان وقت الحضور والانصراف  
ويظهر الوقت بالطريقة التالية  مثلا   6:13 ص او  4:20 م 
عند الحفظ لقاعدة البيانات تظهر مشكلة وحاولت بكل الطرق بدون فائدة 
استعملت هذا الكود للحفظ  مع العلم استعمل قاعدة بيانات من نوع sqlserver  ونوع الحقل time(7)

Dim CmdInsert As New SqlCommand
        With CmdInsert
            .Connection = Con
            .CommandType = CommandType.Text
            .CommandText = "Insert Into wardya (num , name , time1 , time2 , period , addrate)values( @num ,  @name ,  @time1 ,  @time2 ,  @period ,  @addrate)"
            .Parameters.Clear()
            .Parameters.AddWithValue("@num", SqlDbType.Int).Value = Val(Txtnum.Text)
            .Parameters.AddWithValue("@name", SqlDbType.VarChar).Value = Txtname.Text.Trim
            'Now.ToString("hh:mm tt")
            .Parameters.AddWithValue("@time1", SqlDbType.Date).Value = Format(TextBox3.Text.ToString, "hh:mm tt")
            .Parameters.AddWithValue("@time2", SqlDbType.Date).Value = Format(TextBox4.Text.ToString, "hh:mm tt")
            .Parameters.AddWithValue("@period", SqlDbType.Date).Value = Format(TextBox5.Text.ToString, "hh:mm tt")
            '.Parameters.AddWithValue("@time1", SqlDbType.Date).Value = (TextBox3.Text)
            '.Parameters.AddWithValue("@time2", SqlDbType.Date).Value = (TextBox4.Text)
            '.Parameters.AddWithValue("@period", SqlDbType.Date).Value = (TextBox5.Text)
            .Parameters.AddWithValue("@addrate", SqlDbType.Int).Value = Val(Txtaddrate.Text)
        End With
        Try
            If Con.State = 1 Then Con.Close()
            Con.Open()
            CmdInsert.ExecuteNonQuery()
            Con.Close()
            MsgBox("تم إضافة السجل بنجاح", MsgBoxStyle.Information, "حفظ")
            newnum()

            CmdInsert = Nothing
        Catch ex As Exception
            Con.Close()
            MsgBox(Err.Description, MsgBoxStyle.Information)
        Finally
            If Con.State = ConnectionState.Open Then Con.Close()
        End Try
السلام عليكم ورحمة الله وبركاته
اخي الكريم
المشكلة اعتقد والله اعلم في تحويل قيم الوقت في مربعات النصوص التي تمثل الوقت صباحا او مساء
يجب تحويل هذه القيم الى الساعة نظام 24 هذا من جانب 
الامر الآخر هو حرفي (م - ص) بالعربي يجب استبدالها بـ (AM - PM)
وبالنسبة للوقت انت اعطيت الباراميتر من نوع تاريخ فقط ويجب استخدام DateTime
قم بالتجربة باستبدال هذه الاسطر الثلاثة   

أذا كانت صباحا ومساء بالعربي في التكست بوكس استخدم هذه السطور
كود :
           .Parameters.AddWithValue("@time1", SqlDbType.DateTime).Value = Convert.ToDateTime(TextBox3.Text.Replace("م", "PM").Replace("ص", "AM")).ToString("HH:mm")
           .Parameters.AddWithValue("@time2", SqlDbType.DateTime).Value = Convert.ToDateTime(TextBox4.Text.Replace("م", "PM").Replace("ص", "AM")).ToString("HH:mm")
           .Parameters.AddWithValue("@period", SqlDbType.DateTime).Value = Convert.ToDateTime(TextBox5.Text.Replace("م", "PM").Replace("ص", "AM")).ToString("HH:mm")
 او هذه اذا كانت AM PM
كود :
           .Parameters.AddWithValue("@time1", SqlDbType.DateTime).Value = Convert.ToDateTime(TextBox3.Text).ToString("HH:mm")
           .Parameters.AddWithValue("@time2", SqlDbType.DateTime).Value = Convert.ToDateTime(TextBox4.Text).ToString("HH:mm")
           .Parameters.AddWithValue("@period", SqlDbType.DateTime).Value = Convert.ToDateTime(TextBox5.Text).ToString("HH:mm")
اشكرك من كل قلبي
ساجرب