Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更新SQL MS Access 2010_Sql_Ms Access_Vba_Ms Access 2010 - Fatal编程技术网

更新SQL MS Access 2010

更新SQL MS Access 2010,sql,ms-access,vba,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].Shift

这已经折磨了我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包含人员姓名

我总是这样

运行时错误3075:查询中的语法错误(缺少运算符) 表达“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

正如我在评论中所说,您需要将日期字段用“#”括起来,将字符串字段用转义双引号括起来

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

如果使用参数查询,则不需要限定日期/时间和文本值

Dim strUpdate为字符串
Dim数据库作为DAO.Database
将qdf设置为DAO.QueryDef
strUpdate=“参数pEndTime DateTime,pAgentName Text(255);“&vbCrLf&_
“将BreakSked更新为b SET b.EndTime=[pEndTime]”&vbCrLf&_
其中b.AgentName=[pAgentName]和b.ShiftStatus='1';"

Debug.Print strUpdate“将日期时间字段包装在“#”日期运算符中,并将文本包装在双引号中,然后可以保存参数化查询,而无需在VBA中硬编码。类似于
set qdf=db.querydfs(“QADDBBreakEndTime”)
感谢它现在的更新。但是现在我得到了我的插入SQL添加另一条记录而不是更新它的地方。但是现在我得到了我的插入SQL添加另一条记录而不是更新它的地方。你正在以新记录的形式打开表单-这意味着你刚刚插入了一条新记录。你需要标记一个答案并启动一个新的记录新问题不只是继续在当前问题中添加编码问题,我明白了,谢谢。我会再打开一个。感谢您的帮助前面的路漫长而曲折,但我知道您会喜欢编码的