|
|
|
| Всем привет. Есть вопрос следующего плана: необходимо в таблицу добавить просчитанные данные по остатку товара на складе, смысл такой, что есть приход по номенклатуре, есть расход по номенклатуре. Запросом на выборку группирую, суммирую и вычетаю Sum([Приход])-Sum([Расход])=остаток (по номенклатуре и по партии). Так вот, когда я запускаю запрос на обновление поля остаток в таблице, access запращиваеш парамтр остатка (Запрос1!Остаток)
Что я делаю не так, подскажите. | |
|
| |
|
|
|
|
| UPDATE ПриходПопозициям SET ПриходПопозициям.ОстатокТовара = Запрос1!Остаток; | |
|
| |
|
|
|
| Я имел ввиду текст Запрос1
Хотя это не имеет смысла, обновить данные используя запрос с группировкой не получится | |
|
| |
|
|
|
| Запрос1
SELECT ПриходПопозициям.КодПриходаПопозиционно, ПриходПопозициям.НаименованиеТовара, Sum(ПриходПопозициям.КолВоПриход) AS [Sum-КолВоПриход], Sum(РасходПозиционно.КолВоРасхода) AS [Sum-КолВоРасхода], [Sum-КолВоПриход]-[Sum-КолВоРасхода] AS Остаток
FROM ПриходПопозициям INNER JOIN РасходПозиционно ON ПриходПопозициям.КодПриходаПопозиционно = РасходПозиционно.НаименованиеТовара
GROUP BY ПриходПопозициям.КодПриходаПопозиционно, ПриходПопозициям.НаименованиеТовара;
Потом на основание этого запроса:
UPDATE ПриходПопозициям SET ПриходПопозициям.ОстатокТовара = Запрос1!Остаток;
В SQL не силён, только поверхностно. Я не могу понять, почему когда например в одной таблице поле: Цена* КолВо=Сумма, заноситься в таблу, а если использовать выборку из других таблиц, начинаються проблемы. | |
|
| |
|
|
|
| Попробуйте так:
UPDATE ПриходПопозициям SET ПриходПопозициям.ОстатокТовара = DLookup('[Остаток]','[Запрос1]','[КодПриходаПопозиционно]=' & [ПриходПопозициям]![КодПриходаПопозиционно])
|
Быстрее будет через два Recordset-a (в одном цикл по записям, в другом - поиск и обновление). | |
|
| |
|
|
|
| 1. кажется Запрос1 должен быть прикреплен. типа
UPDATE ПриходПоПозициям INNER JOIN Запрос1 ON ПриходПоПозициям.КодНаименования=Запрос1.КодНаименования ....
|
2. я делаю так:
в табле номенклатура (Naimen) есть поле skl_kol - наличие товара на складе в данный момент, по запросу перебирает Sklad только приход (Gurn_Prixod_vnesh) и если есть на складе - "WHERE ([kol]-[kol_spis])>0") добавляем нужное количество.
dbs.Execute ("UPDATE (Gurn_Prixod_vnesh INNER JOIN Sklad ON Gurn_Prixod_vnesh.Kod_reg=Sklad.Data) INNER JOIN Naimen ON Sklad.Naimen=Naimen.Kod_N SET naimen.skl_kol=naimen.skl_kol+(sklad.kol-sklad.kol_spis) WHERE ([kol]-[kol_spis])>0")
|
| |
|
| |
|
|
|
| Я так понимаю, что когда я хочу занести в поле Остаток данные, assecc не понимает, что такое Запрос1!Остаток.
| |
|
| |