Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,028

HOME > .NET Framework > Forum > ถามเรื่อง Datetime กับ Error สวัสดีค่ะ คือหนู ต้องการใส่วันเวลาปัจจุบัน ลงฐานข้อมูล Ms Sql Server



 

ถามเรื่อง Datetime กับ Error สวัสดีค่ะ คือหนู ต้องการใส่วันเวลาปัจจุบัน ลงฐานข้อมูล Ms Sql Server

 



Topic : 039060



โพสกระทู้ ( 24 )
บทความ ( 0 )



สถานะออฟไลน์




สวัสดีค่ะ คือหนู ต้องการใส่วันเวลาปัจจุบัน ลงฐานข้อมูล ms sql server
Code (VB.NET)
 Dim dtNow As DateTime = DateTime.Now


strSQL = "INSERT INTO CallEmerge (Username,BloodGroup,Quantity,Urgency,LastModify) " & " VALUES " & " ('" & Session("User_session1") & "','" & Me.DropDownList1.Text & "','" & Me.TextBox2.Text & "','" & myDate & "','" & dtNow & "')"

มัน error แบบนี้ค่ะ
Record can not insert Error (The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value. The statement has been terminated.)

แต่พอได้ทดลองเปลี่ยน ใน ฐานข้อมูลจาก Datetime เป็น varchar(50) แล้วลองเขียนโค๊ดดังนี้
Code (VB.NET)
Dim lastmodify As String
 Dim dtNow As DateTime = DateTime.Now
 lastmodify = dtNow.ToString


strSQL = "INSERT INTO CallEmerge (Username,BloodGroup,Quantity,Urgency,LastModify) " & " VALUES " & " ('" & Session("User_session1") & "','" & Me.DropDownList1.Text & "','" & Me.TextBox2.Text & "','" & myDate & "','" & lastmodify & "')"
ผลออกมาคือ ใส่ข้อมูลลงฐานข้อมูลได้ค่ะ

*** แต่ที่หนูต้องการ คือให้ฐานข้อมูล เป็น datetime เพื่อง่ายต่อการใช้ต่ออ่ะค่ะ หนูจะแก้ไขอย่างไรดีคะ



Tag : - - - -







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2010-02-16 15:47:34 By : ladyjupz View : 5936 Reply : 6
 

 

No. 1

Guest


คุณก็กำหนด data type ให้เป็น datetime เหมือนเดิม แล้วลองไปเช็คที่เครื่องคุณว่า format date ตรงกันอ่ะป่าว






Date : 2010-02-16 15:57:29 By : ดาดา
 


 

No. 2



โพสกระทู้ ( 373 )
บทความ ( 0 )



สถานะออฟไลน์


strSQL = "INSERT INTO CallEmerge (Username,BloodGroup,Quantity,Urgency,LastModify) " & " VALUES " & " ('" & Session("User_session1") & "','" & Me.DropDownList1.Text & "','" & Me.TextBox2.Text & "','" & myDate & "','" & dtNow & "')"

dtNow คุณ datatype เป็นอะไรครับ ?

LastModify คุณ field datatype เป็นอะไรครับ ?

จาก error ที่แสดงมา

LasModify = datetime datatype
dtNow คุณ น่าจะเป็น datetime แต่คุณใส่ ' ให้มัน มันเลยมองเป็น char

strSQL = "INSERT INTO CallEmerge (Username,BloodGroup,Quantity,Urgency,LastModify) " & " VALUES " & " ('" & Session("User_session1") & "','" & Me.DropDownList1.Text & "','" & Me.TextBox2.Text & "','" & myDate & "'," & dtNow & ")"

ลองดูใหม่
Date : 2010-02-16 16:45:41 By : numenoy
 

 

No. 3



โพสกระทู้ ( 24 )
บทความ ( 0 )



สถานะออฟไลน์


ขอบคุณทุกท่านมากเลยนะคะ ที่ให้คำแนะนำ หลังจากที่ได้ ทดลองตามคุณ numenoy แล้วได้ผลแบบนี้อ่ะค่ะ

มันไม่ขึ้น อันนี้แล้วค่ะ
Record can not insert Error (The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value. The statement has been terminated.)

แต่มันไปขึ้นอันนี้แทน
Record can not insert Error (Incorrect syntax near '20'.)

