powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / суммирование колонок в grid
25 сообщений из 42, страница 1 из 2
суммирование колонок в grid
    #37889623
johngorn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День добрый всем, подскажите какие у кого есть идеи - у меня Grid, в котором я ввожу количество товара и в зависимости от столбца цены он заполняет столбец сумма через interactivechange, внизу grid под столбцом как показано в приложенном файле есть элемент tex6, в который хотелось бы получать общую сумму при вводе количества, но например команда calculate sum() постоянно переносит меня на последнюю строчку, как это избежать?
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37889679
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
johngorn,

Да, напомнил ты мне старые времена, когда я с куриной фабрикой работал!
Сразу в носу (или в мозгу?) появился этот незабываемый запах
А если серьезно - команда calculate sum() уносит тебя в конец таблицы, поэтому
запоминай номер записи при вводе инфы и после calculate sum() - go обратно на эту запись.
Единственно, что не очень - эта строка будет у тебя верхней в гриде.
Это навскидку, если не устроит, надо будет вспоминать, такую проблему я когда-то решил.
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37889686
johngorn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я думал над таким решением проблемы, но грид постоянно мерцает и есть вероятность того что бухгалтер собьется набирая количество, так что как то не очень, если вспомнишь другой вариант буду очень признателен...
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37889698
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
johngorn,

А почему нельзя сначала заполнить грид, а потом посчитать сумму? (я еще не вспоминал, просто как вариант)
Кстати, это цены за 1 кг? Если так, все бегом в Тирасполь
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37889704
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
johngorn,

Кажется вот так я делал:
в interactivechange , который считает сумму (пусть она будет nSum) добавь:
Код: plsql
1.
Thisform.Text6.Value=Thisform.Text6.Value+nSum


а calculate sum() выброси... Ну и при ините Thisform.Text6.Value=0.00
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37889734
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то, значение может не только вводится, но и редактироваться. В общем случае, надо запоминать значение при входе в ячейку, а при выходе делать примерно следующее

Код: sql
1.
Thisform.Text6.Value=Thisform.Text6.Value - "Значение при входе" + "Значение при выходе"



Ну, естественно, в момент открытия формы сначала рассчитать итог через Calculate

Только вот, InteractiveChange() для этого совсем не подходит. Дело в том, что этот метод срабатывает на любое изменение значения. Т.е. ты нажал одну цифру, а он уже сработал. А ты ввод еще не завершил

Используй методы Grid1.Column1.Text1.GotFocus() и Grid1.Column1.Text1.LostFocus(). Для хранения "старого значения" можно создать метод формы. Ну, или использовать свойство TAG. Хотя это свойство может принимать только символьные данные.

В целом, получится примерно такая схема

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
* Init - формы
Calculate sum() to Thisform.Text6.Value 

* Grid1.Column2.Text1.GotFocus() - столбец с количеством
* Запоминаем значение при входе
This.Tag = STR(This.Value,15,2)

* Grid1.Column2.Text1.LostFocus() - столбец с количеством
* При выходе корректируем итоговую сумму
Thisform.Text6.Value = Thisform.Text6.Value + MyTable.Price * (This.Value - VAL(This.Tag))

* Grid1.Column3.Text1.GotFocus() - столбец с ценой
* Запоминаем значение при входе
This.Tag = STR(This.Value,15,2)

* Grid1.Column3.Text1.LostFocus() - столбец с ценой
* При выходе корректируем итоговую сумму
Thisform.Text6.Value = Thisform.Text6.Value + MyTable.Qty * (This.Value - VAL(This.Tag))



Это, конечно, чуть больше кода , зато никаких проблем с "передергиванием" указателей записи. Да, здесь я предполагаю, что в Grid отображена таблица MyTable и ее поля Qty - количество и Price - цена
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37889882
johngorn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Jonny540, да тут не увязочка после каждого нажатия символа он будет суммировать , так что данный пример не подходит....
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37889886
johngorn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ, несовсем понял для чего нужно старое значение если у меня по умолчанию при загрузке формы количество равно нулю и в принципе событие init отпадает, ну а вообще спасибо за подсказку утром приду на работу проверю как работает, а то нет проэкта под рукой.
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37889887
johngorn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ, все допер, пропустил глобальный смысл двух первых строк, видимо просто в сон клонит, спасибо за подсказку.
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37889935
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ,

А почему именно gotfocus и lostfocus, а не when и valid, т.е. в каких случаях что именно надо(именно в гриде, именно при редактировании, так как вроде мышка не участвует в редатировании)... точно не помню, давно было, но почему то я отказался от gotfocus и lostfocus, в пользу when и valid, и какое событие выполняется в первую очередь gotfocus или when, а что в последнюю lostfocus или valid
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37889936
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
q1w1e1и какое событие выполняется в первую очередь gotfocus или when, а что в последнюю lostfocus или validвас забанили в хелпе?

