我正在尝试像这样制作更新:
Table1.Column1 = Table1.Column1 + Table2.Column1 WHERE Table2.SomeColumn = Something。我需要对表格1和表格2中具有相同名称的25列进行此类更新,但请不要使用INNER JOIN ON Table1.ColumnName = Table2.ColumnName。这对我不起作用,因为我在两个表上都没有相同值的列。我只想从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.感谢您的帮助
答案 0 :(得分:0)
确定。我只是通过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));"
非常感谢。
答案 1 :(得分:0)
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