Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Help me please!  [new]
Joiner
Member

Откуда:
Сообщений: 34
Совсем недавно начал изучать Access. Местами кое-чего понимаю, местами не очень. Столкнулся, наверное, с примитивной задачей, но ни как не могу ее решить. Суть проблемы:
Прилагается схема в файлике SHEMA 40kb.
Помогите, пожалуйста. Сам не могу въехать:(
1 дек 05, 14:26    [2131043]     Ответить | Цитировать Сообщить модератору
 Re: Help me please!  [new]
Joiner
Member

Откуда:
Сообщений: 34
Файл приложил, но не вижу где он приложился
1 дек 05, 14:31    [2131094]     Ответить | Цитировать Сообщить модератору
 Re: Help me please!  [new]
Joiner
Member

Откуда:
Сообщений: 34
Как файл-то приложить?
1 дек 05, 14:46    [2131187]     Ответить | Цитировать Сообщить модератору
 Re: Help me please!  [new]
Just_Serg
Member

Откуда:
Сообщений: 498
а это уже второй вопрос :)
1 дек 05, 14:51    [2131216]     Ответить | Цитировать Сообщить модератору
 Re: Help me please!  [new]
VEO
Guest
Как мне оформить свое сообщение
1 дек 05, 15:06    [2131323]     Ответить | Цитировать Сообщить модератору
 Re: Help me please!  [new]
VEO
Guest
Вот так, но после предв. просмотра ссылка сбрасывается(почему-то)

К сообщению приложен файл. Размер - 0Kb
1 дек 05, 15:11    [2131364]     Ответить | Цитировать Сообщить модератору
 Re: Help me please!  [new]
Joiner
Member

Откуда:
Сообщений: 34
Спасибо, VEO!
Пытаюсь еще раз

К сообщению приложен файл. Размер - 0Kb
1 дек 05, 15:39    [2131571]     Ответить | Цитировать Сообщить модератору
 Re: Help me please!  [new]
Joiner
Member

Откуда:
Сообщений: 34
Абалдеть! Вот это крупняк! Почему-то не подумал, что так крупно будет, но вроде быпонятна суть вопроса.
Помогите, пожалуйстаэ
1 дек 05, 15:43    [2131598]     Ответить | Цитировать Сообщить модератору
 Re: Help me please!  [new]
CAHEKK
Member

Откуда:
Сообщений: 788
А в чем проблема-то?
1 дек 05, 15:54    [2131662]     Ответить | Цитировать Сообщить модератору
 Re: Help me please!  [new]
Joiner
Member

