powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Кто как суммирует
8 сообщений из 8, страница 1 из 1
Кто как суммирует
    #36226646
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
оператор заносит кол-во товара по контрагентам прямо в таблице(временной), внизу сумма стоит, по этому полю, у меня в методе AfterRowColChange, стоит суммирование по этому полю и обновление внизу текстового поля "итого", но может как-то по другому реализовано у других, ведь сумирование в таблице(SUM), довольно долгая операция...
...
Рейтинг: 0 / 0
Кто как суммирует
    #36226694
reware
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
q1w1e1оператор заносит кол-во товара по контрагентам прямо в таблице(временной), внизу сумма стоит, по этому полю, у меня в методе AfterRowColChange, стоит суммирование по этому полю и обновление внизу текстового поля "итого", но может как-то по другому реализовано у других, ведь сумирование в таблице(SUM), довольно долгая операция...
Код: plaintext
1.
2.
SELECT SUM(zzz) as sum_all FROM dogovor INTO CURSOR ttt
THISFORM.Text1.Value=ttt.sum_all
USE IN ttt
...
Рейтинг: 0 / 0
Кто как суммирует
    #36226723
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, но опять же после каждого перехода вниз на следующую запись, надо выполнить или Select или Sum
...
Рейтинг: 0 / 0
Кто как суммирует
    #36226834
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
q1w1e1оператор заносит кол-во товара по контрагентам прямо в таблице(временной), внизу сумма стоит, по этому полю, у меня в методе AfterRowColChange, стоит суммирование по этому полю и обновление внизу текстового поля "итого", но может как-то по другому реализовано у других, ведь сумирование в таблице(SUM), довольно долгая операция...
Вообще, обычно я пересчет суммирования запускаю не при смене строки, а только при изменении контрола.
В InteractiveChange устанавливается, что пользователь вносил изменения в текстбокс. В Valid контрола запускается пересчет, если пользователь вносил изменения.
...
Рейтинг: 0 / 0
Кто как суммирует
    #36226942
reware
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
q1w1e1Да, но опять же после каждого перехода вниз на следующую запись, надо выполнить или Select или Sum

Я не понял - зачем пересчитывать сумму по всей колонке при AfterRowColChange ? Пересчет требуется, когда пользователь что-то правит в текстбоксе или удаляет запись. При простом движении по записям этого абсолютно не нужно.
Изменение значения в текстбоксе можно отслеживать по When/Valid (начальное/конечное значения), по GotFocus/LostFocus или InteractiveChange.
...
Рейтинг: 0 / 0
Кто как суммирует
    #36227180
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На больших таблицах SUM тормозить будет
обычно так делаю:
например есть поля nKol и nPrice и идет их правка в гриде
При открытии формы считаем сумму и записываем ее в текстбокс
Код: plaintext
1.
2.
sele MyTable
sum round(nKol * nPrice,  2 ) to thisform.txtSum.Value
Добавляем форме свойство nOldVal
В гриде в текстбоксе для количества запоминаем текущее значение в GotFocus()
Код: plaintext
thisform.nOldVal = this.value
в LostFocus() делаем перерасчет
Код: plaintext
ThisForm.txtSum.value = ThisForm.txtSum.value - round(thisform.nOldVal * MyTable.nPrice,  2 ) + round(this.value * MyTable.nPrice,  2 )
Аналогично с ценой

Перед сохранением еще раз SUM на всякий случай.
...
Рейтинг: 0 / 0
Кто как суммирует
    #36228649
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо
...
Рейтинг: 0 / 0
Кто как суммирует
    #36230132
LUCIAN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
q1w1e1,
Для суммирования по колонке Gridа создал визуалный класс itog в котором есть свойства:
it ---для накопления итога
pol ---,имя поля которое надо сумировать
alia --- имя таблицы,курсора
Обновление итога происходит с помощью метода Refresh

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
**************************************************
*-- Class:        itog (d:\mag\sklad.vcx)
*-- ParentClass:  textbox
*-- BaseClass:    textbox
*-- Time Stamp:   07/30/03 07:54:06 AM
*
DEFINE CLASS itog AS textbox


	ControlSource = "this.it"
	Height =  23 
	InputMask = "999,999,999,999.99"
	Width =  100 
	it =  0 
	pol = .F.
	alia = .F.


	PROCEDURE When
		RETURN .F.
	ENDPROC


	PROCEDURE Refresh
		NOB=SELECT()
		AL=THIS.ALIA
		SELECT (AL)
		NZAP=IIF(EOF(),RECNO()- 1 ,RECNO())
		WYR="SUM "+THIS.POL+" TO THIS.IT"
		&WYR
		IF NZAP> 0 
			GO NZAP
		ENDIF
		SELECT (NOB)
	ENDPROC


ENDDEFINE
*
*-- EndDefine: itog
**************************************************
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Кто как суммирует
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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