|
|
|
Сумма по столбцу в лент. форме
|
|||
|---|---|---|---|
|
#18+
Дамы и господа, прошу помощи. Есть ленточная форма на основе запроса. В примечание есть поле, которое суммирует значение опр. столбца SUM([имя столбца]) Все хорошо, пока пользователь в форме не исправит цифру в столбце. Сумма пересчитывается только если перейдти на др. запись. Необходимо пересчитываться сразу. Пробывал множество вариантов. Есть пример с 3-мя полями. когда, при изменении значений 1 или 2-го пересчитывается сумма 3-го. но применить к "ленте" не получается. Есть ли какие-то варианты. Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2003, 14:08 |
|
||
|
Сумма по столбцу в лент. форме
|
|||
|---|---|---|---|
|
#18+
Сохрани запись при выходе (из поля), мне кажется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2003, 14:16 |
|
||
|
Сумма по столбцу в лент. форме
|
|||
|---|---|---|---|
|
#18+
Дело в том, что выходить из поля не обязательно. Ввел число, а сумма пересчитывается. А каким образом сохранить запись в поле. Если это повесить на событие "изменение", то может и сработает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2003, 14:35 |
|
||
|
Сумма по столбцу в лент. форме
|
|||
|---|---|---|---|
|
#18+
Выходить из поля в самом деле не обязательно. Однако, если не сохранять запись, то как узнать, что изменение числа закончено ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2003, 14:53 |
|
||
|
Сумма по столбцу в лент. форме
|
|||
|---|---|---|---|
|
#18+
Не обязательно узнавать, что число закончено. Предположим, на посчитать 23+34 23 уже есть, а вместо 34 стоит 45. В поле с 45 вводим 3 сумма считается как 23+3 , затем вводим 4, сумма считается как 23+34. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2003, 14:59 |
|
||
|
Сумма по столбцу в лент. форме
|
|||
|---|---|---|---|
|
#18+
И если в форме 10000 записей, то число ты будешь о-о-очень медленно вводить. А ведь еще можно и ошибиться при вводе, на каждом backspace'е тоже пересчитывать... И вместо цифры можно слово "х.й" нечаяно написать, пока из поля не уйдешь - проверки типа не будет, как это суммировать будем? На болтайте ерудндой (с) фаменка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2003, 15:09 |
|
||
|
Сумма по столбцу в лент. форме
|
|||
|---|---|---|---|
|
#18+
Данная задача узко специализированна. На форме много записей не будет. Порядок чисел не более 2 знаков. Учитываются дробные числа. А на будующее, если не можешь нормальными словами что-то сказать лучше клавиши в пустую не жать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2003, 15:15 |
|
||
|
Сумма по столбцу в лент. форме
|
|||
|---|---|---|---|
|
#18+
Ну если уж совсем узкоспециализировано, то ловишь событие Change у контрола и вручную пересчитываешь сумму. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2003, 15:28 |
|
||
|
Сумма по столбцу в лент. форме
|
|||
|---|---|---|---|
|
#18+
Вот здесь и кроется подвох. В свойстве данные для поля, в котором отобр. сумма я писал SUM(...). Когда попробывал перехвотить "изменение" и в VBA написал тоже самое, VBA выругался, что такой команды не существует. Ему надо ...+...+..., тогда работает, а так не полусится. Что делать? Как по изменению поля в другое записать сумму одноименных лентосных полей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2003, 15:36 |
|
||
|
Сумма по столбцу в лент. форме
|
|||
|---|---|---|---|
|
#18+
Отвлечённые размышления: Создать Recordset на основе RecordsetClone и сложиить в цикле всё это геморойно но думаю работать будет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2003, 15:45 |
|
||
|
Сумма по столбцу в лент. форме
|
|||
|---|---|---|---|
|
#18+
Делай несвязанный (свободный) контрол и в него записывай подсчитанное вручную значение (по записям пробежать, просуммировать все кроме изменяемого, добавить текущее значение в изменяемом поле). Иначе никак. Пока с поля не уйдешь - изменения аксес не воспримет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2003, 15:48 |
|
||
|
Сумма по столбцу в лент. форме
|
|||
|---|---|---|---|
|
#18+
По событию Изменение все-таки придется сохранять то, что уже введено. А потом ставить курсор туда, где был до сохранения записи. См. недавнюю дискуссию: Как сохранить фокус в поле ввода (за точность вопроса не ручаюсь). Удачи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2003, 16:08 |
|
||
|
Сумма по столбцу в лент. форме
|
|||
|---|---|---|---|
|
#18+
Не придется сохранять. Контрол с суммой выносишь в примечание формы и в него пишешь что угодно. Значение текущего (редактируемого) контрола - Me![ControlName].Text Все должно работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2003, 16:22 |
|
||
|
Сумма по столбцу в лент. форме
|
|||
|---|---|---|---|
|
#18+
Кстати. Возможно будет достаточно знать сумму всех чисел, КРОМЕ текущего (редактируемого). Если Да, то для Поля в примечании формы =DSum("[СуммЧисла]";"Таблица";"[Ключ]<>" & CStr([ПолеКлюч])) Проверил, работает. (Л-п: а вот с .Text почему-то не работает) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2003, 16:45 |
|
||
|
Сумма по столбцу в лент. форме
|
|||
|---|---|---|---|
|
#18+
У меня вот так работает Private Sub num_Change() Me![txtSum] = Nz(DSum("num", "TableName"), 0) + Val(Me![num].text)- Me![num].value End Sub Только один хрен работает плохо - отмену (ESC) не обрабатывает. Тоже решаемо, но как то оно все противно.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2003, 17:02 |
|
||
|
Сумма по столбцу в лент. форме
|
|||
|---|---|---|---|
|
#18+
Нормально. Единственное, когда дробное вводишь через запятую 12,3 не считает, когда через точку 12.3 считает но пр выходе из поля ругается на формат. Это поле привязано к колонке запроса с типом "Число". Какой выход? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2003, 17:21 |
|
||
|
Сумма по столбцу в лент. форме
|
|||
|---|---|---|---|
|
#18+
RTFM однако Примечание. Функция Val распознает в качестве разделителя целой и дробной части только точку (.). Если существует возможность использовать другие разделители целой и дробной частей (например в национальных версиях приложений), следует применять для преобразования строки в число функцию CDbl. Так работает и с точкой, и с запятой. Но обламывается на буквах ("Несоответствие типа") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2003, 17:27 |
|
||
|
Сумма по столбцу в лент. форме
|
|||
|---|---|---|---|
|
#18+
C CDbl лучше но обламывается на пустом значени. Можно обойти? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2003, 18:00 |
|
||
|
Сумма по столбцу в лент. форме
|
|||
|---|---|---|---|
|
#18+
=Cdbl(Nz([поле])) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2003, 10:33 |
|
||
|
Сумма по столбцу в лент. форме
|
|||
|---|---|---|---|
|
#18+
для того чтобы произошло вычисление необходимо выйти из записи на последующую или предыдущую (пока записсь редактируется никаких расчетов (сумма по столбцу) быть неможет) индикатор редактируемости записи - карандашик в поле "область выделения" . но можно не выходить а просто нажать Shift + Enter - произойдет фиксация записи и сумма должна просчитаться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2003, 20:31 |
|
||
|
|

start [/forum/topic.php?fid=45&tid=1681912]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
60ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
| others: | 218ms |
| total: | 382ms |

| 0 / 0 |
