| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MS Access > Не получается правильно вычесть сумму |
| Автор: videolamer 9.7.2011, 13:40 |
| Здравствуйте, я новичок в Access, можно сказать полный ноль. Создаю простенькую базу учета, назовем это базой денежных чеков. Работает она так, заношу в таблицу "чеки" номера чеков и их номинал, например чек 123 номинал 200 у.е, чек 124 номинал 200 у.е и чек 125 номинал 200 у.е Это база чеков. Далее Иванову оплачено с чека 123, 50 у.е, а Сидорову с чека 125, 100 у.е. Заношу эти данные в таблицу клиенты. Загвоздка в том, что при отчете у меня происходит полная неразбериха со списанием с чеков. Это ошибка в запросе, который я создал. Но ума не приложу как это исправить. Т.е. если с чека номиналом 200 списать 200, то в отчете получается ноль, как и положено, но если списать 50, а потом списать ещё 50, то в отчете вместо 100, получается 150. Вторая проблема в том как создать запрос чтоб можно было посмотреть сколько осталось на определенном чеке сумма... Помогите пожалуйста, разобраться. |
| Автор: Akina 9.7.2011, 22:04 |
| Читаем http://forum.vingrad.ru/forum/topic-260944.html |
| Автор: videolamer 11.7.2011, 10:14 |
| Akina, Извиняюсь, вроде исправил. |
| Автор: Akina 11.7.2011, 10:55 | ||||
| Для того, чтобы правильно посчитать остатки, необходимо построить ДВА запроса. Первый должен по таблице клиентов (кстати, у вас там опечатка в названии таблицы) посчитать сумму, списанную по каждому чеку:
Назовём его, скажем, Списание. Вот теперь можно получить и остатки по чекам:
Логично будет назвать его Остатки. Вот теперь на его основе можно строить итоговый отчёт. Можно, конечно, собрать эти два запроса в один - но в рамках одной БД это не имеет смысла. |
| Автор: videolamer 11.7.2011, 11:51 |
| Akina, Спасибо большое. Вроде поправил, но получается опять беспорядок. |
| Автор: videolamer 11.7.2011, 14:18 |
| Я извиняюсь всё поправил. Отчет по чекам получается как положено! Спасибо вам! |
| Автор: Akina 11.7.2011, 14:44 | ||
| Кстати. Эти запросы обладают одним недостатком - не будут выведены чеки, по которым не было списаний. Чтобы они были выведены, надо слегка изменить второй запрос:
|
| Автор: videolamer 11.7.2011, 15:58 |
| Да, Вы правы. Действительно чеки с которых не было списаний не отражаются в отчете. К сожалению я не смог сообразить как изменить отчет в соответствии с Вашим кодом, в отличие от первых двух. Не могли бы вы поправить мой файл? Заранее благодарю! |
| Автор: Akina 11.7.2011, 18:40 |
| Просто замените текст запроса. |
| Автор: videolamer 12.7.2011, 10:47 |
| Я немного изменил названия в запросах, добавил одно поле и исправил ошибки в названии таблиц. Меняю текст запроса на Ваш код в соответствии со своими названиями, но теперь при изменении кода вылетает ошибка синтаксиса в выражении NZ. Как плохо, когда нет рядом друга-гуру по аксесс. Трудно заниматься самообучением. |
| Автор: Akina 12.7.2011, 13:02 |
Ну уж не поленитесь почитать справку по синтаксису функции, а? |
| Автор: videolamer 12.7.2011, 14:29 | ||||
да я бы почитал, мне не лень, но Вы думаете я понимаю о чем идет речь в справке?
|
| Автор: Akina 12.7.2011, 20:53 |
на всякий случай скажу, что имеется в виду функция NZ() |