Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Запрос на обновление
 
 автор: seluvan   (20.10.2009 в 13:38)   личное сообщение
 
 

Всем привет. Есть вопрос следующего плана: необходимо в таблицу добавить просчитанные данные по остатку товара на складе, смысл такой, что есть приход по номенклатуре, есть расход по номенклатуре. Запросом на выборку группирую, суммирую и вычетаю Sum([Приход])-Sum([Расход])=остаток (по номенклатуре и по партии). Так вот, когда я запускаю запрос на обновление поля остаток в таблице, access запращиваеш парамтр остатка (Запрос1!Остаток)
Что я делаю не так, подскажите.

  Ответить  
 
 автор: osmor   (20.10.2009 в 14:08)   личное сообщение
 
 

текст запроса покажите

  Ответить  
 
 автор: seluvan   (20.10.2009 в 14:10)   личное сообщение
 
 

UPDATE ПриходПопозициям SET ПриходПопозициям.ОстатокТовара = Запрос1!Остаток;

  Ответить  
 
 автор: osmor   (20.10.2009 в 14:21)   личное сообщение
 
 

Я имел ввиду текст Запрос1
Хотя это не имеет смысла, обновить данные используя запрос с группировкой не получится

  Ответить  
 
 автор: seluvan   (20.10.2009 в 14:27)   личное сообщение
 
 

Запрос1
SELECT ПриходПопозициям.КодПриходаПопозиционно, ПриходПопозициям.НаименованиеТовара, Sum(ПриходПопозициям.КолВоПриход) AS [Sum-КолВоПриход], Sum(РасходПозиционно.КолВоРасхода) AS [Sum-КолВоРасхода], [Sum-КолВоПриход]-[Sum-КолВоРасхода] AS Остаток
FROM ПриходПопозициям INNER JOIN РасходПозиционно ON ПриходПопозициям.КодПриходаПопозиционно = РасходПозиционно.НаименованиеТовара
GROUP BY ПриходПопозициям.КодПриходаПопозиционно, ПриходПопозициям.НаименованиеТовара;
Потом на основание этого запроса:
UPDATE ПриходПопозициям SET ПриходПопозициям.ОстатокТовара = Запрос1!Остаток;
В SQL не силён, только поверхностно. Я не могу понять, почему когда например в одной таблице поле: Цена* КолВо=Сумма, заноситься в таблу, а если использовать выборку из других таблиц, начинаються проблемы.

  Ответить  
 
 автор: Анатолий (Киев)   (20.10.2009 в 14:56)   личное сообщение
 
 

Попробуйте так:

UPDATE ПриходПопозициям SET ПриходПопозициям.ОстатокТовара = DLookup('[Остаток]','[Запрос1]','[КодПриходаПопозиционно]=' & [ПриходПопозициям]![КодПриходаПопозиционно])

Быстрее будет через два Recordset-a (в одном цикл по записям, в другом - поиск и обновление).

  Ответить  
 
 автор: kot_k_k   (20.10.2009 в 14:11)   личное сообщение
 
 

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

  Ответить  
 
 автор: seluvan   (20.10.2009 в 14:50)   личное сообщение
 
 

Я так понимаю, что когда я хочу занести в поле Остаток данные, assecc не понимает, что такое Запрос1!Остаток.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList