На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! информация о разделе
user posted imageДанный раздел предназначается исключительно для обсуждения вопросов использования языка запросов SQL. Обсуждение общих вопросов, связанных с тематикой баз данных - обсуждаем в разделе "Базы данных: общие вопросы". Убедительная просьба - соблюдать "Правила форума" и не пренебрегать "Правильным оформлением своих тем". Прежде, чем создавать тему, имеет смысл заглянуть в раздел "Базы данных: FAQ", возможно там уже есть ответ.

Модераторы: Akina
  
> Бухгалтерская задачка , Нужен совет
    Всем доброго времени суток! Жене в университете задали задачку:

    "Система предназначена для обработки данных о клиентах, объемах кредитования, платежах по кредитному договору. Система должна выдавать отчеты по запросу: список всех клиентов, список физических лиц, список юридических лиц, реестр остатков на счетах, реестр изменения остатков конкретного контрагента за определенный период, информацию о клиентах."

    Если грубо упростить - имеем две таблицы: Клиенты[ID, ФИО/Наименование, Сумма на счету] и Операции[Дата операции, Клиент, Тип операции, Сумма]. Проблема у меня появилась вот в чем: нужно чтобы при добавлении строки в таблицу Операции редактировалось поле Сумма на счету в таблице Клиенты. То есть, добавляется строчка в Операции [26.12.15, Иванов Иван Иванович, Кредитование, 5000], и в таблице Клиенты в строке, где ФИО="Иванов Иван Иванович", поле Сумма на счету должна измениться должно быть увеличено на 5000 (или уменьшено, если Тип операции - "Платеж по кредитному договору", а не "Кредитование"). Я попытался сделать это через SQL-запрос - команды то элементарные, но немного не понимаю логику Акцесса - как сделать выполнение запроса на событие "Добавление новой строки"? Строки создаются в автоматически скинфигурированной формы, добавление происходит по нажатию Enter. Если создать кнопку - то на нее можно повесить только один запрос, а запрос состоит из одной команды (то есть, получится - кнопка либо добавит строку в Операции, либо изменит строку в Клиенты). Сделать две кнопки -некрасиво, нелогично, и с точки зрения администратора бд - небезопасно. Макрос на бейсике нельзя использовать, решение должно быть простым и элементарным. Подскажите, как реализовать это дело, буду очень благодарен.
      Цитата DemonOfFuture @
      нужно чтобы при добавлении строки в таблицу Операции редактировалось поле Сумма на счету в таблице Клиенты

      Не нужно. Более того - этого поля в таблице клиентов вообще не должно быть, а остаток на счёте рассчитывается запросом на основании сведений из таблицы операций. Выбросьте его.

      Цитата DemonOfFuture @
      не понимаю логику Акцесса - как сделать выполнение запроса на событие "Добавление новой строки"?

      Аксесс тут вообще не при чём. Логика тоже. Подобные операции (изменение одних данных при изменении других) на любых серверах баз данных выполняют триггеры. Но вот незадача - Access как раз не совсем сервер (точнее, совсем даже не сервер) БД, так что триггеров у него тупо нет (на последней версии Офиса они вроде появились, но насколько функциональны - не знаю, не пробовал).
        Цитата Akina @

        Понял, жаль что сам не додумался так организовать БД. Спасибо большое.
          Цитата DemonOfFuture @
          Проблема у меня появилась вот в чем: нужно чтобы при добавлении строки в таблицу Операции редактировалось поле Сумма на счету в таблице Клиенты.

          вариантов ровно 2.
          1. это поле вычислимое. собирается по таблице операций.
          2. обработка в тригерах, но она требует большой обслуживающей обвязки. В акцесе (да и в любой другой системе) в 146% случаев появляются "сбои в расчете" при ручном вмешательстве в данные. Как показывает практика ни тригера ни прочие ухищрения не спасают от шаловливых рук DBA в сочетании с идиотскими хотелками пользователя

          Ну и стандартные вопросы к такому "проекту"
          - По поводу операций вопрос как храните? Половинками или все в строчку?
          - Есть ли в операции поля "остаток до, остаток после"?
          - Если есть - как они обрабатываются в операции Т при изменении/удалении операции Т-х (коррект в прошлой дате)?
          - Предусмотрена ли операция "закрытие периода"? Если нет - почему?
          - Предусмотрена ли вся необходимая классификация договоров в целях формирования отчетности перед регулятором?
          - Как учитываются обеспечения по кредиту?
          - Как описан процесс "закрытия дня"?
          - Как описан приоритет погашения по кредитам?
          - Какой алгоритм погашения в прошлую дату?
          плюс еще список примерно из 150 вопросов по процессу обслуживания кредитов.
          Вам точно акцесса хватит на всю эту "балалайку"?
          Сообщение отредактировано: Павел Калугин -
          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,2070 ]   [ 15 queries used ]   [ Generated: 23.04.24, 06:24 GMT ]