ซึ่งโค๊ดที่เขียนมาไม่ทราบว่ามันผิดยังไง พยายามมองรอบด้านแล้วงงๆ หาไม่เจอ ช่วยหนูหน่อยค่ะ ขอบคุณล่วงหน้านะคะ^^"
Code (VB.NET)
<%@ Page Language="VB" ContentType="text/html" ResponseEncoding="utf-8" %>
<%@ Import Namespace="System.Data"%> 
<%@ Import Namespace="System.Data.SqlClient"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ Import Namespace="System.IO" %>
<script runat="server">
    Dim objConn As New SqlConnection
    Dim objCmd As New SqlCommand
    Dim intNumRows As Integer
    Dim strConnString, strSQL As String
    
    Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
      
   
    End Sub
	
       
    Sub btnsubmit_Click(ByVal sender As Object, ByVal e As EventArgs)
        
        strConnString = "Server=localhost;UID=sa;PASSWORD=12345678;database=blooddb;Max Pool Size=400;Connect Timeout=600;"
        objConn.ConnectionString = strConnString
        objConn.Open()
                
        Dim dtNow As DateTime = DateTime.Now
               
        Dim year1 As String = DropDownList5.Text
        Dim Month1 As String = DropDownList4.Text
        Dim days As String = DropDownList3.Text
        
        If DropDownList4.Text = "January" Then
            Month1 = "01"
        ElseIf DropDownList4.Text = "Febuary" Then
            Month1 = "02"
        ElseIf DropDownList4.Text = "March" Then
            Month1 = "03"
        ElseIf DropDownList4.Text = "April" Then
            Month1 = "04"
        ElseIf DropDownList4.Text = "May" Then
            Month1 = "05"
        ElseIf DropDownList4.Text = "June" Then
            Month1 = "06"
        ElseIf DropDownList4.Text = "July" Then
            Month1 = "07"
        ElseIf DropDownList4.Text = "August" Then
            Month1 = "08"
        ElseIf DropDownList4.Text = "September" Then
            Month1 = "09"
        ElseIf DropDownList4.Text = "October" Then
            Month1 = "10"
        ElseIf DropDownList4.Text = "November" Then
            Month1 = "11"
        ElseIf DropDownList4.Text = "December" Then
            Month1 = "12"
        End If
        
        Dim y As Integer = Convert.ToInt32(year1) - 543
 
		Dim tranDate As String = y.ToString() + "-" + Month1 + "-" + days
        
        Dim myDate As DateTime
        myDate = Format(DateTime.Now, tranDate)
		
   		        
        '*** DataTable ***'
        Dim dtAdapter As SqlDataAdapter
        Dim dt As New DataTable
        strSQL = "SELECT Max(LastModify) FROM CallEmerge WHERE BloodGroup = '" & Me.DropDownList1.Text & "' And Username ='" & Session("User_session1") & "' "
        dtAdapter = New SqlDataAdapter(strSQL, objConn)
        dtAdapter.Fill(dt)
        
        Dim intNumRows As Integer
            
        strSQL = "SELECT COUNT(*) FROM callemerge WHERE BloodGroup = '" & Me.DropDownList1.Text & "' And Username='" & Session("User_session1") & "' "
        objCmd = New SqlCommand(strSQL, objConn)
        intNumRows = objCmd.ExecuteScalar()
       
        If intNumRows > 0 Then
            If IsNumeric(TextBox2.Text) = True Then
                If TextBox2.Text <> "" Then
                    strSQL = " UPDATE CallEmerge SET Username ='" & Session("User_session1") & "',BloodGroup = '" & Me.DropDownList1.Text & "',Quantity = '" & Me.TextBox2.Text & "',Urgency = " & myDate & ",Lastmodify = " & dtNow & ""
				                
                ElseIf TextBox2.Text = "" Then
                    Label14.Text = "please insert data"
                End If
                
            Else
                Label14.Text = "Invalid data.This must be number."
                
            End If
        Else
            If IsNumeric(TextBox2.Text) = True Then
                If TextBox2.Text <> "" Then
                    strSQL = "INSERT INTO CallEmerge (Username,BloodGroup,Quantity,Urgency,LastModify)  " & " VALUES " & " ('" & Session("User_session1") & "','" & Me.DropDownList1.Text & "','" & Me.TextBox2.Text & "'," & myDate & "," & dtNow & ")"
      
                ElseIf TextBox2.Text = "" Then
                    Label14.Text = "please insert data"
                End If
            Else
                Label14.Text = "Invalid data.This must be number."
                
            End If
            
        End If
        
            
            
        With objCmd
            .Connection = objConn
            .CommandText = strSQL
            .CommandType = CommandType.Text
        End With

        Try
            objCmd.ExecuteNonQuery()
            Label9.Text = ""
            Label9.Text = "Record Insert"
			
            Label9.Visible = True
        Catch ex As Exception
            Label9.Visible = True
            Label9.Text = "Record can not insert Error (" & ex.Message & ")"
        End Try

        objConn.Close()
        objConn = Nothing
       
    End Sub
    Sub btnLogOut_Click(ByVal sender As Object, ByVal e As EventArgs)
        Session.Clear()
        Session("Login") = "Off"
        Response.Redirect("http://localhost/home/home.aspx")
    End Sub
    Sub btnback_Click(ByVal sender As Object, ByVal e As EventArgs)
     
        Response.Redirect("http://localhost/home/menu.aspx")
    End Sub

