Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не получается правильно вычесть сумму, небольшая база и запрсы 
:(
    Опции темы
videolamer
Дата 9.7.2011, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 9.7.2011

Репутация: нет
Всего: нет



Здравствуйте, я новичок в Access, можно сказать полный ноль. Создаю простенькую базу учета, назовем это базой денежных чеков. Работает она так, заношу в таблицу "чеки" номера чеков и их номинал, например чек 123 номинал 200 у.е, чек 124 номинал  200 у.е и чек 125 номинал 200 у.е Это база чеков. Далее Иванову оплачено с чека  123, 50 у.е, а Сидорову с чека 125, 100 у.е. Заношу эти данные в таблицу клиенты. 
Загвоздка в том, что при отчете у меня происходит полная неразбериха со списанием с чеков. Это ошибка в запросе, который я создал. Но ума не приложу как это исправить. Т.е. если с чека номиналом 200 списать 200, то в отчете получается ноль, как и положено, но если списать 50, а потом списать ещё 50, то в отчете вместо 100, получается 150. Вторая проблема в том как создать запрос чтоб можно было посмотреть сколько осталось на определенном чеке сумма...
 Помогите пожалуйста, разобраться.

Это сообщение отредактировал(а) videolamer - 11.7.2011, 10:14

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  check_2003.rar 72,78 Kb
PM MAIL   Вверх
Akina
Дата 9.7.2011, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454





--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
videolamer
Дата 11.7.2011, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 9.7.2011

Репутация: нет
Всего: нет



Akina, Извиняюсь, вроде исправил.
PM MAIL   Вверх
Akina
Дата 11.7.2011, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Для того, чтобы правильно посчитать остатки, необходимо построить ДВА запроса.
Первый должен по таблице клиентов (кстати, у вас там опечатка в названии таблицы) посчитать сумму, списанную по каждому чеку:
Код

SELECT Клиетны.[код чека], Sum(Клиетны.сумма) AS [Списано]
FROM Клиетны
GROUP BY Клиетны.[код чека];

Назовём его, скажем, Списание.
Вот теперь можно получить и остатки по чекам:
Код

SELECT Чеки.[код чека], Чеки.[номер чека], Чеки.номинал, Списание.Списано, [номинал]-[Списано] AS Остаток
FROM Чеки 
INNER JOIN Списание 
ON Чеки.Код = Списание.[код чека];

Логично будет назвать его Остатки.
Вот теперь на его основе можно строить итоговый отчёт.
Можно, конечно, собрать эти два запроса в один - но в рамках одной БД это не имеет смысла.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
videolamer
Дата 11.7.2011, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 9.7.2011

Репутация: нет
Всего: нет



Akina, Спасибо большое. Вроде поправил, но получается опять беспорядок. 

Это сообщение отредактировал(а) videolamer - 11.7.2011, 13:30

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  check_2003_new.rar 69,90 Kb
PM MAIL   Вверх
videolamer
Дата 11.7.2011, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 9.7.2011

Репутация: нет
Всего: нет



Я извиняюсь всё поправил. Отчет по чекам получается как положено! Спасибо вам!
PM MAIL   Вверх
Akina
Дата 11.7.2011, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Кстати. 
Эти запросы обладают одним недостатком - не будут выведены чеки, по которым не было списаний. Чтобы они были выведены, надо слегка изменить второй запрос:
Код

SELECT Чеки.[код чека], Чеки.[номер чека], Чеки.номинал, NZ(Списание.Списано;0), [номинал]-NZ([Списано];0) AS Остаток
FROM Чеки 
LEFT JOIN Списание 
ON Чеки.Код = Списание.[код чека];




--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
videolamer
Дата 11.7.2011, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 9.7.2011

Репутация: нет
Всего: нет



Да, Вы правы. Действительно чеки с которых не было списаний не отражаются в отчете. К сожалению я не смог сообразить как изменить отчет в соответствии с  Вашим кодом, в отличие от первых двух. Не могли бы вы поправить мой файл? Заранее благодарю!

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  check_2.rar 72,46 Kb
PM MAIL   Вверх
Akina
Дата 11.7.2011, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Просто замените текст запроса.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
videolamer
Дата 12.7.2011, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 9.7.2011

Репутация: нет
Всего: нет



Я немного изменил названия в запросах, добавил одно поле и исправил ошибки в названии таблиц. Меняю текст запроса на Ваш код в соответствии со своими названиями, но теперь при изменении кода вылетает ошибка синтаксиса в выражении NZ. Как плохо, когда нет рядом друга-гуру по аксесс. Трудно заниматься самообучением.

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  chekiwmz2003.rar 72,47 Kb
PM MAIL   Вверх
Akina
Дата 12.7.2011, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(videolamer @  12.7.2011,  11:47 Найти цитируемый пост)
вылетает ошибка синтаксиса в выражении NZ

Ну уж не поленитесь почитать справку по синтаксису функции, а?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
videolamer
Дата 12.7.2011, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 9.7.2011

Репутация: нет
Всего: нет



да я бы почитал, мне не лень, но Вы думаете я понимаю о чем идет речь в справке? 

Цитата

<Message> in query expression <expression>. (Error 3075) 

The expression you typed is not valid for the reason indicated in the message. Make sure you have typed field names and punctuation correctly, and then try the operation again.

Вот такой код пытаюсь вставить.

Код

SELECT Списание.[код чека], Списание.[номер чека], Списание.номинал, NZ(Списание.погашено;0), [номинал]-NZ( [погашено];0 ) AS остаток
FROM Списание;

 Вот такую ошибку получаю: Ошибка синтаксиса в выражении запроса 'NZ(Списание.погашено;0)'
PM MAIL   Вверх
Akina
Дата 12.7.2011, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(Akina @  12.7.2011,  14:02 Найти цитируемый пост)
не поленитесь почитать справку по синтаксису функции

на всякий случай скажу, что имеется в виду функция NZ()


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Access | Следующая тема »


 




[ Время генерации скрипта: 0.0537 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.