Откуда:
Сообщений: 34
Проблема в том, что не удается мне его сделать, т.к. я новичек в этом деле.
На половину получается - Сотрудник, материал, Приход (получается табличка с заголовками полей и данными.
Когда делаю -Сотрудник, материал, приход, расход получаются только заголовки, данных ни каких не выводится.
1 дек 05, 16:06    [2131733]     Ответить | Цитировать Сообщить модератору
 Re: Help me please!  [new]
Ort84
Member

Откуда: Украина, Донецк
Сообщений: 569
Joiner
Проблема в том, что не удается мне его сделать, т.к. я новичек в этом деле.
На половину получается - Сотрудник, материал, Приход (получается табличка с заголовками полей и данными.
Когда делаю -Сотрудник, материал, приход, расход получаются только заголовки, данных ни каких не выводится.


Ты текст запроса покажи!!!
1 дек 05, 16:47    [2132011]     Ответить | Цитировать Сообщить модератору
 Re: Help me please!  [new]
Joiner
Member

Откуда:
Сообщений: 34
Суть проблемы в том, что имеется таблица Операции, где имеются поля:
код операции, код материала, кому (код сотрудника из табл.Сотрудники), от_кого (код сотрудника из табл.Сотрудники), кол_во.
На основании таблицы операции и таблицы сотрудники мне нужно получить результат:
сотрудник материал приход расход остаток
Сидоров цемент 200 120 80
Сидоров краска ............................. и тд

Не могу сделать так, чтобы значение из поля "кол_во" из таблицы Операции записывалось в поле "приход" (если код сотрудника из табл. Сотрудники = коду сотрудника из поля "кому" табл. Операции) и чтобы значение из поля "кол_во" из таблицы Операции записывалось в поле "расход" (если код сотрудника из табл. Сотрудники = коду сотрудника из поля "от_кого" табл. Операции).

См схему в предыдущих сообщениях.
P.S. Короче из значения поля кол_во надо сделать или ПРИХОД или РАСХОД, путем записи этого значения в то или иное поле. Если сотрудник-Сидоров, материал-цемент, кому-Сидоров, от_кого Кто-нибудь, кол_во- 300, то это значит :
Сотрудник-Сидоров, материал-цемент, ПРИХОД-300, расход-0....
(это одна строка, а как сосчитать все итоги, как посчитать стоимость, умножив цену на кол-во, я уже знаю).
1 дек 05, 22:01    [2133154]     Ответить | Цитировать Сообщить модератору
 Re: Help me please!  [new]
Karfaqen
Member

Откуда:
Сообщений: 7010
Как-то так можно:
SELECT 
 SM.WW AS [Фамилия],
 SM.MM AS [Наим_матер],
 Nz(P.S,0) AS [Приход],
 Nz(R.S,0) AS [Расход],
 Nz(P.S,0) - Nz(R.S,0) AS [остаток]

FROM
(SELECT TM.[Код материала] AS M, TM.[Наим_материала] AS MM,  
 TS.[Код сотруд] AS W, TS.[Фамилия] AS WW 
 FROM Материалы AS TM, Сотрудники AS TS) AS SM,

(SELECT [Код материала] AS M, От_кого AS W, Sum(Кол_во) AS S 
 FROM Операции GROUP BY [Код материала], От_кого) AS R,

(SELECT [Код материала] AS M, Кому AS W, Sum(Кол_во) AS S 
 FROM Операции GROUP BY [Код материала], Кому) AS P,

 SM LEFT JOIN P ON SM.M=P.M AND SM.W=P.W,
 SM LEFT JOIN R ON SM.M=R.M AND SM.W=R.W

WHERE 
 NOT Nz(P.S,0)+Nz(R.S,0)=0

ORDER BY 
 SM.MM, SM.WW
Запрос построен для приведенных в картинке структур. Сортировку для примера поставил, ставьте свою какую хотите.

Удачи.
1 дек 05, 23:57    [2133309]     Ответить | Цитировать Сообщить модератору
 Re: Help me please!  [new]
Joiner
Member

Откуда:
Сообщений: 34
Karfaqen, спасибо огромное!
Буду пробовать, разбираться, изучать.
Результат сообщу дополнительно.

Спасибо.
2 дек 05, 11:29    [2134279]     Ответить | Цитировать Сообщить модератору
 Re: Help me please!  [new]
Joiner
Member

Откуда:
Сообщений: 34
Karfaqen, я не смог разобраться в запросе. Переписал его, запустил - результат пустая таблица. Где-то я что-то не понял.
Karfaqen, а может тебе прислать файлик mdb(200кб) с примером этого случая, и если б ты написал к нему запросик, я был бы очень благодарен. А то я споткнулся на этом шаге и вперед никак.
2 дек 05, 16:03    [2136096]     Ответить | Цитировать Сообщить модератору
 Re: Help me please!  [new]
Karfaqen
Member

Откуда:
Сообщений: 7010
Joiner
Karfaqen, а может тебе прислать файлик mdb(200кб) с примером этого случая
Высылайте архив вашего файлика на e-mail, указанный в моем профиле, разберемся.
3 дек 05, 08:41    [2138051]     Ответить | Цитировать Сообщить модератору
 Re: Help me please!  [new]
Joiner
Member

Откуда:
Сообщений: 34
Отправил.
3 дек 05, 10:04    [2138062]     Ответить | Цитировать Сообщить модератору
 Re: Help me please!  [new]
Karfaqen
Member

Откуда:
Сообщений: 7010
У вас в файле имена полей отличаются от тех, что вы опубликовали тут в картинке. Для тех структур, что вы мне прислали, надо так:
SELECT 
 SM.WW AS [Фамилия],
 SM.MM AS [Материал],
 Nz(P.S,0) AS [Приход],
 Nz(R.S,0) AS [Расход],
 Nz(P.S,0) - Nz(R.S,0) AS [Остаток]

FROM
(SELECT TM.[код_мат] AS M, TM.[наим_мат] AS MM,  
 TS.[код_сотруд] AS W, TS.[Фамилия] AS WW 
 FROM Материалы AS TM, Сотрудники AS TS) AS SM,

(SELECT [материал] AS M, От_кого AS W, Sum(Кол_во) AS S 
 FROM Операции GROUP BY [материал], От_кого) AS R,

(SELECT [материал] AS M, Кому AS W, Sum(Кол_во) AS S 
 FROM Операции GROUP BY [материал], Кому) AS P,

 SM LEFT JOIN P ON SM.M=P.M AND SM.W=P.W,
 SM LEFT JOIN R ON SM.M=R.M AND SM.W=R.W

WHERE 
 NOT Nz(P.S,0)+Nz(R.S,0)=0

ORDER BY 
 SM.MM, SM.WW
3 дек 05, 10:46    [2138075]     Ответить | Цитировать Сообщить модератору
 Re: Help me please!  [new]
Joiner
Member

Откуда:
Сообщений: 34
Karfagen, спасибо огромное!!!! Даже и не знаю как еще отблагодарить.
Засунул текст твоего запроса в базу через буфер обмена, запустил, ВСЕ РАБОТАЕТ!!!
Правда не совсем понимаю текст запроса, но буду разбираться, изучать.
Не понимаю что такое SM.WW, SM.MM, Nz(P.S,0), Nz(R.S,0) и т.д.
Придется учиться, учиться и учиться...
Еще раз оромное спасибище!!!
3 дек 05, 14:37    [2138238]     Ответить | Цитировать Сообщить модератору
 Re: Help me please!  [new]
Joiner
Member

Откуда:
Сообщений: 34
Karfaqen, пока не смог разобраться, т.е. понять как он работает. Моих знаний, видимо еще очень мало. Пытался по аналогии с твоим запросом составить свой - ни чего не получается. Твой работает, мой - нет. Два дня грызу науку SQL, но пока далеко не во всем могу разобраться. Не понимаю что такое в твоем запросе Nz(P.S,0), а именно, что эта конструкция означает.
Сегодня пошел другим путем. Сделал два простых запросика, потом в третьем запросике их объеденил, а в четвертом запросе на основании третьего получил то, что мне требовалось.
Интересно это будет на много медленнее работать?
6 дек 05, 15:45    [2145612]     Ответить | Цитировать Сообщить модератору
 Re: Help me please!  [new]
Karfaqen
Member

Откуда:
Сообщений: 7010
Joiner
Не понимаю что такое в твоем запросе Nz(P.S,0), а именно, что эта конструкция означает.
Справка MSA Функция Nz
Функция Nz возвращает нуль, пустую строку ("") или другое указанное значение, если переменная типа Variant имеет значение Null.
В данном случае P.S - это поле S (алиас поля) из таблицы P (алиас таблицы)
Выражение Nz(P.S,0):
возвращает значение P.S, если P.S не NULL
возвращает 0, если P.S NULL
7 дек 05, 09:08    [2147539]     Ответить | Цитировать Сообщить модератору
 Re: Help me please!  [new]
Joiner
Member

Откуда:
Сообщений: 34
Спасибо, Karfaqen!
7 дек 05, 12:01    [2148368]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить