تقييم الموضوع :
  • 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] سحب التاريخ والوقت من السيرفر khairallah 5 85 أمس, 04:04 PM
آخر رد: elgokr
  اختلاف صيغة التاريخ بين وندوز اكس بي ووندوز 7 makky 1 54 10-06-19, 04:42 PM
آخر رد: Rabeea Qbaha
  مشكلة في اضافة التاريخ الي قاعدة بيانات اكسس makky 8 156 05-06-19, 03:40 AM
آخر رد: heshamelkomy71
  مشكلة في اضافة التاريخ الي قاعدة بيانات اكسس makky 11 318 04-06-19, 03:12 PM
آخر رد: elgokr
  [ تمّ الحل ] : تنسيق التاريخ بقاعدة البيانات : الأكسس عبد العزيز البسكري 16 906 03-06-19, 11:56 AM
آخر رد: سعود
  مشكلة في التاريخ مع التقرير nooralcown 1 67 30-05-19, 01:52 PM
آخر رد: اسامه الهرماوي
  [VB.NET] مشگلة التاريخ الهجري مع reporter viewer اسامه الهرماوي 1 93 24-04-19, 12:45 AM
آخر رد: اسامه الهرماوي
  مشكلة حفظ التاريخ samira20 17 517 20-04-19, 06:17 AM
آخر رد: elgokr
  [سؤال] كود عرض التاريخ slackgate 2 2,957 18-04-19, 08:14 PM
آخر رد: اسامه الهرماوي
  [ تم الحل ] تعديل على تنسيق التاريخ بالتاكست بكس محمد خيري 9 213 11-04-19, 01:55 PM
آخر رد: elgokr

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


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