</script>


Date : 2010-02-16 20:18:27 By : ladyjupz
 


 

No. 4



โพสกระทู้ ( 373 )
บทความ ( 0 )



สถานะออฟไลน์


strSQL = "INSERT INTO CallEmerge (Username,BloodGroup,Quantity,Urgency,LastModify) " & " VALUES " & " ('" & Session("User_session1") & "','" & Me.DropDownList1.Text & "','" & Me.TextBox2.Text & "'," & myDate & "," & dtNow & ")"

การเขียน full command query code แบบนี้ ผมไม่แนะนำให้ใช้เลย ควรใช้ command parameter ดีกว่า บทความมีเยอะแยะเลยการใช้ parameter

myDate, dtNow เป็น datetime datatype มันใส่เข้าไปไม่ได้ เพราะมันไม่ใช้ string ถ้าคุณจะเขียนแบบนี้ คุณต้องแปลง myDate, dtNow เป็น string ก่อน

strSQL = "INSERT INTO CallEmerge (Username,BloodGroup,Quantity,Urgency,LastModify) " & " VALUES " & " ('" & Session("User_session1") & "','" & Me.DropDownList1.Text & "','" & Me.TextBox2.Text & "','" & myDate.ToString("dd-MM-yyyy") & "','" & dtNow.ToString("dd-MM-yyyy") & "')"

อันนี้ที่ใส่ ' ได้ เพราะ ถ้า string รูปแบบ datetime ที่ถูกต้อง SQL จะ convert datatype ให้เองอัตโนมัติ
Date : 2010-02-17 10:21:49 By : numenoy
 


 

No. 5



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



สถานะออฟไลน์


จัดให้ใหม่นะคะ

