พอดีผมเขียนโปรแกรมขึ้นมาตัวหนึ่งซึ้ง report ต้องมีเลขที่เอกสารเลย สร้างฐานข้อมูลขึ้นมาเพื่อเก็บเลขที่ run โดยหลักการที่ผมใช้คือ
Select ข้อมูลจากฐานข้อมูลมาตรวจสอบ แล้วทำการ Update ฐานข้อมูลนั้น เพื่อจะ Run เลขที่เอกสารไปเรื่อยๆ แต่ติด Error ตรงการ Update ตามโค๊ต ครับ
Error จะเกิดในขั้นตอนที่จะ Update ครับ รบกวนผู้รู้ด้วยครับ
Code: Select all
Private Sub Doc()
' อ่านข้อมูลเก็บไว้ใน Dataset
Dim Sql As String = "SELECT * FROM Document WHERE Key='KEY'"
_Cmd = New OleDbCommand(Sql, _Conn)
'Dim Adapter As New OleDbDataAdapter(_Cmd)
'_Dataset = New DataSet
'Adapter.Fill(_Dataset, "Doc")
Dim Reader As OleDbDataReader = _Cmd.ExecuteReader()
Reader.Read()
Dim MM As Integer = Reader("Month")
Dim No As Integer = Reader("No")
Dim MMnow As Integer = Month(Now)
Dim YYnow As Integer = Mid(Year(Now), 3)
Dim Document As String = ""
If MMnow <> MM Then
No = 1
Document = "R" & YYnow & "0" & MMnow & "/" & "000" & No
ElseIf MMnow > 9 And No > 9 Then
Document = "R" & YYnow & MMnow & "/" & "00" & No + 1
ElseIf MMnow < 9 And No < 9 Then
Document = "R" & YYnow & "0" & MMnow & "/" & "000" & No + 1
ElseIf MMnow > 9 And No < 9 Then
Document = "R" & YYnow & MMnow & "000" & "/" & No + 1
ElseIf MMnow < 9 And No > 9 Then
Document = "R" & YYnow & "0" & MMnow & "00" & "/" & No + 1
End If
Sql = "UPDATE Document SET Year='" & YYnow & "', Month='" & MMnow & "', No='" & No + 1 & "',Doc='" & Document & "' WHERE Key='KEY'"
_Cmd = New OleDbCommand(Sql, _Conn)
_Cmd.Parameters.AddWithValue("YY", YYnow)
_Cmd.Parameters.AddWithValue("MM", MMnow)
_Cmd.Parameters.AddWithValue("No", No + 1)
_Cmd.Parameters.AddWithValue("Do", Document)
Dim Affected As Integer = _Cmd.ExecuteNonQuery
If Affected < 1 Then
MsgBox("เกิดข้อผิดพลาดในการแก้ไขข้อมูล!", MsgBoxStyle.OkOnly, "ผลการแก้ไข")
Else
MsgBox("ข้อมูลถูกแก้ไขแล้ว!", MsgBoxStyle.OkOnly, "ผลการแก้ไข")
End If