تقييم الموضوع :
  • 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
الرد


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  كيفية عرض التاريخ الهجري المتألق9 14 322 18-09-18, 01:38 PM
آخر رد: المتألق9
  كتابة التاريخ بالحروف العيدروس 4 165 16-09-18, 02:55 AM
آخر رد: 911
  كود تغيير التاريخ vb آسير بلآ قيود 1 133 08-09-18, 08:07 AM
آخر رد: elgokr
  مشكلة في تسجيل التاريخ بأداة DateTimePicker Hazem1 15 503 30-08-18, 10:32 PM
آخر رد: elgokr
  [سؤال] عرض التاريخ في TextBox تركي قرمزلي 16 10,424 17-08-18, 11:40 PM
آخر رد: elgokr
  مساعدة بخصوص التاريخ تلقائيا ahmedfa71 3 195 07-06-18, 03:53 PM
آخر رد: elgokr
  إذا تغير التاريخ ؟؟ hichem1 7 197 07-06-18, 04:24 AM
آخر رد: elgokr
  إذا كان ال textbox فارغ أريد رسالة خطئء hichem1 8 289 06-06-18, 06:28 PM
آخر رد: hichem1
  التعامل مع التاريخ الهجري في اظهار اسم اليوم aftfm 5 240 03-06-18, 06:59 AM
آخر رد: DOX.1
  [VB.NET] التاريخ الهجري مع الداتا جريد فيو فراس الغزي 9 261 03-05-18, 03:58 AM
آخر رد: عبدالله الدوسري

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


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