|
|
|
| Аксесс 2000.
Подскажите плз верным ли путем иду.
У меня есть таблицы: "Отгрузка" (поля: [Номер накладной],[Дата],[Клиент]); "Отгрузка подробности" (поля: [Номер накладной],[КодПродукции],[Количество],[Цена]) и таблица "Оплата" (поля: [Дата оплаты],[Клиент],[Сумма])
Хочу сделать форму, где отображался бы долг по каждому клиенту и можно было бы ввести сумму оплаты на каую-то дату (долг при этом в идеале должен обновиться). После долгого мозгового штурма решил идти таким путем:
1)Создавать запросом на добавление новую таблицу "Долги"([Клиент],[Сумма]). (повесить создание на событие открытия формы).
2)Прилинковать её в SQL инструкции формы к таблице "Оплата", связав по полю [Клиент].
3)Обновлять выполнением запроса на обновление по событию "выход" из поля [Сумма] таблицы "Оплата"
4)Удалять таблицу по закрытию формы.
Верный ли это путь?
У меня получается, что в получившуюся форму никаких данных не ввести. Почему?
Верен ли этот путь в принципе, или для решения поставленной задачи надо двигаться куда-то не туда, а на этом пути поставить крестик?
Всем кто с чем-то подобным сталкиваля и откликнется - заранее куча благодарностей. | |
|
| |
|
|
|
| На мой взгляд путь с созданием таблицы не совсем верный.
Лучше считать сумму оплаты "на лету", или если объемы большие создать "регистр" с суммами оплат по каждому клиенту.
киньте кусок базы с таблицами и немного данных в них. Лень руками набивать | |
|
| |
|
40 Кб. |
|
| Osmor, спасибо за отклик!
Из базы вырезал кусок с пробой реализации моей идеи, но, как и писал - она не работает почему-то.
Не очень понятно из Вашего сообщения, что значит "Сумму оплаты считать "на лету"". (чего её считать - она просто цифрой так и вводится). М.б. имелось ввиду, что "на лету" пересчитывать сумму долга.
Если это не очень затруднит - поясните то, что будете делать (лучше ссылку на то, где об этом можно что-то прочитать). Готовое решение - это, конечно неплохо, но хочется не "поиметь" что-то, а научиться.
С уважением. | |
|
| |
|
|
|
| что-то я никак е пойму логику ваших таблиц.
Долг это что?
это сумма стоимости товара по клиенту из ОтгрузкаПодробности (через Отгрузка) минус сумма оплат по клиенту?
Объясните подробнее что, где, как. | |
|
| |
|
|
|
| Доброго времени суток!
По-моему свё правильно. Долг= Сумма стоимости товара по клиенту (цена*количество) из "отгрузка подробности" (через "отгрузку") минус "Сумма оплат" по клиенту.
А что-то не так? Вроде всё правильно считаю?
Взял на сумму = получился долг.
Отдал деньги = минус из долга.
У меня в запросе на выборку "Долги" так и есть:
Долг: Round(Sum([Количество]*[Цена])-Sum([СуммаОплачено]))
|
только ещё округляю - а то там сотые копеечек очень подлые иначе вылезают.
По-моему всё правильно. | |
|
| |
|
33 Кб. |
|
| просто ваша таблица "долги", совершенно не соответствует вашему запросу "Долги"
По порядку.
1. Ваш запрос будет считать неверно если у кого-то из клиентов есть оплаты, но нет отгрузок или наоборот
2. Для того что бы данные по долгу обновились запись о оплатах нужно сохранить, т.е ваши запросы посчитают неверную сумму до тех пор пока вы не сохранили запись которую редактируете. (делать это недо не на событие изменение поля "СуммаОплачено", а на "после обновления", а лучше сделать отдельную кнопку "Сохранить" и уже тогда считать долг
МОжно конечно реализовать рассчет и без сохранения записи, но если при добавлении записи это довольно просто, (просто добавить/вычесть из суммы в запрос значение из поля), то при изменении придется придумывать довольно сложный механизм, т.к. изменяемое значение уже посчитано в сумму догла....
3. Я бы сделал общую таблицу для учета денежного прихода и расхода, тогда кол-во запросов для рассчета долга сократилось бы до одного.
В общем сделал в рамках тех таблиц которые были.
Сумма долга считается запросами и выводится в форму через Dlookup
На больших объемах будет притормаживать.
Если хотите через промежуточную таблицу, то для заполнения таблицы переделайте мой запрос qCredit в запрос на добавление.
Но на больших объемах промежуточная таблица тоже не спасет, да еще и даст всякие вариации ошибок при много пользовательской работе.
При больших объемах нужно "вводит" регистр в котором храниться сумма долга на какую-то временную точку, а уже от нее считать долг на нужную дату.
Почитайте мой ответ в этой ветке
http://hiprog.com/forum/read.php?id_forum=1&id_theme=3204&page=1 | |
|
| |
|
|
|
|
|
| Если не секрет, программирование -это у Вас хобби или работа такая?
все в одном флаконе
С превеликим удовольствием отблагодарил бы Вас ...
Ещё 500 раз оргомное спасибище!!!
Уже | |
|
| |