sql - 更新 SQL MS Access 2010

标签 sql ms-access vba ms-access-2010

这已经让我绞尽脑汁了 4 个小时了,

我有一个名为 BreakSked 的表,

我使用这个按钮来使用以下sql更新表的休息结束时间:

   strSQL1 = "UPDATE [BreakSked] SET [BreakSked].[EndTime] = " & _
     Me.Text412.Value & " WHERE [BreakSked].AgentName = " & Me.List423.Value _
     & " AND [BreakSked].ShiftStatus = '1'"

    CurrentDB.Execute strSQL1

Text412 保存当前系统时间,List423 包含人员姓名。

我总是得到这个

"Run-time error 3075: Syntax Error (missing operator) in query expression '03:00:00 am'

请问有什么帮助吗?

编辑:谢谢,现在我的记录正在更新。但现在它添加了另一条记录,而不是更新手头的记录。我觉得很傻,因为我的程序只有两个按钮,我不明白为什么会发生这种情况。

Private Sub Form_Load()
DoCmd.GoToRecord , , acNewRec
End Sub

Private Sub Command536_Click()

strSQL1 = "UPDATE BreakSked SET BreakSked.EndTime = '" & Me.Text412.Value & "',BreakSked.Duration = '" & durationz & "' " & vbCrLf & _
"WHERE (([BreakSked].[AgentID]='" & Me.List423.Value & "'));"
CurrentDb.Execute strSQL1
CurrentDb.Close
MsgBox "OK", vbOKOnly, "Added"

End Sub

Private Sub Command520_Click()

strSql = "INSERT INTO BreakSked (ShiftDate,AgentID,StartTime,Status) VALUES ('" & Me.Text373.Value & "', '" & Me.List423.Value & "', '" & Me.Text373.Value & "','" & Me.Page657.Caption & "')"

CurrentDb.Execute strSql
CurrentDb.Close

MsgBox "OK", vbOKOnly, "Added"


End Sub

最佳答案

如果使用参数查询,则无需分隔日期/时间和文本值。

Dim strUpdate As String
Dim db As DAO.Database
Dim qdf As DAO.QueryDef

strUpdate = "PARAMETERS pEndTime DateTime, pAgentName Text ( 255 );" & vbCrLf & _
    "UPDATE BreakSked AS b SET b.EndTime = [pEndTime]" & vbCrLf & _
    "WHERE b.AgentName = [pAgentName] AND b.ShiftStatus = '1';"
Debug.Print strUpdate ' <- inspect this in Immediate window ...
                      '    Ctrl+g will take you there 

Set db = CurrentDb
Set qdf = db.CreateQueryDef("", strUpdate)
qdf.Parameters("pEndTime").Value = Me.Text412.Value
qdf.Parameters("pAgentName").Value = Me.List423.Value
qdf.Execute dbFailOnError

如果您总是想将当前系统时间放入 EndTime 中,则可以使用 Time() 函数,而不是从文本框中提取它。

'qdf.Parameters("pEndTime").Value = Me.Text412.Value
qdf.Parameters("pEndTime").Value = Time()  ' or Now() if you want date and time

但是,如果是这种情况,您可以将函数名称硬编码到 SQL 中并省去一个参数。

"UPDATE BreakSked AS b SET b.EndTime = Time()" & vbCrLf & _

关于sql - 更新 SQL MS Access 2010,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51506453/

相关文章:

excel - 如何使VBA函数 "VBA only"并将其作为UDF禁用

excel - 与文本和标点符号动态范围连接

sql - 带有 PostgreSQL 的 Rails 3 应用程序 - 获取按对话分组的消息列表

mysql - 我的查询重复记录

c# - 来自 Access ODBC 驱动程序的无效日期时间格式异常

ms-access - Access 查询错误 - 空和变体数据类型 - 如何修复此错误?

带有 group by 和 having 子句的 Mysql 查询

sql - 将多个列值作为新行返回 SQL

ms-access - "2p"如何成为 VBA 中的日期?

vba - 来自 VBA Excel 的 Shell Camera.exe