【问题标题】:UPDATE Query in MS Access using SQL in VBA with declared strings在 MS Access 中使用带有声明字符串的 VBA 中的 SQL 更新查询
【发布时间】:2021-12-06 00:32:51
【问题描述】:

自从我发布以来已经有一段时间了,所以请原谅任何格式问题。希望用同一张表中同一字段中另一条记录的值更新表字段。

我已经声明了两个字符串,并且 strDeal 字符串在调试时返回正确的值。但是,当我将字符串引入 sql 语句时,我无法通过查询来更新字段。我不确定到底是什么工作不正常,因此我们将不胜感激。

基础是我正在尝试根据子查询的返回值使用来自同一表中同一字段的值更新Case_Qty 字段。谢谢!

Dim strDeal As String
Dim strSQL As String

strDeal = DMax("[Deal_No]", "[tblStructuresNoDAworking]", "[Structure_Name] = Forms!frmStructNoDASetup!Structure_Name AND [FG_Ind] = 0 AND [Deal_No] < Forms!frmStructNoDASetup!Deal_No")

strSQL = "UPDATE tblStructuresNoDAworking SET tblStructuresNoDAworking.Case_Qty = (SELECT [Case_Qty] FROM tblStructuresNoDAworking WHERE [Structure_Name] = '" & Me.Structure_Name.Value & "' AND [Deal_No] = '" & strDeal & "') WHERE [Structure_Name] = '" & Me.Structure_Name.Value & "' AND [Deal_No] = '" & Me.Deal_No.Value & "'"

DoCmd.RunSQL (strSQL)

【问题讨论】:

标签: sql vba ms-access ms-access-2016


【解决方案1】:

在连接表单中的值的地方试试这个:

Dim strDeal As String
Dim strSQL  As String

strDeal = DMax("[Deal_No]", "[tblStructuresNoDAworking]", "[Structure_Name] = '" & Forms!frmStructNoDASetup!Structure_Name & "' AND [FG_Ind] = 0 AND [Deal_No] < '" & Forms!frmStructNoDASetup!Deal_No & "'")
strSQL = "UPDATE tblStructuresNoDAworking " & _
    "SET tblStructuresNoDAworking.Case_Qty = " & _ 
    "    (SELECT [Case_Qty] " & _
    "    FROM tblStructuresNoDAworking " & _
    "    WHERE [Structure_Name] = '" & Me.Structure_Name.Value & "' AND [Deal_No] = '" & strDeal & "') " & _
    "WHERE [Structure_Name] = '" & Me.Structure_Name.Value & "' AND [Deal_No] = '" & Me.Deal_No.Value & "'"

DoCmd.RunSQL strSQL

对于数字交易:

Dim Deal    As Long
Dim strSQL  As String

Deal = DMax("[Deal_No]", "[tblStructuresNoDAworking]", "[Structure_Name] = '" & Forms!frmStructNoDASetup!Structure_Name & "' AND [FG_Ind] = 0 AND [Deal_No] < '" & Forms!frmStructNoDASetup!Deal_No & "'")
strSQL = "UPDATE tblStructuresNoDAworking " & _
    "SET tblStructuresNoDAworking.Case_Qty = " & _ 
    "    (SELECT [Case_Qty] " & _
    "    FROM tblStructuresNoDAworking " & _
    "    WHERE [Structure_Name] = '" & Me.Structure_Name.Value & "' AND [Deal_No] = " & Deal & ") " & _
    "WHERE [Structure_Name] = '" & Me.Structure_Name.Value & "' AND [Deal_No] = " & Me.Deal_No.Value & ""

DoCmd.RunSQL strSQL

【讨论】:

  • 感谢@Gustav 的回复。不幸的是,这似乎仍然不起作用。
  • 然后点击@Andre提供的链接。
  • @Gustav 会做——我还应该提到 strDeal 返回的值必须是数字。不确定这是否在这里播放。
  • 可以,但是你已经将它声明为一个字符串...
  • 这是我不清楚的地方 - 我需要将它声明为整数吗?它试图在 sql 语句中满足的条件是查看一个整数字段。
猜你喜欢
  • 2016-03-16
  • 2018-06-14
  • 2010-12-01
  • 2011-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-17
相关资源
最近更新 更多