Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Проверить сумму полей на ленточной форме до апдейта / 22 сообщений из 22, страница 1 из 1
01.03.2017, 15:21
    #39412518
Heisenberg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить сумму полей на ленточной форме до апдейта
Здравствуйте,
я в аксессе не очень от слова не очень, прошу не пинать, если путаюсь в терминологии.
В общем существует небольшое приложение - т.е. ленточная форма для обработки/добавления для ручного ввода разных тех.данных
Код товара - название -...- квота.
Квоту пользователь вбивает вручную, задача среди прочего состоит в том, чтобы проверить сумму квот для позиций. Если юзер введет квоту, которая доведет сумму квот по этой позиции до > 100, надо выдать сообщение об ошибке и откатить изменения.

Я наивно думал создать на форме скрытое поле с содержанием Сумма("квота"), и создавать ошибку, когда сумма превысит 100, но оно конечно так не работает.
можно это как-то по дзену решить? буду благодарен за ссылки
...
Рейтинг: 0 / 0
01.03.2017, 15:29
    #39412526
гурД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить сумму полей на ленточной форме до апдейта
Heisenberg,

проверять на событии BeforeUpdate, если не устраивает - отменять: Cansel = true
...
Рейтинг: 0 / 0
01.03.2017, 16:12
    #39412582
а так?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить сумму полей на ленточной форме до апдейта
в конструкторе таблицы:
...
Рейтинг: 0 / 0
01.03.2017, 16:26
    #39412604
Heisenberg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить сумму полей на ленточной форме до апдейта
Heisenberg,
гурД
проверять на событии BeforeUpdate, если не устраивает - отменять: Cansel = true
не работает к сожалению

авторв конструкторе таблицы:
у меня нет аксессовской таблицы, увы, это доступ к оракловской инстанции через passthrough ODBC

я пробовал прицепить на скрытое поле суммы ValidationRule, все равно вызывается только после апдейта
...
Рейтинг: 0 / 0
01.03.2017, 16:44
    #39412632
Проверить сумму полей на ленточной форме до апдейта
HeisenbergЕсли юзер введет квоту, которая доведет сумму квот по этой позиции до > 100, надо выдать сообщение об ошибке и откатить изменения.
Дополню совет гурД . Проверить можно так:
Код: vbnet
1.
TotalLimit = NZ(DSum("[квота]", "[Таблица-источник формы]", Условие),0) - NZ(Me![квота].OldValue,0) + NZ(Me![квота],0)


HeisenbergЕсли юзер введет квоту, которая доведет сумму квот по этой позиции до > 100, надо выдать сообщение об ошибке и откатить изменения. Если объясните про "сумму квот" - поможем с Условие -м.
...
Рейтинг: 0 / 0
01.03.2017, 17:04
    #39412652
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить сумму полей на ленточной форме до апдейта
HeisenbergHeisenberg,
гурДпроверять на событии BeforeUpdate, если не устраивает - отменять: Cansel = true
не работает к сожалению
Код: vbnet
1.
2.
3.
4.
5.
6.
Private Sub квота_BeforeUpdate(Cancel As Integer)
 If <условие> Then
  квота.Undo
  Cancel = True
 End If
End Sub
...
Рейтинг: 0 / 0
01.03.2017, 17:08
    #39412655
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить сумму полей на ленточной форме до апдейта
дополню Гурд: Вам толкуют о событии "до обновления" поля, а не записи (записи в таблице еще нет)
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Private Sub ctl_BeforeUpdate(Cancel As Integer)
Dim mysum
mysum = DSum("ctl", "tbl")
If mysum + Me.ctl > 100 Then
MsgBox "число должно быть <=" & 100 - mysum
Me.Undo
Cancel = True
End If
End Sub
...
Рейтинг: 0 / 0
01.03.2017, 17:24
    #39412669
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить сумму полей на ленточной форме до апдейта
sdku... (записи в таблице еще нет)...Кто сказал?
Совсем вроде не обязательно.Heisenbergленточная форма для обработки/добавления для ручного ввода
...
Рейтинг: 0 / 0
01.03.2017, 17:51
    #39412690
Heisenberg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить сумму полей на ленточной форме до апдейта
Анатолий ( Киев )Если объясните про "сумму квот" - поможем с Условие -м.

в общем есть оракловая таблица, к ней в аксессе прилеплена такая ленточная форма

"зоопарк номер 6 - список животных"

н зверь квота

1 - Слон - 25
2 - Бегемот - 25
3 - Крокодил - 40

тут юзер такой вводит

"4 - Жираф - 30"

и тянется к кнопке "сохранить животных".
самое позднее при нажатии кнопки требуется выдать сообщение об ошибке "общая квота в зоопарке сейчас превысит 100 (в сумме будет 120), попробуйте еще раз" и стереть запись про жирафа
...
Рейтинг: 0 / 0
01.03.2017, 18:07
    #39412715
Heisenberg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить сумму полей на ленточной форме до апдейта
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Private Sub Item_Quote_BeforeUpdate(Cancel As Integer)
   Dim mySum As Integer
   mySum = DSum("Item_Quote", "tbl1")
   
   Debug.Print "mySum = " & mySum
   Debug.Print "Item_Quote_BeforeUpdate = " & Item_Quote.Value
   
   If mySum + Item_Quote.Value > 100 Then
      MsgBox "Item_Quote.Value > 100!"
      Cancel = True
      Me.Undo
   Else
       Debug.Print "ok"
   End If
   
End Sub


вот так на тестовой табличке работает, спасибо

