2014-10-12 56 views
0

我試圖讓更新這樣的:VB 2010 - MS Access SQL。如何寫更新查詢:Table1.Column1 = Table1.Column1 + Table2.Column1 WHERE Table2.SomeColumn =東西

Table1.Column1 = Table1.Column1 + Table2.Column1 WHERE Table2.SomeColumn =什麼的。我需要爲Table1和Table2中具有相同名稱的25列創建像這樣的更新,但請不要INNER JOIN ON Table1.ColumnName = Table2.ColumnName。這對我不起作用,因爲我沒有在兩個表上都有相同值的列。我只想從Table2中的某個列中獲取值,並在Table1中的某個列中添加值。

當從不同的列更新但同一個表時,它工作正常。就像這樣:

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

但是,如果使用表2:

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

它給我這個錯誤:沒有爲一個或多個必需的參數給定值。

我使用Visual Basic 2010和MS Access 2007.感謝您的幫助

回答

0

好的。 MS Access查詢設計讓我找到了解決方案。

解決方案:

"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));" 

無論如何感謝。

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 
+0

嗨Dalkeith。我試圖用SQL完成這項工作,因爲它比從數據庫獲取數據以編程方式執行某些操作並將此數據再次備份到數據庫更快。數據庫將在網絡中的其他計算機上。無論如何感謝您的答案。這將有助於其他情況。 – 2014-10-14 14:55:43

相關問題