две одинаковых таблицы: таблица1 (поле1, поле2) и таблица2 (поле1, поле2)
нужно: отобрать из таблица2 все записи, где таблица2.поле1=таблицы1.поле1 таблицы1 и заменить значения таблица1.поле2 соответствующими из таблица2.поле2
всю голову сломал
вот так:
- Код: Выделить всё
Con.Execute "Update tOld SET " & field & " = (select n." & field & " from tNew n where Nummer = n.Nummer)"
вставляет во все записи одно и тоже
вот так:
- Код: Выделить всё
CreateTemp
Con.Execute "insert into Temp select * from tNew"
Con.Execute "Update tOld SET " & field & " = (select n." & field & " from Temp n where Nummer = n.Num)"
здесь я сделал точно такую же таблицу но изменил название поля
в итоге - входит в какой-то цикл и не собирается из него выходить
вот так:
- Код: Выделить всё
Con.Execute "replace into tOld (" & field & ")" & _
"select n." & field & " from tNew n join tOld o on n.Nummer = o.Nummer"
все хорошо, только ничего не изменяет
может у кого есть мысли какие-нибудь по этому поводу?
пока справился с помощью временной таблицы:
- Код: Выделить всё
CreateTbl "Temp"
t = "tOld.Nummer , tOld.Bezeichnung , tNew.Preis , tOld.RG , " & _
"tOld.EK , tOld.Gewicht , tOld.MVP , tOld.Ersatzt , tOld.Pfand , " & _
"tOld.Lange , tOld.Hohe , tOld.Breite , tOld.Zusatz , tOld.Datum"
Con.Execute "Insert Into Temp select " & t & " from tOld, tNew Where tOld.Nummer = tNew.Nummer"
Con.Execute "DELETE FROM tOld WHERE Nummer IN (SELECT Nummer FROM tNew)"
Con.Execute "Insert Into tOld select * from Temp"