теперь только понять, как мне из оракловой таблицы вытащить DSum для зоопарка номер 6?
...
Рейтинг: 0 / 0
01.03.2017, 18:13
    #39412722
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить сумму полей на ленточной форме до апдейта
__Michellesdku... (записи в таблице еще нет)...Кто сказал?Не знаю кто сказал. Так она ж еще не сохранена-как она запишется в таблицу?
...
Рейтинг: 0 / 0
01.03.2017, 18:17
    #39412728
Heisenberg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить сумму полей на ленточной форме до апдейта
а, все, понял, всем спасибо :)
...
Рейтинг: 0 / 0
01.03.2017, 18:30
    #39412737
Heisenberg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить сумму полей на ленточной форме до апдейта
Не, не совсем разобрался.
как сообщить функции , что я ищу сумму квот именно для этого зоопарка?
я попробовал
Код: vbnet
1.
DSum("Item_Quote", "OracleTableAnimals", [ZOO_ID] = Me.Parent!ZOO_ID)



вижу правильное значение Me.Parent!ZOO_ID в дебаге, но DSum выдает сумму квот по всем зоопаркам
...
Рейтинг: 0 / 0
01.03.2017, 18:43
    #39412749
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить сумму полей на ленточной форме до апдейта
sdku__Michelleпропущено...
Кто сказал?Не знаю кто сказал. Так она ж еще не сохранена-как она запишется в таблицу?Могут редактировать значение квоты в уже существующей записи.
...
Рейтинг: 0 / 0
01.03.2017, 20:06
    #39412800
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить сумму полей на ленточной форме до апдейта
__Michelle,
Редактировать сохраненные записи-за нахрена такая БД?
...
Рейтинг: 0 / 0
01.03.2017, 20:13
    #39412803
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить сумму полей на ленточной форме до апдейта
sdku,

Да мало ли... А что такого?

Что написано пером, то не вырубишь топором?)))
...
Рейтинг: 0 / 0
01.03.2017, 20:13
    #39412804
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить сумму полей на ленточной форме до апдейта
HeisenbergНе, не совсем разобрался.
как сообщить функции , что я ищу сумму квот именно для этого зоопарка?
я попробовал
Код: vbnet
1.
DSum("Item_Quote", "OracleTableAnimals", [ZOO_ID] = Me.Parent!ZOO_ID)



вижу правильное значение Me.Parent!ZOO_ID в дебаге, но DSum выдает сумму квот по всем зоопаркам
-третий аргумент функции Dsum-стинг и синтаксис должен быть таким: ..,"ZOO_ID=" & me.ZOO-ID). В HELPе все написано
...
Рейтинг: 0 / 0
01.03.2017, 20:54
    #39412823
Heisenberg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить сумму полей на ленточной форме до апдейта
sdku__Michelle,
Редактировать сохраненные записи-за нахрена такая БД?
Записи постоянно и произвольно редактируются, главное чтобы сумма не превышала 100
...
Рейтинг: 0 / 0
01.03.2017, 20:57
    #39412824
Heisenberg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить сумму полей на ленточной форме до апдейта
sdku-третий аргумент функции Dsum-стинг и синтаксис должен быть таким: ..,"ZOO_ID=" & me.ZOO-ID). В HELPе все написано
Спасибо, завтра попробую.
Пока временное решение нашел - скрытое поле с DSum (item_quote), с ним сравниваю, пока работает )
...
Рейтинг: 0 / 0
01.03.2017, 21:28
    #39412835
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить сумму полей на ленточной форме до апдейта
HeisenbergЗаписи постоянно и произвольно редактируются, главное чтобы сумма не превышала 100Если Вас не интересует что было с жирафами до последнего редактирования-флаг Вам в руки (редактируя существующие записи Вы лишаетесь истории)
...
Рейтинг: 0 / 0
01.03.2017, 23:40
    #39412878
Heisenberg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить сумму полей на ленточной форме до апдейта
sdkuHeisenbergЗаписи постоянно и произвольно редактируются, главное чтобы сумма не превышала 100Если Вас не интересует что было с жирафами до последнего редактирования-флаг Вам в руки (редактируя существующие записи Вы лишаетесь истории)
У нас имеется оракловский триггер на табличке, который записывает все апдейты и дилиты в историческую таблицу, в общем там вся бизнес-логика в оракле, эта форма - костыль для 2,5 маркетологов, которые знают вес жирафа )
...
Рейтинг: 0 / 0
02.03.2017, 19:33
    #39413343
гурД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить сумму полей на ленточной форме до апдейта
Heisenbergsdkuпропущено...
Если Вас не интересует что было с жирафами до последнего редактирования-флаг Вам в руки (редактируя существующие записи Вы лишаетесь истории)
У нас имеется оракловский триггер на табличке, который записывает все апдейты и дилиты в историческую таблицу, в общем там вся бизнес-логика в оракле, эта форма - костыль для 2,5 маркетологов, которые знают вес жирафа )
Так и напишите: там всего неск строчек будет. И логгируйте, где хотите и как хотите, хоть по емэйл..

Забыл вчера сказать. Если критично именно мнение не одного жирафа, и не все только его и ждут, а имеется некий конвенциальный, накопительный и т.п. порядок внесения в базу этих пропорций - см в сторону транзакций (есть в объектной модели Аксесса, есть в ADO...)
Смысл в том, что запросы\комманды, обёрнутые в транзакцию, либо исполняются все пакетно, либо идёт откат всех, если таким программным образом "не удалось договориться"...
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Проверить сумму полей на ленточной форме до апдейта / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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