VB.NET:正在更新 Ms Access 中的记录
VB.NET:Updating record in Ms Access
我正在创建一个员工计时 sheet,他们必须通过按 timein 和 timeout 按钮在其中插入计时。对于 timein,我正在为那个人在数据库中创建一个新记录,对于 timeout,我正在使用 UPDATING 命令来更新该现有记录。这是我的代码:
Dim cb As New OleDb.OleDbCommandBuilder(ssda)
cb.QuotePrefix = "["
cb.QuoteSuffix = "]"
con.ConnectionString = dbProvider & dbSource
con.Open()
Dim str As String
str = "UPDATE emp_timing SET emp_timing.emp_timeout = '" & OnlyTime & "' WHERE (((emp_timing.emp_code)='" & TextBox1.Text & "') AND ((emp_timing.day)=" & Now.ToString("MM/dd/yyyy") & "))"
Dim cmd As OleDbCommand = New OleDbCommand(str, con)
Try
cmd.ExecuteNonQuery()
cmd.Dispose()
con.Close()
MsgBox("Data added")
TextBox1.Clear()
TextBox2.Clear()
TextBox1.Focus()
ComboBox1.SelectedIndex = -1
Catch ex As Exception
MsgBox(ex.Message)
End Try
我的代码工作正常,但问题是它没有更新数据库中的记录。
Access 中字段的数据类型:
emp_code = 数字,emp_timeout = 文本,天 = Date/Time。
像往常一样,这是由于您的代码没有使用 Parameters 集合将值传递给数据库引擎造成的。直到您遇到日期转换问题时才真正理解这一点
str = "UPDATE emp_timing SET emp_timeout = @p1 " & _
"WHERE emp_code = @p2 AND day = @p3"
Using con = new OleDbConnection( dbProvider & dbSource)
Using cmd = New OleDbCommand(str, con)
con.Open()
cmd.Parameters.Add("@p1", OleDbType.VarWChar).Value = OnlyTime
cmd.Parameters.Add("@p2", OleDbType.Integer).Value = Convert.ToInt32(TextBox1.Text)
cmd.Parameters.Add("@p3", OleDbType.Date).Value = new DateTime(Now.Year, Now.Month, Now.Day)
Try
Dim rowsAdded = cmd.ExecuteNonQuery()
if rowsAdded > 0 Then
MsgBox("Data added")
TextBox1.Clear()
TextBox2.Clear()
TextBox1.Focus()
ComboBox1.SelectedIndex = -1
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Using
End Using
我正在创建一个员工计时 sheet,他们必须通过按 timein 和 timeout 按钮在其中插入计时。对于 timein,我正在为那个人在数据库中创建一个新记录,对于 timeout,我正在使用 UPDATING 命令来更新该现有记录。这是我的代码:
Dim cb As New OleDb.OleDbCommandBuilder(ssda)
cb.QuotePrefix = "["
cb.QuoteSuffix = "]"
con.ConnectionString = dbProvider & dbSource
con.Open()
Dim str As String
str = "UPDATE emp_timing SET emp_timing.emp_timeout = '" & OnlyTime & "' WHERE (((emp_timing.emp_code)='" & TextBox1.Text & "') AND ((emp_timing.day)=" & Now.ToString("MM/dd/yyyy") & "))"
Dim cmd As OleDbCommand = New OleDbCommand(str, con)
Try
cmd.ExecuteNonQuery()
cmd.Dispose()
con.Close()
MsgBox("Data added")
TextBox1.Clear()
TextBox2.Clear()
TextBox1.Focus()
ComboBox1.SelectedIndex = -1
Catch ex As Exception
MsgBox(ex.Message)
End Try
我的代码工作正常,但问题是它没有更新数据库中的记录。
Access 中字段的数据类型: emp_code = 数字,emp_timeout = 文本,天 = Date/Time。
像往常一样,这是由于您的代码没有使用 Parameters 集合将值传递给数据库引擎造成的。直到您遇到日期转换问题时才真正理解这一点
str = "UPDATE emp_timing SET emp_timeout = @p1 " & _
"WHERE emp_code = @p2 AND day = @p3"
Using con = new OleDbConnection( dbProvider & dbSource)
Using cmd = New OleDbCommand(str, con)
con.Open()
cmd.Parameters.Add("@p1", OleDbType.VarWChar).Value = OnlyTime
cmd.Parameters.Add("@p2", OleDbType.Integer).Value = Convert.ToInt32(TextBox1.Text)
cmd.Parameters.Add("@p3", OleDbType.Date).Value = new DateTime(Now.Year, Now.Month, Now.Day)
Try
Dim rowsAdded = cmd.ExecuteNonQuery()
if rowsAdded > 0 Then
MsgBox("Data added")
TextBox1.Clear()
TextBox2.Clear()
TextBox1.Focus()
ComboBox1.SelectedIndex = -1
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Using
End Using