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

كود :
Conversion from string "" to type 'Date' is not valid.
الكود بالفورم 1

كود :
Imports System.Data
Imports System.Data.SqlClient
Public Class Form1
   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       InsertNewRowIn_CASE(TextBox1.Text, TextBox2.Text, TextBox3.Text)
End Sub
   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       Data_configuration()
  End Sub
   Public Sub InsertNewRowIn_CASE(ByVal TextBox1 As Int32, ByVal TextBox2 As String, ByVal TextBox3 As DateTime)
 
       Dim Cmd As New SqlCommand
       With Cmd
           .Connection = Conne_Dept
           .CommandType = CommandType.Text
           .CommandText = "INSERT INTO Table_Product (Product_id , Product_name, Product_date) VALUES ( @Product_id , @Product_name, @Product_date)"
           .Parameters.Clear()
           .Parameters.AddWithValue("@Product_id", SqlDbType.Int).Value = TextBox1
           .Parameters.AddWithValue("@Product_name", SqlDbType.NVarChar).Value = TextBox2
           .Parameters.AddWithValue("@Product_date", SqlDbType.DateTime).Value = TextBox3

       End With
       Try
           If Conne_Dept.State = 1 Then Conne_Dept.Close()
           Conne_Dept.Open()

           Cmd.ExecuteNonQuery()

           Conne_Dept.Close()
           Cmd = Nothing
           MsgBox("تم الحفظ بنجاح")

       Catch ex As Exception
           Conne_Dept.Close()
           MsgBox(Err.Description, MsgBoxStyle.Information)
       Finally
           If Conne_Dept.State = ConnectionState.Open Then Conne_Dept.Close()
       End Try
   End Sub
End Class
الرد }}}
تم الشكر بواسطة:
#2
غير الى :

كود :
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       InsertNewRowIn_CASE(TextBox1.Text, TextBox2.Text, TextBox3.Text)
End Sub


كود :
Public Sub InsertNewRowIn_CASE(ByVal TextBox1 As Int32, ByVal TextBox2 As String, ByVal TextBox3 As String)
       Dim Cmd As New SqlClient.SqlCommand
       With Cmd
           .Connection = Conne_Dept
           .CommandType = CommandType.Text
           If TextBox3 = "" Then
               .CommandText = "INSERT INTO Table_Product (Product_id , Product_name) VALUES ( @Product_id , @Product_name)"
               .Parameters.Clear()
               .Parameters.AddWithValue("@Product_id", SqlDbType.Int).Value = TextBox1
               .Parameters.AddWithValue("@Product_name", SqlDbType.NVarChar).Value = TextBox2
           Else
               .CommandText = "INSERT INTO Table_Product (Product_id , Product_name, Product_date) VALUES ( @Product_id , @Product_name, @Product_date)"
               .Parameters.Clear()
               .Parameters.AddWithValue("@Product_id", SqlDbType.Int).Value = TextBox1
               .Parameters.AddWithValue("@Product_name", SqlDbType.NVarChar).Value = TextBox2
               .Parameters.AddWithValue("@Product_date", SqlDbType.DateTime).Value = TextBox3
           End If
       End With
       Try
           If Conne_Dept.State = 1 Then Conne_Dept.Close()
           Conne_Dept.Open()

           Cmd.ExecuteNonQuery()

           Conne_Dept.Close()
           Cmd = Nothing
           MsgBox("تم الحفظ بنجاح")
       Catch ex As Exception
           Conne_Dept.Close()
           MsgBox(Err.Description, MsgBoxStyle.Information)
       Finally
           If Conne_Dept.State = ConnectionState.Open Then Conne_Dept.Close()
       End Try
   End Sub
الرد }}}
تم الشكر بواسطة: rnmr
#3
شكرا اخي عاصم على المساعدة الان صار الكود يحفظ صحيح لما بتكون قيمة التاكست 3 فارغة بس لما اكتب التاريخ يطلعلي هذا الايرور
convertion failed when converting date/ or time from character string
الرد }}}
تم الشكر بواسطة:
#4
كود :
Public Sub InsertNewRowIn_CASE11(ByVal TextBox10 As Int32, ByVal TextBox20 As String, ByVal TextBox30 As String)
       Dim StrSQL As String
       If TextBox30 = Nothing Then
           StrSQL = "INSERT INTO Table_Product0 (Product_id , Product_name) VALUES ('" & TextBox10 & "','" & TextBox20 & "')"
       Else
           StrSQL = "INSERT INTO Table_Product0 (Product_id,Product_name,Product_date ) VALUES (" & TextBox10 & ",'" & TextBox20 & "','" & CDate(TextBox30) & "')"
       End If
       Dim cn As New SqlClient.SqlConnection("Server =(local);database=Test;integrated security=True")
       Dim StrTableName As String = "Table_Product0"
       If cn.State = ConnectionState.Closed Then cn.Open()
       Dim da As New SqlClient.SqlDataAdapter(StrSQL, cn)
       Dim dt As New DataSet
       dt.Clear()
       da.Fill(dt, StrTableName)
       MsgBox("تم الحفظ بنجاح")
       cn.Close()
   End Sub