when
gotfocus
...
valid
lostfocus
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37889940
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirвас забанили в хелпе?

Да нет, за*банили этим хелпом...
Да, забыл..:-)
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37890125
johngorn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ, сделал по вашему предложению, но что то косячат суммы, буквально после третьего ввода сумма получается уже не верная... хотя вроде должно работать((((
У кого еще есть мысли на эту тему?
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37890142
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
johngornВладимирМ, сделал по вашему предложению, но что то косячат суммы, буквально после третьего ввода сумма получается уже не верная... хотя вроде должно работать((((
У кого еще есть мысли на эту тему?
Все должно работать. Это самый оптимальный способ. Расчетов минимум.
Ищи где накосячил. Возможно из-за округлений съезжает.
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37890162
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
johngorn,

SELECT SUM(Сумма) AS total_sum FROM Имя таблицы INTO CURSOR Имя курсора
THISFORM.Text6.Value = Имя курсора.total_sum
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37890180
johngorn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T, да действительно после того как убрал произведение количества на цену из interactivechange и добавил вот эту строчку в lostfocus - thisform.grid1.column4.text1.Value=this.Value*tovar0.cena все заработало, спасибо за подсказку!
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37890206
makar12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorNG,

Можно так же суммировать в массив,на мой взгляд более изящно ...
SELECT SUM(Сумма) AS total_sum FROM Имя таблицы INTO Array aSum
THISFORM.Text6.Value = aSum
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37890217
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
johngornDima T, да действительно после того как убрал произведение количества на цену из interactivechange и добавил вот эту строчку в lostfocus ...
interactivechange() срабатывает при каждом нажатии кнопки, lostfocus() - один раз по уходу с контрола.
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37890287
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tnteractivechange() срабатывает при каждом нажатии кнопки, lostfocus() - один раз по уходу с контрола.При желании "можно и зайца научить курить" (с)
Да, конечно, nteractivechange() не лучший вариант, но ведь можно выловить код кнопки по lastkey()...
Я не настаиваю, просто хотелось как-то показать, что и здесь можно выкрутиться.
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37890413
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jonny540При желании "можно и зайца научить курить" (с)
Да, конечно, nteractivechange() не лучший вариант, но ведь можно выловить код кнопки по lastkey()...
Я не настаиваю, просто хотелось как-то показать, что и здесь можно выкрутиться.
Месье знает толк в извращениях

Тогда уж текущую сумму строки в This.Tag сохранять в конце interactivechange()
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37890586
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TМесье знает толк в извращениях А лучше все делать в KeyPress() (это уж точно порнуха)
Когда все по правилам, скучно становится, верно ведь?
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37890606
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jonny540Dima TМесье знает толк в извращениях А лучше все делать в KeyPress() (это уж точно порнуха)
Когда все по правилам, скучно становится, верно ведь?

И что в KeyPress ловить будешь?
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37890633
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorNGИ что в KeyPress ловить будешь?Тоже коды клавиш. Только там все как-то иначе, чем в i-c :)
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37890650
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jonny540IgorNGИ что в KeyPress ловить будешь?Тоже коды клавиш. Только там все как-то иначе, чем в i-c :)

То, что клавиш - понятно. Что же еще можно ловить в KeyPress?
Вопрос, какие клавиши ты там будешь ловить?
...
Рейтинг: 0 / 0
суммирование колонок в grid
    #37890661
Banditos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
johngorn,

В таблице у поля есть метод "VALID".
Туда загоняешь:
Код: sql
1.
2.
3.
4.
5.
6.
7.
* пробуй сначала без локов, если чего - раскаменть потом. 
* THISFORM.LockScreen = .T.

THISFORM."твой метод(процедуру) подсчета чего хошь"
THISFORM."твой Grid".REFRESH 

* THISFORM.LockScreen = .F.



В самой своей процедуре пишешь что-то типа:
Код: sql
1.
SELECT SUM(summa) FROM "твоя таблица" INTO CURSOR (ARRAY или еще куда, но не в таблицу!) MyCursor


Затем достаешь из полученного курсора(массива) результат, отображаешь его на своей форме, ЗАКРЫВАЕШЬ курсор.
Все.
Курсор никуда не бегает, результат всегда считается ПОСЛЕ ввода значения.
...
Рейтинг: 0 / 0
25 сообщений из 42, страница 1 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / суммирование колонок в grid
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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