2014-10-12 7 views
0

Я пытаюсь сделать обновление так:VB 2010 - MS Access SQL. Как написать Update Query: Table1.Column1 = Table1.Column1 + Table2.Column1 WHERE Table2.SomeColumn = Что-то

Table1.Column1 = Table1.Column1 + Table2.Column1 ГДЕ Table2.SomeColumn = Что-то. Мне нужно сделать такие обновления для 25 столбцов с одинаковыми именами в таблице 1 и таблице2, но без INNER JOIN ON Table1.ColumnName = Table2.ColumnName. Это не работает для меня, потому что у меня нет столбцов с одинаковыми значениями на обоих таблицах. Я просто хочу взять значение из некоторого столбца в таблице2 и добавить значение в некоторый столбец в таблице1.

При создании обновления из разных столбцов, но в той же таблице он работает нормально. Как это:

"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

Ok. Я просто нашел решение благодаря 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));" 

Спасибо в любом случае.

0

Zoran это не обязательно то, о чем вы просили, но вы можете программно обновлять значения в таблице с помощью визуального базового, а не 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

Hi Dalkeith. Я пытаюсь закончить работу с SQL, потому что быстрее, чем брать данные из БД, делать что-то программно и снова возвращать эти данные в БД. БД будет на другом компьютере в сети. Спасибо за ответ в любом случае. Это поможет в другой ситуации. –

Смежные вопросы