الرد }}}
تم الشكر بواسطة: rnmr , rnmr , محمد خيري
#5
(13-10-18, 10:14 PM)محمد خيري كتب : السلام عليكم.معتز بانضمامي لكم اخواني.
هذا الكود يحفظ بقاعدة البيانات بصورة عادية لما بكتب التاريخ بالتاكست 3و لكن لما يكون تاكست التاريخ رقم 3 فارغا ينتج لي خطا
و انا احيانا لازم اخلي التاكست 3 فارغ .كيف اتخطي هذي المشكلة رحم الله والديكم

كود :
Conversion from string "" to type 'Date' is not valid.
الكود بالفورم 1

كود :
Imports System.Data
Imports System.Data.SqlClient
Public Class Form1
   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       InsertNewRowIn_CASE(TextBox1.Text, TextBox2.Text, TextBox3.Text)
End Sub
   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       Data_configuration()
  End Sub
   Public Sub InsertNewRowIn_CASE(ByVal TextBox1 As Int32, ByVal TextBox2 As String, ByVal TextBox3 As DateTime)
 
       Dim Cmd As New SqlCommand
       With Cmd
           .Connection = Conne_Dept
           .CommandType = CommandType.Text
           .CommandText = "INSERT INTO Table_Product (Product_id , Product_name, Product_date) VALUES ( @Product_id , @Product_name, @Product_date)"
           .Parameters.Clear()
           .Parameters.AddWithValue("@Product_id", SqlDbType.Int).Value = TextBox1
           .Parameters.AddWithValue("@Product_name", SqlDbType.NVarChar).Value = TextBox2
           .Parameters.AddWithValue("@Product_date", SqlDbType.DateTime).Value = TextBox3

       End With
       Try
           If Conne_Dept.State = 1 Then Conne_Dept.Close()
           Conne_Dept.Open()

           Cmd.ExecuteNonQuery()

           Conne_Dept.Close()
           Cmd = Nothing
           MsgBox("تم الحفظ بنجاح")

       Catch ex As Exception
           Conne_Dept.Close()
           MsgBox(Err.Description, MsgBoxStyle.Information)
       Finally
           If Conne_Dept.State = ConnectionState.Open Then Conne_Dept.Close()
       End Try
   End Sub
End Class


جرب هذا
كود :
Imports System.Data
Imports System.Data.SqlClient
Public Class Form1
   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       InsertNewRowIn_CASE(TextBox1.Text, TextBox2.Text, TextBox3.Text)
   End Sub
   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       Data_configuration()
   End Sub
   Public Sub InsertNewRowIn_CASE(ByVal TextBox1 As Int32, ByVal TextBox2 As String, ByVal TextBox3 As String)
 
       Dim sql As String = "INSERT INTO Table_Product (Product_id , Product_name, Product_date) VALUES ( @Product_id , @Product_name, @Product_date)"
       Dim Cmd As New SqlCommand(sql, Conne_Dept)
       With Cmd
           .Parameters.Clear()
           .Parameters.AddWithValue("@Product_id", TextBox1)
           .Parameters.AddWithValue("@Product_name", TextBox2)
           .Parameters.AddWithValue("@Product_date", If(IsDate(TextBox3), CDate(TextBox3), DBNull.Value))
       End With
       Try
           If Conne_Dept.State <> ConnectionState.Open Then Conne_Dept.Open()
           Cmd.ExecuteNonQuery()
           Cmd = Nothing
           MsgBox("تم الحفظ بنجاح")

       Catch ex As Exception
           Conne_Dept.Close()
           MsgBox(Err.Description, MsgBoxStyle.Information)
       Finally
           Conne_Dept.Close()
       End Try
   End Sub
End Class



(13-10-18, 11:52 PM)محمد خيري كتب : شكرا اخي عاصم على المساعدة الان صار الكود يحفظ صحيح لما بتكون قيمة التاكست 3 فارغة بس لما اكتب التاريخ يطلعلي هذا الايرور
convertion failed when converting date/ or time from character string


