|
|
|
syntax error ตรง คำสั่ง query แต่หาไม่เจอว่าผิดตรวไหนแต่สงสัยว่าเป็น insert statement |
|
|
|
|
|
|
|
ลองดูที่ตัวแปร cmdStr ครับ ว่ามันได้ผลลัพธ์เป็นไร
|
|
|
|
|
Date :
2018-09-20 13:37:20 |
By :
Thaidevelopment.NET |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองฝึกใช้โหมด DEbug ครับ หาใน google ก็ได้ครับ แล้วทุกอย่างจะง่ายขึ้นเยอะ
|
|
|
|
|
Date :
2018-09-20 13:50:29 |
By :
Thaidevelopment.NET |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผิดที่ข้อมูลที่ใส่เข้าไปครับ
ลองแบบง่าย ๆ ก็คืออย่าใส่ตัว ' เข้าไปใน datagrid ครับ
ใส่แค่ตัวอักษรก็พอ
พวกสัญลักษณ์แปลก ๆ อย่าเพิ่งใส่
แล้วลองกด save ดูอีกทีครับ
|
|
|
|
|
Date :
2018-09-20 13:53:59 |
By :
fonfire |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code ยังไม่ต้องแก้ครับ
ขอถามก่อนว่า ข้อมูลที่บันทึกเข้าไปเป็นข้อมูลจริงไหมครับ
หรือแค่พิมพ์มั่ว ๆ เข้าไปใน datagrid เพื่อลง save ดู
|
|
|
|
|
Date :
2018-09-20 14:21:47 |
By :
fonfire |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
งั้นลองแก้แบบนี้ดูก่อนแล้วกันครับ
จาก
'" + DataGridView1.Rows(0).Cells(0).Value + "'
ลอง replace ' ด้วย '' แทนดูครับ
'" + replace(DataGridView1.Rows(0).Cells(0).Value,"'","''" + "'
หรือเปลี่ยนไปเขียนแบบใช้ parameter แทนก็ได้ครับ
|
|
|
|
|
Date :
2018-09-20 14:40:29 |
By :
fonfire |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
หรือเปลี่ยนไปเขียนแบบใช้ parameter แทนก็ได้ครับ
http://www.tutorialspanel.com/insert-update-delete-example-c-vb-net-using-executenonquery-method/
|
|
|
|
|
Date :
2018-09-20 14:44:28 |
By :
fonfire |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตอบความคิดเห็นที่ : 9 เขียนโดย : fonfire เมื่อวันที่ 2018-09-20 14:44:28
รายละเอียดของการตอบ ::
พอดีข้อมูลที่ผมใส่าเข้าไปมันไม่ใช่จากการพิมพ์อะครับผม generate ขึ้นมา แบบนี้อะครับผมแคปโค้ดให้ดูน่าจะเข้าใจมากกว่า Code (VB.NET)
Imports System.Data
Imports System.Data.OleDb
Imports System
Imports System.Windows.Forms
Public Class Form1
Dim dateselected As Date
Dim i As Integer = 0
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim dateselected As Date = DateTimePicker1.Value
Dim dateselected2 As Date = DateTimePicker2.Value
Dim datetotal As Integer = dateselected2.Day - dateselected.Day
Dim timeFormat As String = "ddd"
If datetotal > 16 Then
MsgBox("ช่วงวันที่เลือกเกิน 16 วัน กรุณาเลือกวันให้ไม่เกิน 16 วัน")
ElseIf datetotal < 0 Then
MsgBox("ช่วงวันที่เลือกไม่ถูกต้อง")
Else
For i As Integer = 0 To datetotal * 3 + 2
DataGridView1.Columns.Add("column1", i)
If i <= datetotal Then
DataGridView1.Rows(0).Cells(i).Value = Format(dateselected.AddDays(i), "dd")
ElseIf i > datetotal And i <= datetotal * 2 + 1 Then
DataGridView1.Rows(0).Cells(i).Value = Format(dateselected2.AddDays(i - datetotal * 2 - 1), "ddd")
ElseIf i > datetotal * 2 - 2 Then
If dateselected2.AddDays(i - datetotal * 3 - 2).ToString(timeFormat) Like "Mon" Then
DataGridView1.Rows(0).Cells(i).Value = "we*Fvm"
ElseIf dateselected2.AddDays(i - datetotal * 3 - 2).ToString(timeFormat) Like "Tue" Then
DataGridView1.Rows(0).Cells(i).Value = "t*Fg"
ElseIf dateselected2.AddDays(i - datetotal * 3 - 2).ToString(timeFormat) Like "Wed" Then
DataGridView1.Rows(0).Cells(i).Value = "Ak'¨[l;"
ElseIf dateselected2.AddDays(i - datetotal * 3 - 2).ToString(timeFormat) Like "Thu" Then
DataGridView1.Rows(0).Cells(i).Value = "Mumoaw;"
ElseIf dateselected2.AddDays(i - datetotal * 3 - 2).ToString(timeFormat) Like "Fri" Then
DataGridView1.Rows(0).Cells(i).Value = "aomMum"
ElseIf dateselected2.AddDays(i - datetotal * 3 - 2).ToString(timeFormat) Like "Sat" Then
DataGridView1.Rows(0).Cells(i).Value = "pae"
ElseIf dateselected2.AddDays(i - datetotal * 3 - 2).ToString(timeFormat) Like "Sun" Then
DataGridView1.Rows(0).Cells(i).Value = " "
End If
End If
Next
End If
End Sub
Private Sub DateTimePicker2_ValueChanged(sender As Object, e As EventArgs) Handles DateTimePicker2.ValueChanged
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim conStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\meetingroom\Downloads\project\Datedata1.mdb"
Dim objcon = New OleDbConnection(conStr)
Dim dateselected As Date = DateTimePicker1.Value
Dim dateselected2 As Date = DateTimePicker2.Value
Dim datetotal As Integer = dateselected2.Day - dateselected.Day
Dim cmdStr As String = " INSERT INTO datedata(Field1,Field2,Field3,Field4,Field5,Field6,Field7,Field8,Field9,Field10
,Field11,Field12,Field13,Field14,Field15,Field16,Field17,Field18,Field19,Field20
,Field21,Field22,Field23,Field24,Field25,Field26,Field27,Field28,Field29,Field30
,Field31,Field32,Field33,Field34,Field35,Field36,Field37,Field38,Field39,Field40
,Field41,Field42,Field43,Field44,Field45,Field46,Field47,Field48) " +
"VALUES('" + DataGridView1.Rows(0).Cells(0).Value + "','" + DataGridView1.Rows(0).Cells(1).Value + "','" + DataGridView1.Rows(0).Cells(2).Value + "',
'" + DataGridView1.Rows(0).Cells(3).Value + "','" + DataGridView1.Rows(0).Cells(4).Value + "','" + DataGridView1.Rows(0).Cells(5).Value + "',
'" + DataGridView1.Rows(0).Cells(6).Value + "','" + DataGridView1.Rows(0).Cells(7).Value + "','" + DataGridView1.Rows(0).Cells(8).Value + "',
'" + DataGridView1.Rows(0).Cells(9).Value + "','" + DataGridView1.Rows(0).Cells(10).Value + "','" + DataGridView1.Rows(0).Cells(11).Value + "',
'" + DataGridView1.Rows(0).Cells(12).Value + "','" + DataGridView1.Rows(0).Cells(13).Value + "','" + DataGridView1.Rows(0).Cells(14).Value + "',
'" + DataGridView1.Rows(0).Cells(15).Value + "','" + DataGridView1.Rows(0).Cells(16).Value + "','" + DataGridView1.Rows(0).Cells(17).Value + "',
'" + DataGridView1.Rows(0).Cells(18).Value + "','" + DataGridView1.Rows(0).Cells(19).Value + "','" + DataGridView1.Rows(0).Cells(20).Value + "',
'" + DataGridView1.Rows(0).Cells(21).Value + "','" + DataGridView1.Rows(0).Cells(22).Value + "','" + DataGridView1.Rows(0).Cells(23).Value + "',
'" + DataGridView1.Rows(0).Cells(24).Value + "','" + DataGridView1.Rows(0).Cells(25).Value + "','" + DataGridView1.Rows(0).Cells(26).Value + "',
'" + DataGridView1.Rows(0).Cells(27).Value + "','" + DataGridView1.Rows(0).Cells(28).Value + "','" + DataGridView1.Rows(0).Cells(29).Value + "',
'" + DataGridView1.Rows(0).Cells(30).Value + "','" + DataGridView1.Rows(0).Cells(31).Value + "','" + DataGridView1.Rows(0).Cells(32).Value + "',
'" + DataGridView1.Rows(0).Cells(33).Value + "','" + DataGridView1.Rows(0).Cells(34).Value + "','" + DataGridView1.Rows(0).Cells(35).Value + "',
'" + DataGridView1.Rows(0).Cells(36).Value + "','" + DataGridView1.Rows(0).Cells(37).Value + "','" + DataGridView1.Rows(0).Cells(38).Value + "',
'" + DataGridView1.Rows(0).Cells(39).Value + "','" + DataGridView1.Rows(0).Cells(40).Value + "','" + DataGridView1.Rows(0).Cells(41).Value + "',
'" + DataGridView1.Rows(0).Cells(42).Value + "','" + DataGridView1.Rows(0).Cells(43).Value + "','" + DataGridView1.Rows(0).Cells(44).Value + "',
'" + DataGridView1.Rows(0).Cells(45).Value + "','" + DataGridView1.Rows(0).Cells(46).Value + "','" + DataGridView1.Rows(0).Cells(47).Value + "')"
Dim objcmd = New OleDbCommand(cmdStr, objcon)
Dim count As Integer = DataGridView1.RowCount * DataGridView1.ColumnCount
objcon.Open()
objcmd.ExecuteNonQuery()
objcon.Close()
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
End Sub
End Class
|
ประวัติการแก้ไข 2018-09-20 14:55:24
|
|
|
|
Date :
2018-09-20 14:53:09 |
By :
2057240200974209 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมไม่รู็ว่า Ak'¨[l; ตัวนี้คือไรนะครับ แต่ว่าน่าจะเกี่ยวกะตรงนี้แหละครับ ที่ทำให้ insert ไม่ผ่าน
|
|
|
|
|
Date :
2018-09-20 15:38:33 |
By :
Thaidevelopment.NET |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ปกติตัว ' จะเป็นตัวแบ่งคำสั่งครับ
ถ้ามันมีโผล่มา 1 ตัวจะทำให้คำสั่งมันเพี้ยนครับ
ถ้าแก้แบบง่าย ๆ ก็เปลี่ยนจาก ' เป็น '' (จาก 1 อันเป็น 2 อัน เวลามันเข้าไปใน db มันจะเหลือแค่อันเดียว)
ก็จะได้คำสั่งแบบนี้
DataGridView1.Rows(0).Cells(i).Value = "Ak''¨[l;"
หรือไปใช้แบบ parameter แทน
ก็จะแก้ไขปัญหาได้ดีกว่าครับ
|
|
|
|
|
Date :
2018-09-20 16:42:11 |
By :
fonfire |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เอา cmdStr ที่ได้มาดู ครับ ว่าเต็มๆมันๆเป็นยังไง
ปล. ดูที่ data type ของแต่ละคอลัมน์ด้วยนะครับ
|
|
|
|
|
Date :
2018-09-20 16:52:09 |
By :
lamaka.tor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ใช้ debug เป็นไหมครับ
มาร์ค ที่หน้าบันทัดที่ต้องการให้หยุดตามภาพ สั่ง start พอทำงานมาถีงจุดที่ต้องการ ก็จะหยุด
ดูตัวแปรที่ต้องการ ถ้าต้องการ copy ก็ให้ คลิกขวาที่ line ที่ต้องการ เลือก copy value จะเอาไปทดสอบอะไรที่ไหนก็ว่าไป
|
|
|
|
|
Date :
2018-09-20 19:24:58 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
สอบถาม อ่านดูเห็นบอกว่ามีภาษาพม่า หมายถีงเป็น multi language เหรอครับ
ได้กำหนด field type เป็นอะไรครับ
ถ้าเป็น nvarchar ต่อstring แบบนี้ ต้องมี N นำหน้าข้อมูลนะครับ เช่น N'ภาษาต่างๆ'
แนะนำให้ใช้ db tool ในการคิวรี่ครับ จะแก้ปัญหาเรื่อง unicode ได้เป็นอย่างดี
|
|
|
|
|
Date :
2018-09-20 19:35:33 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
คุณลองเปลี่ยน Ak'¨[l; ตัวนี้เป็นตัวอื่นดูครับ แล้วลอง ใหม่ เปลี่ยนเป็น AAA ก็ได้คับ
|
|
|
|
|
Date :
2018-09-21 10:12:25 |
By :
Thaidevelopment.NET |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
แสดงว่าได้แล้วครับ เกิดจากตัวนั้นแหละ ที่ insert ไม่ได้ ส่วนที่ Error ตอนนี้คือ Column กับ Value ไม่เท่ากันครับ
|
|
|
|
|
Date :
2018-09-21 10:19:57 |
By :
Thaidevelopment.NET |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองเอาตารางที่ insert มาดูหนน่อยคับ ว่าหน้าตาเป็นยังไง มีกี่ Field
|
|
|
|
|
Date :
2018-09-21 10:46:15 |
By :
Thaidevelopment.NET |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตอบความคิดเห็นที่ : 28 เขียนโดย : Thaidevelopment.NET เมื่อวันที่ 2018-09-21 10:46:15
รายละเอียดของการตอบ ::
Code (VB.NET)
Imports System.Data
Imports System.Data.OleDb
Imports System
Imports System.Windows.Forms
Public Class Form1
Dim dateselected As Date
Dim i As Integer = 0
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim dateselected As Date = DateTimePicker1.Value
Dim dateselected2 As Date = DateTimePicker2.Value
Dim datetotal As Integer = dateselected2.Day - dateselected.Day
Dim timeFormat As String = "ddd"
If datetotal > 16 Then
MsgBox("ช่วงวันที่เลือกเกิน 16 วัน กรุณาเลือกวันให้ไม่เกิน 16 วัน")
ElseIf datetotal < 0 Then
MsgBox("ช่วงวันที่เลือกไม่ถูกต้อง")
Else
For i As Integer = 0 To datetotal * 3 + 2
DataGridView1.Columns.Add("column1", i)
If i <= datetotal Then
DataGridView1.Rows(0).Cells(i).Value = Format(dateselected.AddDays(i), "dd")
ElseIf i > datetotal And i <= datetotal * 2 + 1 Then
DataGridView1.Rows(0).Cells(i).Value = Format(dateselected2.AddDays(i - datetotal * 2 - 1), "ddd")
ElseIf i > datetotal * 2 - 2 Then
If dateselected2.AddDays(i - datetotal * 3 - 2).ToString(timeFormat) Like "Mon" Then
DataGridView1.Rows(0).Cells(i).Value = "we*Fvm"
ElseIf dateselected2.AddDays(i - datetotal * 3 - 2).ToString(timeFormat) Like "Tue" Then
DataGridView1.Rows(0).Cells(i).Value = "t*Fg"
ElseIf dateselected2.AddDays(i - datetotal * 3 - 2).ToString(timeFormat) Like "Wed" Then
DataGridView1.Rows(0).Cells(i).Value = "aaa"
ElseIf dateselected2.AddDays(i - datetotal * 3 - 2).ToString(timeFormat) Like "Thu" Then
DataGridView1.Rows(0).Cells(i).Value = "Mumoaw;"
ElseIf dateselected2.AddDays(i - datetotal * 3 - 2).ToString(timeFormat) Like "Fri" Then
DataGridView1.Rows(0).Cells(i).Value = "aomMum"
ElseIf dateselected2.AddDays(i - datetotal * 3 - 2).ToString(timeFormat) Like "Sat" Then
DataGridView1.Rows(0).Cells(i).Value = "pae"
ElseIf dateselected2.AddDays(i - datetotal * 3 - 2).ToString(timeFormat) Like "Sun" Then
DataGridView1.Rows(0).Cells(i).Value = " "
End If
End If
Next
End If
End Sub
Private Sub DateTimePicker2_ValueChanged(sender As Object, e As EventArgs) Handles DateTimePicker2.ValueChanged
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim conStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\meetingroom\Downloads\project\Datedata1.mdb"
Dim objcon = New OleDbConnection(conStr)
Dim dateselected As Date = DateTimePicker1.Value
Dim dateselected2 As Date = DateTimePicker2.Value
Dim datetotal As Integer = dateselected2.Day - dateselected.Day
Dim cmdStr As String = " INSERT INTO datedata(Field1,Field2,Field3,Field4,Field5,Field6,Field7,Field8,Field9,Field10
,Field11,Field12,Field13,Field14,Field15,Field16,Field17,Field18,Field19,Field20
,Field21,Field22,Field23,Field24,Field25,Field26,Field27,Field28,Field29,Field30
,Field41,Field42,Field43,Field44,Field45,Field46,Field47,Field48) " +
"VALUES('" & DataGridView1.Rows(0).Cells(0).Value & "','" & DataGridView1.Rows(0).Cells(1).Value & "','" & DataGridView1.Rows(0).Cells(2).Value & "',
'" & DataGridView1.Rows(0).Cells(3).Value & "','" & DataGridView1.Rows(0).Cells(4).Value & "','" & DataGridView1.Rows(0).Cells(5).Value & "',
'" & DataGridView1.Rows(0).Cells(6).Value & "','" & DataGridView1.Rows(0).Cells(7).Value & "','" & DataGridView1.Rows(0).Cells(8).Value & "',
'" & DataGridView1.Rows(0).Cells(9).Value & "','" & DataGridView1.Rows(0).Cells(10).Value & "','" & DataGridView1.Rows(0).Cells(11).Value & "',
'" & DataGridView1.Rows(0).Cells(12).Value & "','" & DataGridView1.Rows(0).Cells(13).Value & "','" & DataGridView1.Rows(0).Cells(14).Value & "',
'" & DataGridView1.Rows(0).Cells(15).Value & "','" & DataGridView1.Rows(0).Cells(16).Value & "','" & DataGridView1.Rows(0).Cells(17).Value & "',
'" & DataGridView1.Rows(0).Cells(18).Value & "','" & DataGridView1.Rows(0).Cells(19).Value & "','" & DataGridView1.Rows(0).Cells(20).Value & "',
'" & DataGridView1.Rows(0).Cells(21).Value & "','" & DataGridView1.Rows(0).Cells(22).Value & "','" & DataGridView1.Rows(0).Cells(23).Value & "',
'" & DataGridView1.Rows(0).Cells(24).Value & "','" & DataGridView1.Rows(0).Cells(25).Value & "','" & DataGridView1.Rows(0).Cells(26).Value & "',
'" & DataGridView1.Rows(0).Cells(27).Value & "','" & DataGridView1.Rows(0).Cells(28).Value & "','" & DataGridView1.Rows(0).Cells(29).Value & "',
'" & DataGridView1.Rows(0).Cells(30).Value & "','" & DataGridView1.Rows(0).Cells(31).Value & "','" & DataGridView1.Rows(0).Cells(32).Value & "',
'" & DataGridView1.Rows(0).Cells(33).Value & "','" & DataGridView1.Rows(0).Cells(34).Value & "','" & DataGridView1.Rows(0).Cells(35).Value & "',
'" & DataGridView1.Rows(0).Cells(36).Value & "','" & DataGridView1.Rows(0).Cells(37).Value & "','" & DataGridView1.Rows(0).Cells(38).Value & "',
'" & DataGridView1.Rows(0).Cells(39).Value & "','" & DataGridView1.Rows(0).Cells(40).Value & "','" & DataGridView1.Rows(0).Cells(41).Value & "',
'" & DataGridView1.Rows(0).Cells(42).Value & "','" & DataGridView1.Rows(0).Cells(43).Value & "','" & DataGridView1.Rows(0).Cells(44).Value & "',
'" & DataGridView1.Rows(0).Cells(45).Value & "','" & DataGridView1.Rows(0).Cells(46).Value & "','" & DataGridView1.Rows(0).Cells(47).Value & "')"
Dim objcmd = New OleDbCommand(cmdStr, objcon)
Dim count As Integer = DataGridView1.RowCount * DataGridView1.ColumnCount
objcon.Open()
MessageBox.Show(cmdStr)
objcmd.ExecuteNonQuery()
objcon.Close()
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
End Sub
End Class
โค้ดล้าสุดครับ
ปล. มีวิธีใส่ single quote ใน string มั้ยครับ
|
|
|
|
|
Date :
2018-09-21 10:55:55 |
By :
2057240200974209 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ได้แล้วครับขอขอบคุณพี่ๆทุกคนมากนะครับ
|
|
|
|
|
Date :
2018-09-21 11:58:43 |
By :
2057240200974209 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 01
|