 |
|
|
 |
 |
|

เดาอีกแล้วนะคะ ^ ^ ตามข้อมูลที่มี
น่าจะเกิดจากการจัดเก็บข้อมูลในฟิลด์หนึ่งฟิลด์ใดเป็นแบบ string หรือ text หรือ varchar
แต่จัดเก็บข้อมูลวันเดือนปีลงไปเช่น '12 JAN 2010' แล้ว QUERY ผ่าน ODBC
แต่มีการ CONVERT เป็น DATETIME ที่ปลายทางจะด้วยตั้งใจหรือไม่ตั้งใจก้อตามแต่ค่ะ
ERROR น่าจะเกิดจาก รูปแบบวันที่ผิด หรือ เป็น NULL และหรือ BUFFER ที่ใช้พักข้อมูลเต็ม
นี่เดาล้วนๆค่ะ ความมั่นใจ 40% ^ ^
จะเดาได้มากกว่านี้ถ้ามีข้อมูลมากกว่านี้ค่ะ
|
 |
 |
 |
 |
Date :
2010-03-02 16:07:13 |
By :
blurEye |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แต่ว่า ถ้าข้อมูลน้อยๆ มันสามารถทำงานได้นะค่ะ
|
 |
 |
 |
 |
Date :
2010-03-02 16:41:09 |
By :
Angel_baba |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ผมว่าที่มันคอนเวิร์ทที่ปลายทางอาจเป็นเพราะว่า ฟอร์แมทวันเวลาที่ .net กับ Database ตั้งไว้ต่างกันงั้นลองแบบนี้มั้ยครับ ตอนคุณจะเก็บลงดาต้าเบสคอนเวิร์ทก่อนแบบนี้
Code (C#)
SqlDataSource.InsertParameters.Add("DateInput", DateTime.Now.ToLongDateString());
หรือ ToShortDateString()
หรือถ้าจะไปแก้ที่ SQL ก็ให้ใส่ SET DATEFORMAT dmy ลงไปก่อน แบบนี้
Code (C#)
"SET DATEFORMAT dmy; INSERT INTO ......."
|
 |
 |
 |
 |
Date :
2010-03-02 17:03:43 |
By :
kenessar |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ลองดู ผมก็เดาเหมือนคุณ PAYUON แหละคร้าบ 
|
 |
 |
 |
 |
Date :
2010-03-02 17:06:05 |
By :
kenessar |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
พอดีใช้ vb convert ไว้แบบนี้ค่ะ
sql = "SELECT No,Name,Address,Tel,Email,BirthDay FROM [Employee Register]"
Dim adapter = New OdbcDataAdapter(sql, ODconn)
Dim DView As DataView
Dim myDataSet As New DataSet("Emp")
adapter.Fill(myDataSet, "Emp")
DView = myDataSet.Tables("Emp").DefaultView
Dim drowview As DataRowView
For Each drowview In DView
Dim No = drowview.Item("No")
Dim Name = drowview.Item("Name")
Dim Address = drowview.Item("Address")
Dim Tel = drowview.Item("Tel")
Dim Email = drowview.Item("Email")
Dim BirthDay = drowview.Item("BirthDay")
sql2 = "Insert Into Employee (No,Name,Address,Tel,Email,BirthDay)values(@No,@Name,@Address,@Tel,@Email,Convert(DateTime,@BirthDay, 103)) "
cmd = New SqlCommand(sql2, Conn)
cmd.Parameters.Add("@No", SqlDbType.NVarChar).Value = No
cmd.Parameters.Add("@Name", SqlDbType.NVarChar).Value = Name
cmd.Parameters.Add("@Address", SqlDbType.NVarChar).Value = Address
cmd.Parameters.Add("@Tel", SqlDbType.NVarChar).Value = Tel
cmd.Parameters.Add("@Email", SqlDbType.NVarChar).Value = Email
cmd.Parameters.Add("@BirthDay", SqlDbType.NVarChar).Value = BirthDay
Conn.Open()
cmd.ExecuteNonQuery()
Conn.Close()
Next
|
 |
 |
 |
 |
Date :
2010-03-02 17:32:02 |
By :
Angel_baba |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ในเมื่อ field เท่ากันแบบนี้ ไม่ต้องใช้ loop insert ค่ะ
คำสั่งเดียวจบเลย
sql = " INSERT INTO [Employee] (No,Name,Address,Tel,Email,BirthDay) "
sql &= " SELECT No,Name,Address,Tel,Email,BirthDay FROM [Employee Register] "
หมายเหตุ ทั้ง data type และ length ต้องเท่ากันด้วยค่ะ
|
 |
 |
 |
 |
Date :
2010-03-02 18:23:31 |
By :
blurEye |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ทำแบบที่คุณ blurEye บอกไม่ได้ค่ะ เพราะมันต้องดึงจาก odbc แล้วเก็บลง mssql server ค่ะ
ตอนนี้แก้ไขได้แล้วค่ะ
ขอบคุณค่ะ
|
 |
 |
 |
 |
Date :
2010-03-03 17:48:39 |
By :
Angel_baba |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|