جرب هذا
كود :
TextBox3.Text = If(IsDBNull(row.Item("Product_date")), "", row.Item("Product_date").ToString("dd/MM/yyyy"))
الرد }}}
تم الشكر بواسطة: محمد خيري , asemshahen5
#6
بارك الله اخ عاصم على المساعدة و بارك الله فيك اخ rnmr الان الكود شغال و لله الحمد بقي بس مشكل اخير لما اجلب البيانات على الداتاغريد تظهر التاريخ بالتاكست زي  مثلا هكذا 20 -08-2018 00-00-0 يعني التاريخ و الوقت و لقيت مشكل بالتعديل كيف اخليه يظهر بالتاكست بس التاريخ لوحدو الذي حفظته بدون توقيت.بارك الله فيكم
الرد }}}
تم الشكر بواسطة:
#7
كود :
Private Sub DataGridView1_CellFormatting(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles DataGridView1.CellFormatting
If e.ColumnIndex = 3 Then
  Try
        e.Value = CDate(e.Value)
        e.CellStyle.Format = "yyyy/MM/dd"
   Catch ex As Exception
   End Try
End If
End Sub
الرد }}}
تم الشكر بواسطة: محمد خيري , rnmr
#8
جزاك الله جنات النعيم اخ عاصم الكود صحيح و شغال للتنسيق على الداتاغريد فيو لكن اخي انا كنت اقصد نفس هذا التنسيق على التاكست بكس رقم 3 بارك الله فيك
الرد }}}
تم الشكر بواسطة:
#9
(14-10-18, 09:50 PM)rnmr كتب :
(14-10-18, 12:35 PM)محمد خيري كتب : بارك الله اخ عاصم على المساعدة و بارك الله فيك اخ rnmr الان الكود شغال و لله الحمد بقي بس مشكل اخير لما اجلب البيانات على الداتاغريد تظهر التاريخ بالتاكست زي  مثلا هكذا 20 -08-2018 00-00-0 يعني التاريخ و الوقت و لقيت مشكل بالتعديل كيف اخليه يظهر بالتاكست بس التاريخ لوحدو الذي حفظته بدون توقيت.بارك الله فيكم


جرب هذا


 إذا كنت أنشأت الأعمدة أثناء التصميم
من خصائص العمود الخاصية DefaultCellStyle ومنه الخاصية Format تكتب dd/MM/yyyy


أو بطريقة الكود مع تحديد رقم العمود

كود :
Me.DataGridView1.Columns(3).DefaultCellStyle.Format = "dd/MM/yyyy"
بارك الله فيك اخي rnmr لكن اقصد تنسيق التاريخ بالتاكست بكس 3 بحيث ينعرض التاريخ فقط بدون توقيت
الرد }}}
تم الشكر بواسطة: asemshahen5
#10
كود :
Private Sub DataGridView2_Click(sender As Object, e As EventArgs) Handles DataGridView2.Click
    If DataGridView2.CurrentRow.Cells(3).Value.ToString = "" Then
         TextBox3.Text = ""
    Else
         TextBox3.Text = Format(DataGridView2.CurrentRow.Cells(3).Value, "yyyy,MM,dd")
    End If
End Sub
الرد }}}


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [VB.NET] ظهور التاريخ غير مرتب بالأقدم في datagridview مبرمج صغير 1 4 304 26-01-24, 03:41 PM
آخر رد: atefkhalf2004
  [VB.NET] التاريخ في أداة أبو سامر لطباعة DataGridView مبرمج صغير 1 17 629 26-01-24, 01:52 AM
آخر رد: مبرمج صغير 1
  [VB.NET] مشكلة التاريخ في الداتا قريد فيو مبرمج صغير 1 6 399 24-01-24, 10:12 PM
آخر رد: annagui
  [VB.NET] تحويل التاريخ بين أداتين تايم بيكر في نفس الفورم محمد العموري 1 271 29-12-23, 10:44 PM
آخر رد: Kamil
  التاريخ الهجرى mmaalmesry 9 1,075 07-12-23, 01:32 PM
آخر رد: kebboud
Heart [C#.NET] حول خطأ في فرز عامود التاريخ عندما تكون إحدى الخانات فارغة بلال بلال 3 338 16-11-23, 12:02 AM
آخر رد: بلال بلال
  التحكم فى عرض طريقة التاريخ فى الاداة datetimepicker Ahmed.vb 3 508 08-11-23, 01:27 AM
آخر رد: الحزين اليماني
  طريقة جلب صف من قاعدة البيانات بشرط العمود ٤ لا يساوي فارغ Adel27213 2 424 07-11-23, 05:02 AM
آخر رد: Adel27213
  مطلوب كود جمع التاريخ Ahmed.vb 3 444 22-10-23, 08:32 AM
آخر رد: Ahmed5
  تحويل التاريخ في الداتاقريدفيو إلى أيام عربية صالح عبدالله 2 318 08-10-23, 12:17 AM
آخر رد: صالح عبدالله

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


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