【问题标题】:VB 2010 - MS Access SQL. How to write Update Query: Table1.Column1 = Table1.Column1 + Table2.Column1 WHERE Table2.SomeColumn=SomethingVB 2010 - MS Access SQL。如何编写更新查询:Table1.Column1 = Table1.Column1 + Table2.Column1 WHERE Table2.SomeColumn=Something
【发布时间】:2014-12-07 02:15:06
【问题描述】:

我正在尝试像这样进行更新:

Table1.Column1 = Table1.Column1 + Table2.Column1 WHERE Table2.SomeColumn=Something。我需要对 Table1 和 Table2 中具有相同名称的 25 列进行这样的更新,但请不要在 Table1.ColumnName = Table2.ColumnName 上进行 INNER JOIN。这对我不起作用,因为我在两个表上都没有具有相同值的列。我只想从 Table2 中的某个列中获取值,并在 Table1 中的某个列中添加值。

当从不同的列但同一个表进行更新时,它可以正常工作。像这样:

"UPDATE TABLE1 SET TABLE1.Column1=[Table1].[Column1]+[Table1].[Column2] WHERE [Table1].[Column3]=Something;"

但如果我使用 Table2:

"UPDATE TABLE1 SET TABLE1.Column1=[Table1].[Column1]+[Table2].[Column1] WHERE [Table2].[Column2]=Something;"

它给了我这个错误:没有为一个或多个必需参数提供值。

我使用 Visual Basic 2010 和 MS Access 2007。感谢您的帮助

【问题讨论】:

    标签: sql visual-studio-2010 ms-access-2007


    【解决方案1】:

    好的。多亏了 MS Access Query Design,我才找到了解决方案。

    解决方案:

    "UPDATE Table1, Table2 SET Table1.Column1 = [Table1].[Column1]+[Table2].[Column1], Tabel1.Colum2 = [Table1].[Column2]+[Table2].[Column2], Table1.ColumnN = [Table1].[ColumnN]+[Table2].[ColumnN] WHERE (((Table2.[SomeColumn])=SomeValue));"
    

    还是谢谢。

    【讨论】:

      【解决方案2】:

      Zoran 这不一定完全符合您的要求,但您可以使用 Visual Basic 而不是 SQL 以编程方式更新表中的值 - 您将所有值传递到记录集中,然后在将更改提交回之前更新记录集桌子。下面的示例采用表格中的值并更改字母发送值和发送日期值。可能对你有用。 根据需要替换表名和列名。

      Dim strSQL As String
      
      Set db = CurrentDb()
      
      strSQL = "SELECT T008Attendees.PKID, T008Attendees.LetterSentDate, T008Attendees.LetterSent FROM T008Attendees WHERE (((T008Attendees.PKID)=" & ParameterID & "));"
      
      Set rst = db.OpenRecordset(strSQL, dbOpenDynaset)
      
      With rst
      
      If .RecordCount > 0 Then
      .MoveFirst
      .Edit
      !LetterSent = 1
      !LetterSentDate = Date
      .Update
      End If
      
      End With
      

      【讨论】:

      • 你好达尔基思。我尝试使用 SQL 完成这项工作,因为它比从 DB 中获取数据以编程方式执行某些操作并将这些数据再次返回到 DB 更快。 DB 将在网络中的其他计算机上。无论如何感谢您的回答。这将有助于其他情况。
      猜你喜欢
      • 1970-01-01
      • 2022-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-05
      • 2015-01-26
      相关资源
      最近更新 更多