منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
حفظ بحقل التاريخ اذا كان فارغ - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : حفظ بحقل التاريخ اذا كان فارغ (/showthread.php?tid=26924)

الصفحات: 1 2


حفظ بحقل التاريخ اذا كان فارغ - محمد خيري - 13-10-18

السلام عليكم.معتز بانضمامي لكم اخواني.
هذا الكود يحفظ بقاعدة البيانات بصورة عادية لما بكتب التاريخ بالتاكست 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



RE: حفظ بحقل التاريخ اذا كان فارغ - asemshahen5 - 13-10-18

غير الى :

كود :
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



RE: حفظ بحقل التاريخ اذا كان فارغ - محمد خيري - 13-10-18

شكرا اخي عاصم على المساعدة الان صار الكود يحفظ صحيح لما بتكون قيمة التاكست 3 فارغة بس لما اكتب التاريخ يطلعلي هذا الايرور
convertion failed when converting date/ or time from character string


RE: حفظ بحقل التاريخ اذا كان فارغ - asemshahen5 - 14-10-18

كود :
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



RE: حفظ بحقل التاريخ اذا كان فارغ - rnmr - 14-10-18

(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"))



RE: حفظ بحقل التاريخ اذا كان فارغ - محمد خيري - 14-10-18

بارك الله اخ عاصم على المساعدة و بارك الله فيك اخ rnmr الان الكود شغال و لله الحمد بقي بس مشكل اخير لما اجلب البيانات على الداتاغريد تظهر التاريخ بالتاكست زي  مثلا هكذا 20 -08-2018 00-00-0 يعني التاريخ و الوقت و لقيت مشكل بالتعديل كيف اخليه يظهر بالتاكست بس التاريخ لوحدو الذي حفظته بدون توقيت.بارك الله فيكم


RE: حفظ بحقل التاريخ اذا كان فارغ - asemshahen5 - 14-10-18

كود :
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



RE: حفظ بحقل التاريخ اذا كان فارغ - محمد خيري - 14-10-18

جزاك الله جنات النعيم اخ عاصم الكود صحيح و شغال للتنسيق على الداتاغريد فيو لكن اخي انا كنت اقصد نفس هذا التنسيق على التاكست بكس رقم 3 بارك الله فيك


RE: حفظ بحقل التاريخ اذا كان فارغ - محمد خيري - 14-10-18

(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 بحيث ينعرض التاريخ فقط بدون توقيت


RE: حفظ بحقل التاريخ اذا كان فارغ - asemshahen5 - 15-10-18

كود :
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