powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Форма с подчиненной: принцип "погашения долгов"
8 сообщений из 8, страница 1 из 1
Форма с подчиненной: принцип "погашения долгов"
    #32643540
Ukraina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Елки-палочки! Простая проблема, а решить как надо не могу
Есть главная форма, в ней есть поле « Общий долг » (числовой) и поле « Погашение » (логический). Имеется в этой форме и подчиненная форма « Погашение долга » с полями « Дата » и « Сумма ».
Задача: как только сумма значений поля « Сумма » в подчиненной форме станет равной значению поля «Общий долг» в основной форме, то значение « Погашение » должно стать « истина ».

Чё только не делал. На поле « Сумма » (свойство « после обновления ») поставил проверку, но эта проверка срабатывает, когда я делаю новую запись в подчиненной (достаточно ввести «0»), но согласитесь, что это неудобно, а нужно, чтобы отметка «Погашение» срабатывала сразу как только вносишь последний долг, а не вводишь еще раз пусть даже нулевое. Проверка срабатывает по сумме предыдущих значений и не берет в расчет последнее внесенное значение
...
Рейтинг: 0 / 0
Форма с подчиненной: принцип "погашения долгов"
    #32643547
Ukraina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Люди! Ну неужели так сложно, а?
...
Рейтинг: 0 / 0
Форма с подчиненной: принцип "погашения долгов"
    #32643553
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
1. Проверка срабатывает по сумме предыдущих значений и не берет в расчет последнее внесенное значение -> Наверно, ты не сохраняешь запись, поэтому она не учитывается.

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

2. Надеюсь, что поле "Погашение" - не физическое поле в таблице, а вычисляемое поле в запросе. Так ли? Если не так, то нехорошо с точки зрения нормализации базы. (Впрочем, я не знаю, как принято в бухгалтерских программах.)

1. Много раз слышал, что нужно как то сохранять запись, но ни разу не применял это (не было ситуации, да и как-то не возникал такой вопрос). Но как программно сохранить запись сразу после внесения значения в поле?

2. Поле "Погашение" действительно "физическое". Полностью согласен насчет оптимизации, но дело в том, что это значение я в дальнейшем многократно использую и учитывая принцип "линии наименьшего сопротивления" просто один раз вогнал это значение и забыл...

Но больше меня интересует всетаки 1 пункт: как это программно сохранить запись (никогда не сталкивался и поэтому даже понятия не имею). А как насчет ответа? А..?
...
Рейтинг: 0 / 0
Форма с подчиненной: принцип "погашения долгов"
    #32643567
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Варианты:

Me.Dirty = False
DoCmd.RunCommand acCmdSaveRecord
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
...
Рейтинг: 0 / 0
Форма с подчиненной: принцип "погашения долгов"
    #32643614
Ukraina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саныч!
Вставлял (цитата из анекдота: «Я покажу этому ИА, как она входит и выходит…») предложенные варианты во все, что можно (цитата дня: Мы сначала пьют все что хотим, потом, что можно, и в завершении что осталось), но результат прежний. При проверке MSGBOXом (вношу новую сумму погашения) выходит предыдущее значение суммы (без учета нового значения). Привожу код (из подчиненной формы):

Private Sub Сумма_AfterUpdate()
MsgBox DLookup("[Цена]*[Кол-во]", "Кредит", "[Код]=form![Примечания]") - Nz([ИТКасса], 0)
MsgBox Nz([ИТКасса], 0)
If DLookup("[Цена]*[Кол-во]", "Кредит", "[Код]=form![Примечания]") - Nz([ИТКасса], 0) <= 0 Then
CurrentDb.Execute "Update [Кредит] set [Уплачено]=true where [Код]=" & [Примечания]
End If
If DLookup("[Цена]*[Кол-во]", "Кредит", "[Код]=form![Примечания]") - Nz([ИТКасса], 0) > 0 Then
CurrentDb.Execute "Update [Кредит] set [Уплачено]=false where [Код]=" & [Примечания]
End If
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
SendKeys "{f9}", False
End Sub

Где DLookup("[Цена]*[Кол-во]", "Кредит", "[Код]=form![Примечания]") – сумма долга из главной формы
Nz([ИТКасса], 0) – сумма всех погашений в подчиненной (взято из поля в примечании формы [ИТКасса]=Sum([Сумма])

Сейчас выкрутился через запрос, т.е. вместо Nz([ИТКасса], 0) вставил Nz(DLookup("[1]", "0"), 0) из запроса, где идет суммирование. Но что оптимальней: то что не получилось или это!?
...
Рейтинг: 0 / 0
Форма с подчиненной: принцип "погашения долгов"
    #32643615
Ukraina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос в догонку. У меня получилась проверка при добавлении записи. Но вот теперь мне нужно удалить некую запись (ошибочный ввод). Я удаляю, этим самым меняю значение суммы возврата долга и отметка об уплате должна естественно исчезнуть. Где осуществить эту проверку? Пробывал поставить на свойство формы "Удаление" но результатов ноль...
...
Рейтинг: 0 / 0
Форма с подчиненной: принцип "погашения долгов"
    #32644064
lsnk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну могу предложить еще один вариант, правдо скорей всеого он будут медленней:
На событие "после вставки" в подчиненной форме с помощью рекордсета высчитывать сумму. Ну тоже самое можно делать и на после обновления и после удаления...
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Форма с подчиненной: принцип "погашения долгов"
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]