Code (VB.NET)
        

        '****************************************************************
        Dim intNumRows As Integer
        dim myCMDStr as System.Text.StringBuilder = New System.Text.StringBuilder() 

        'Temporary var to keep value 
        dim tempUserName As String =  Convert.ToString(Session("User_session1")) 'Beware session expire !!
        dim tempBloodGroup As String = Me.DropDownList1.Text.Trim ()

        'จำนวนไม่แน่ใจว่าจะเป็น int หรือ float นะคะ
        '   ถ้าเป็น double comment dim int ใช้ข้างล่างแทนค่ะ
        '   dim tempQuantity as Double =  System.Convert.ToDouble( Me.TextBox2.Text.Trim())
        dim tempQuantity As int = System.Convert.ToInt32( Me.TextBox2.Text.Trim())
        'อีกอย่านึงคือ เพื่อความแน่ใจว่า ค่าที่ได้จาก TextBox จะเป็น Numeric 
        'ควร Check ด้วย RangeValidator นะคะ
        
        dim tempUrgencyDate AS DateTime = myDate 
        dim tempNow As DateTime = System.DateTime.Now

        '****************************************************************
        

        myCMDStr.Clear()
        myCMDStr.AppendLine(" SELECT COUNT(*) ")
        myCMDStr.AppendLine(" FROM callemerge  ")
        myCMDStr.AppendLine(" WHERE ( BloodGroup=@Var_BloodGroup) ")
        myCMDStr.AppendLine("     And (Username=@Var_Username) ")


        strSQL = myCMDStr.ToString()

        objCmd = New SqlCommand(strSQL, objConn)

        objCmd.Parameters.Clear()
        objCmd.Parameters.AddWithValue("@Var_Username" ,tempUserName )
        objCmd.Parameters.AddWithValue("@Var_BloodGroup" ,tempBloodGroup  )
            
        'strSQL = "SELECT COUNT(*) FROM callemerge WHERE BloodGroup = '" & Me.DropDownList1.Text & "' And Username='" & Session("User_session1") & "' "
        
        intNumRows = objCmd.ExecuteScalar()

       
        If intNumRows > 0 Then
            If IsNumeric(TextBox2.Text) = True Then
                If TextBox2.Text <> "" Then

                    'ลองปรับดูนะคะ สำหรับ UPDATE
                    strSQL = " UPDATE CallEmerge SET Username ='" & Session("User_session1") & "',BloodGroup = '" & Me.DropDownList1.Text & "',Quantity = '" & Me.TextBox2.Text & "',Urgency = " & myDate & ",Lastmodify = " & dtNow & ""
				                
                ElseIf TextBox2.Text = "" Then
                    Label14.Text = "please insert data"
                End If
                
            Else
                Label14.Text = "Invalid data.This must be number."
                
            End If
        Else
            If IsNumeric(TextBox2.Text) = True Then
                If TextBox2.Text <> "" Then
                    myCMDStr.Clear()
                    myCMDStr.AppendLine(" INSERT INTO CallEmerge ")
                    myCMDStr.AppendLine("   (Username,BloodGroup,Quantity,Urgency,LastModify) ")
                    myCMDStr.AppendLine(" VALUES ")
                    myCMDStr.AppendLine("   ( @Var_Username ,@Var_BloodGroup")
                    myCMDStr.AppendLine("    ,@Var_Quantity, @Var_Urgency, @Var_LastModify)") 

                    objCmd.Parameters.Clear()
                    objCmd.Parameters.AddWithValue("@Var_Username" ,tempUserName )
                    objCmd.Parameters.AddWithValue("@Var_BloodGroup" ,tempBloodGroup  )
                    objCmd.Parameters.AddWithValue("@Var_Quantity", tempQuantity )
                    objCmd.Parameters.AddWithValue("@Var_Urgency" ,tempUrgencyDate )
                    objCmd.Parameters.AddWithValue("@Var_LastModify" ,tempNow )
                    
                    strSQL  = myCMDStr.ToString()

                    'strSQL = "INSERT INTO CallEmerge (Username,BloodGroup,Quantity,Urgency,LastModify)  " & " VALUES " & " ('" & Session("User_session1") & "','" & Me.DropDownList1.Text & "','" & Me.TextBox2.Text & "'," & myDate & "," & dtNow & ")"
      
                ElseIf TextBox2.Text = "" Then
                    Label14.Text = "please insert data"
                End If
            Else
                Label14.Text = "Invalid data.This must be number."
                
            End If
            
        End If
        
            
            
        With objCmd
            .Connection = objConn
            .CommandText = strSQL
            .CommandType = CommandType.Text
        End With

        Try
            objCmd.ExecuteNonQuery()
            Label9.Text = ""
            Label9.Text = "Record Insert"
			
            Label9.Visible = True
        Catch ex As Exception
            Label9.Visible = True
            Label9.Text = "Record can not insert Error (" & ex.Message & ")"
        End Try

        objConn.Close()
        objConn = Nothing



'My Comment
'  1. ชื่อ Control น่าจะตั้งให้สื่อด้วยค่ะ อย่าง TextBox2 เก็บ Quantity >> TextBoxQuantity 
'     เวลาเขียนหรือแก้ไขจะทำให้เข้าใจง่ายมากขึ้น จะได้มีสมาธิดีขึ้น
'  2. ถ้าจะใช้ Command Parameter ดูเหมือน Program จะยาวขึ้นแต่จะสะดวกและผิดได้น้อยลงค่ะ
'  3. อย่าเขียน Code ยาวติดกันนัก แบ่งเป็นช่วงๆ เพื่อให้ง่ายแก่การพิจารณา เช่นเดียวกับข้อ 1. ค่ะ



Date : 2010-02-17 14:33:10 By : blurEye
 


 

No. 6



โพสกระทู้ ( 24 )
บทความ ( 0 )



สถานะออฟไลน์


^___^ ขอบคุณม๊ากกกๆๆ สำหรับคำแนะนำนะคะจากทุกท่านๆ เดี๋ยวจะลองเอามาปรับดูนะคะ
Date : 2010-02-17 17:32:54 By : ladyjupz
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ถามเรื่อง Datetime กับ Error สวัสดีค่ะ คือหนู ต้องการใส่วันเวลาปัจจุบัน ลงฐานข้อมูล Ms Sql Server
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 00
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่